/*
Theme Name: SWP Florist
Theme URI: https://scintillawpthemes.com/product/swp-florist/
Author: scintillawpthemes
Author URI: https://scintillawpthemes.com/
Description: Custom product storefront theme for photo-upload big heads, banners, yard signs and standees. Built for WooCommerce product pages with live option pricing, custom upload flows and focused shop templates.
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 7.4
Version: 1.2
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: swp-florist
Domain Path: /languages
Tags: blog, e-commerce, portfolio, one-column, two-columns, three-columns, block-patterns, block-styles, custom-colors, custom-logo, custom-menu, editor-style, featured-images, full-site-editing, grid-layout, sticky-post, template-editing, threaded-comments, translation-ready, wide-blocks
*/

/* Colours, type, spacing and block defaults live in theme.json.
   This file carries only what theme.json cannot express: the fixed backdrop,
   glass panels, positioning, pseudo-elements, motion and WooCommerce styling. */

/* ==========================================================================
   1. TOKENS + BASE
   ========================================================================== */

:root {
	--swp-pad-x: var(--wp--preset--spacing--gutter, clamp(24px, calc((100vw - 1320px) / 2), 300px));
	--swp-line: rgba(48, 55, 53, 0.12);
	--swp-line-strong: rgba(192, 79, 61, 0.30);
	--swp-glass: rgba(255, 255, 255, 0.74);
	--swp-glass-line: rgba(255, 255, 255, 0.9);
	--swp-shadow-soft: 0 24px 60px -28px rgba(48, 55, 53, 0.20);
	--swp-shadow-tile: 0 14px 34px -18px rgba(48, 55, 53, 0.16);
	--swp-r-sm: 12px;
	--swp-r-md: 20px;
	--swp-r-lg: 32px;
	--fj-ui-font: var(--wp--preset--font-family--jost);
}

html {
	scroll-behavior: smooth;
	background-color: #F6F9F8;
}

body {
	overflow-x: hidden;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	background-color: #ffffff;
	background-attachment: fixed;
	background-repeat: no-repeat;
	background-size: cover;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	overflow-wrap: break-word;
	word-break: normal;
}

@media (max-width: 781px) {
	.has-h-1-font-size {
		font-size: 42px !important;
	}

	.has-h-2-font-size {
		font-size: 34px !important;
	}

	.has-h-3-font-size {
		font-size: 24px !important;
	}

	.has-display-font-size {
		font-size: 44px !important;
	}
}

img {
	max-width: 100%;
	height: auto;
}

:where(.wp-site-blocks) > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

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

.screen-reader-text {
	border: 0;
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}

.screen-reader-text:focus {
	background-color: #fff;
	border-radius: 999px;
	box-shadow: var(--swp-shadow-tile);
	clip-path: none;
	color: var(--wp--preset--color--orchid-deep);
	display: block;
	font-size: 0.9rem;
	height: auto;
	left: 20px;
	line-height: normal;
	padding: 14px 24px;
	text-decoration: none;
	top: 20px;
	width: auto;
	z-index: 100000;
}

/* ==========================================================================
   2. SHARED SECTION FURNITURE
   ========================================================================== */

/* Full-bleed frosted panel. */
.swp-panel,
.wp-block-group.is-style-glass-panel {
	background: var(--swp-glass);
	-webkit-backdrop-filter: blur(18px);
	backdrop-filter: blur(18px);
	border-top: 1px solid var(--swp-glass-line);
	border-bottom: 1px solid var(--swp-glass-line);
}

/* Eyebrow: small caps label with a rule before it. */
.swp-eyebrow,
p.is-style-eyebrow {
	align-items: center;
	color: var(--wp--preset--color--rose-deep);
	display: flex;
	font-family: var(--fj-ui-font);
	font-size: var(--wp--preset--font-size--eyebrow);
	font-weight: 600;
	gap: 9px;
	letter-spacing: 0;
	line-height: 1.35;
	margin: 0 0 16px;
	text-transform: uppercase;
}

.swp-eyebrow::before,
p.is-style-eyebrow::before {
	background: var(--wp--preset--color--orchid);
	content: "";
	flex: none;
	height: 2px;
	width: 22px;
}

.has-text-align-center .swp-eyebrow,
.swp-eyebrow.has-text-align-center,
p.is-style-eyebrow.has-text-align-center {
	justify-content: center;
}

.swp-eyebrow.has-text-align-center::after,
p.is-style-eyebrow.has-text-align-center::after {
	background: var(--wp--preset--color--orchid);
	content: "";
	flex: none;
	height: 1px;
	width: 26px;
}

.swp-eyebrow.is-light,
.swp-eyebrow.is-light::before,
.swp-eyebrow.is-light::after {
	color: #fff;
}

.swp-eyebrow.is-light::before,
.swp-eyebrow.is-light::after {
	background: var(--wp--preset--color--rose);
}

.swp-lead,
p.is-style-lead {
	font-size: var(--wp--preset--font-size--lead);
	max-width: 56ch;
}

.has-text-align-center .swp-lead,
.swp-lead.has-text-align-center {
	margin-left: auto;
	margin-right: auto;
}

/* Italic accent used inside headings. */
.swp-italic {
	color: var(--wp--preset--color--orchid-deep);
	font-style: italic;
	font-weight: 500;
}

.swp-italic-light {
	color: var(--wp--preset--color--petal);
	font-style: italic;
	font-weight: 500;
}

/* Split section heading: copy left, action right. */
.swp-section-head {
	align-items: flex-end;
	justify-content: space-between;
}

.swp-section-head > .wp-block-group:first-child {
	max-width: 640px;
}

/* Soft white card used by bouquets, quotes, tiles, steps. */
.swp-card,
.wp-block-group.is-style-card {
	background: #fff;
	border: 1px solid rgba(255, 255, 255, 0.9);
	border-radius: var(--swp-r-md);
	box-shadow: var(--swp-shadow-tile);
}

/* Button variants. */
.wp-block-button__link {
	align-items: center;
	display: inline-flex;
	gap: 10px;
	transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease, color 0.25s ease;
}

.wp-block-button__link:hover {
	box-shadow: 0 20px 36px -12px rgba(192, 79, 61, 0.40);
	transform: translateY(-2px);
}

.wp-block-button.is-style-outline > .wp-block-button__link,
.wp-block-button.is-style-outline > .wp-block-button__link:not(.has-text-color) {
	background: rgba(255, 255, 255, 0.55);
	border-color: var(--swp-line-strong);
	box-shadow: none;
	color: var(--wp--preset--color--orchid-deep);
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: #fff;
	box-shadow: var(--swp-shadow-tile);
	color: var(--wp--preset--color--orchid-deep);
}

.swp-btn-small .wp-block-button__link {
	font-size: var(--wp--preset--font-size--tiny);
	padding: 11px 22px;
}

.swp-home-action .wp-block-button__link {
	border-radius: 7px;
	font-family: var(--fj-ui-font);
	font-size: 14px;
	font-weight: 600;
	height: 44px;
	letter-spacing: 0;
	padding: 0 22px;
}

.swp-home-action.is-style-outline > .wp-block-button__link {
	background: #fff;
	border-color: var(--swp-line);
	color: var(--wp--preset--color--rose-deep);
}

.swp-btn-light .wp-block-button__link {
	background: #fff;
	background-image: none;
	box-shadow: var(--swp-shadow-tile);
	color: var(--wp--preset--color--orchid-deep);
}

.swp-btn-light .wp-block-button__link:hover {
	background: var(--wp--preset--color--petal);
	color: var(--wp--preset--color--plum);
}

/* Inline icon images sit on the text baseline, never stretch. */
.swp-icon img,
.swp-icon-sm img,
.swp-icon-lg img {
	display: block;
	height: auto;
}

.swp-icon {
	flex: none;
	width: 20px;
}

.swp-icon-sm {
	flex: none;
	width: 16px;
}

.swp-icon-lg {
	flex: none;
	width: 32px;
}

/* Check list used in product and support sections. */
.swp-check-list li,
.wp-block-list.is-style-checks li {
	list-style: none;
	padding-left: 34px;
	position: relative;
}

.swp-check-list,
.wp-block-list.is-style-checks {
	display: grid;
	gap: 16px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.swp-check-list li::before,
.wp-block-list.is-style-checks li::before {
	background-color: var(--wp--preset--color--orchid-deep);
	content: "";
	height: 20px;
	left: 0;
	-webkit-mask: url("assets/images/icons/check.svg") no-repeat center / contain;
	mask: url("assets/images/icons/check.svg") no-repeat center / contain;
	position: absolute;
	top: 3px;
	width: 20px;
}

.swp-check-list strong,
.wp-block-list.is-style-checks strong {
	color: var(--wp--preset--color--plum);
	font-weight: 500;
}

/* Small masked separator. */
.wp-block-separator.is-style-petal {
	background: none;
	border: 0;
	height: 14px;
	-webkit-mask: url("assets/images/icons/check.svg") no-repeat center / contain;
	mask: url("assets/images/icons/check.svg") no-repeat center / contain;
	background-color: var(--wp--preset--color--rose-deep);
	width: 14px;
	margin-left: auto;
	margin-right: auto;
}

/* ==========================================================================
   3. HEADER
   ========================================================================== */

.swp-header {
	position: sticky;
	top: 0;
	z-index: 60;
}

.swp-nav {
	background: rgba(255, 255, 255, 0.55);
	border-bottom: 1px solid rgba(255, 255, 255, 0.75);
	-webkit-backdrop-filter: blur(16px);
	backdrop-filter: blur(16px);
	padding-left: var(--wp--preset--spacing--gutter) !important;
	padding-right: var(--wp--preset--spacing--gutter) !important;
	transition: background 0.35s ease, box-shadow 0.35s ease;
}

/* Frosted-to-solid nav on scroll, without any JavaScript. */
@supports (animation-timeline: scroll()) {
	.swp-nav {
		animation: swp-nav-scrolled linear both;
		animation-timeline: scroll();
		animation-range: 0 140px;
	}
}

@keyframes swp-nav-scrolled {
	to {
		background: rgba(255, 255, 255, 0.88);
		box-shadow: 0 16px 40px -22px rgba(48, 55, 53, 0.24);
	}
}

.swp-logo {
	align-items: center;
	display: flex;
	gap: 12px;
}

.swp-logo-mark,
.swp-logo-mark a {
	display: block;
	line-height: 0;
}

.swp-logo-mark img,
.wp-block-site-logo img {
	height: auto;
	max-width: 100%;
}

.swp-nav .swp-logo-mark img {
	width: 46px;
}

.swp-footer-logo img {
	width: 54px;
}

.swp-logo .wp-block-site-title,
.swp-logo .wp-block-site-title a {
	line-height: 1;
	text-decoration: none;
}

.swp-logo .wp-block-site-title em {
	color: var(--wp--preset--color--orchid-deep);
	font-style: italic;
	font-weight: 500;
}

.swp-nav-phone {
	align-items: center;
	color: var(--wp--preset--color--plum);
	display: flex;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 550;
	gap: 8px;
}

.swp-nav-phone a {
	color: inherit;
}

/* Core navigation tuned to the reference underline behaviour. */
.swp-nav .wp-block-navigation .wp-block-navigation-item__content {
	padding: 4px 0;
	position: relative;
}

.swp-nav .wp-block-navigation .wp-block-navigation-item__content::after {
	background: var(--wp--preset--color--orchid);
	border-radius: 2px;
	bottom: 0;
	content: "";
	height: 2px;
	left: 0;
	position: absolute;
	transition: width 0.3s ease;
	width: 0;
}

.swp-nav .wp-block-navigation .wp-block-navigation-item__content:hover::after,
.swp-nav .wp-block-navigation .current-menu-item > .wp-block-navigation-item__content::after {
	width: 100%;
}

.swp-nav .wp-block-navigation__responsive-container.is-menu-open {
	background: rgba(255, 255, 255, 0.97);
	padding: 32px 24px;
}

.swp-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content::after {
	display: none;
}

.swp-nav .fj-category-menu .wp-block-navigation__submenu-container {
	background: #fff;
	border: 1px solid var(--fj-border);
	border-radius: 8px;
	box-shadow: 0 12px 28px rgba(37, 45, 42, 0.12);
	min-width: 224px;
	padding: 8px;
}

.swp-nav .fj-category-menu .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	border-radius: 5px;
	padding: 10px 12px;
	white-space: nowrap;
}

.swp-nav .fj-category-menu .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
	background: var(--fj-green-soft);
	color: var(--fj-green);
}

.swp-nav .fj-category-menu .wp-block-navigation__submenu-container .wp-block-navigation-item__content::after {
	display: none;
}

.swp-nav .wp-block-navigation__responsive-container-open,
.swp-nav .wp-block-navigation__responsive-container-close {
	color: var(--wp--preset--color--plum);
}

/* backdrop-filter creates a containing block for fixed children, which would
   trap the mobile overlay inside the bar. Drop the blur while it is open. */
.swp-nav:has(.wp-block-navigation__responsive-container.is-menu-open) {
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

/* Core switches the navigation overlay on at 600px. This theme has a phone
   number and two shop controls in the bar, so the overlay takes over at
   1200px instead. */
@media (max-width: 1199px) {
	.swp-nav .wp-block-navigation__responsive-container:not(.is-menu-open) {
		background-color: inherit;
		display: none;
	}

	.swp-nav .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}

	.swp-nav .wp-block-navigation__responsive-container.is-menu-open {
		display: flex;
		flex-direction: column;
		background: #fff !important;
		inset: 0 !important;
		min-height: 100dvh;
		overflow-y: auto;
		padding: 32px 24px;
		position: fixed !important;
		z-index: 100000;
	}

	.swp-nav .wp-block-navigation__responsive-container-close {
		display: block;
	}

	.swp-nav .fj-category-menu .wp-block-navigation__submenu-container {
		border: 0;
		border-left: 1px solid var(--fj-border);
		border-radius: 0;
		box-shadow: none;
		margin-top: 8px;
		padding: 2px 0 2px 16px;
	}

	.swp-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
		align-items: stretch;
		padding-top: 52px;
	}

	.swp-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
		align-items: stretch;
		gap: 0;
		width: 100%;
	}

	.swp-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item {
		border-bottom: 1px solid var(--fj-border);
		padding: 13px 0;
		width: 100%;
	}

	.swp-nav .wp-block-navigation__responsive-container.is-menu-open .fj-category-menu {
		align-items: stretch;
	}

	/* Below the overlay breakpoint the menu becomes a single toggle at the end
	   of the bar, after search, account and cart. */
	.swp-header .swp-nav > .wp-block-navigation {
		flex: 0 0 auto;
		justify-content: flex-end;
		margin-inline: 0;
		order: 5;
	}

	.swp-header .swp-nav > .wp-block-woocommerce-customer-account {
		margin-inline-start: auto;
		order: 2;
	}

	.swp-header .swp-nav > .wp-block-woocommerce-mini-cart {
		order: 3;
	}

}

@media (min-width: 1200px) {
	.swp-nav .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: none;
	}
}

/* Phones keep the logo and shop controls on the first row. */
@media (max-width: 781px) {
	.swp-header .swp-nav > .wp-block-woocommerce-customer-account {
		margin-inline-start: auto;
	}
}

/* ==========================================================================
   4. HERO
   ========================================================================== */

.swp-home-title {
	color: var(--wp--preset--color--plum);
	font-family: var(--fj-ui-font);
	font-style: normal;
	font-weight: 600;
	letter-spacing: 0;
}

.swp-home-title-hero {
	font-size: 62px;
	line-height: 1.02;
	max-width: 520px;
}

.swp-home-title-accent {
	display: block;
	font-family: inherit;
	font-size: 0.76em;
	font-weight: 400;
	line-height: 1.1;
	margin-top: 10px;
}

.swp-home-title-section {
	font-size: 40px;
	line-height: 1.08;
}

.home .swp-hero .swp-lead,
.home .swp-section-head .swp-lead {
	color: var(--wp--preset--color--plum);
	font-family: var(--fj-ui-font);
	font-size: 17px;
	font-weight: 400;
	letter-spacing: 0;
	line-height: 1.6;
}

.swp-hero {
	overflow: hidden;
	position: relative;
}

.swp-hero::before {
	background: rgba(233, 175, 199, 0.25);
	content: "";
	height: 460px;
	pointer-events: none;
	position: absolute;
	right: -140px;
	top: -140px;
	width: 460px;
}

.swp-hero > * {
	position: relative;
}

.swp-hero-stats {
	border-top: 1px solid var(--swp-line);
	padding-top: 28px;
}

.swp-hero-stats > .wp-block-group {
	flex: 1;
	padding-right: 24px;
}

.swp-hero-stats > .wp-block-group + .wp-block-group {
	border-left: 1px solid var(--swp-line);
	padding-left: 24px;
}

.swp-stat-n {
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--stat);
	font-weight: 750;
	line-height: 1;
	margin: 0;
}

.swp-stat-n em {
	color: var(--wp--preset--color--orchid-deep);
	font-style: normal;
}

.swp-stat-t {
	font-size: var(--wp--preset--font-size--tiny);
	letter-spacing: 0.04em;
	margin: 6px 0 0;
}

/* Arch photo with dashed ring and floating chips. */
.swp-hero-visual {
	justify-content: center;
	position: relative;
}

.swp-arch-wrap {
	margin-inline: auto;
	max-width: 400px;
	position: relative;
	width: 100%;
}

.swp-arch-wrap::after {
	border: 1px dashed rgba(192, 79, 61, 0.28);
	border-radius: 250px 250px 34px 34px;
	content: "";
	inset: -14px;
	pointer-events: none;
	position: absolute;
}

.swp-arch,
.wp-block-image.is-style-arch {
	background: #ecdfF2;
	border: 1px solid rgba(255, 255, 255, 0.85);
	border-radius: 240px 240px 26px 26px;
	box-shadow: 0 34px 70px -30px rgba(48, 55, 53, 0.28);
	margin: 0;
	overflow: hidden;
}

.swp-arch img,
.wp-block-image.is-style-arch img {
	aspect-ratio: 4 / 5.1;
	display: block;
	object-fit: cover;
	transform: scale(1.02);
	transition: transform 6s ease;
	width: 100%;
}

.swp-hero-visual:hover .swp-arch img {
	transform: scale(1.08);
}

.swp-chip {
	background: rgba(255, 255, 255, 0.92);
	border: 1px solid #fff;
	border-radius: 999px;
	box-shadow: var(--swp-shadow-tile);
	color: var(--wp--preset--color--plum);
	font-size: var(--wp--preset--font-size--tiny);
	font-weight: 500;
	padding: 10px 18px;
	position: absolute;
	z-index: 3;
}

.swp-chip p {
	margin: 0;
}

.swp-chip-a {
	animation: swp-bob 5s ease-in-out infinite;
	left: -26px;
	top: 64px;
}

.swp-chip-b {
	animation: swp-bob 6s ease-in-out 1.2s infinite;
	bottom: 96px;
	left: -10px;
}

@keyframes swp-bob {
	0%,
	100% {
		transform: translateY(0);
	}

	50% {
		transform: translateY(-10px);
	}
}

.swp-stamp {
	align-items: center;
	background: rgba(255, 255, 255, 0.9);
	border: 1px solid #fff;
	border-radius: 50%;
	bottom: 52px;
	box-shadow: var(--swp-shadow-tile);
	display: flex;
	height: 118px;
	justify-content: center;
	position: absolute;
	right: -8px;
	width: 118px;
	z-index: 3;
}

.swp-stamp-ring {
	inset: 0;
	margin: 0;
	position: absolute;
}

.swp-stamp-ring img {
	animation: swp-spin 16s linear infinite;
	width: 100%;
}

.swp-stamp-core {
	margin: 0;
	position: relative;
	width: 34px;
}

@keyframes swp-spin {
	to {
		transform: rotate(360deg);
	}
}

/* ==========================================================================
   5. PRODUCT CARDS
   ========================================================================== */

.swp-bq-grid {
	display: grid;
	gap: 26px;
	grid-template-columns: repeat(3, 1fr);
}

.swp-bq {
	background: #fff;
	border: 1px solid rgba(255, 255, 255, 0.9);
	border-radius: var(--swp-r-md);
	box-shadow: var(--swp-shadow-tile);
	display: flex;
	flex-direction: column;
	overflow: hidden;
	position: relative;
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.swp-bq:hover {
	box-shadow: 0 26px 50px -22px rgba(48, 55, 53, 0.26);
	transform: translateY(-6px);
}

.swp-bq-media {
	background: #F0F6F4;
	overflow: hidden;
	position: relative;
}

.swp-bq-media figure,
.swp-bq-media .wp-block-image {
	margin: 0;
}

.swp-bq-media img {
	aspect-ratio: 1 / 1.02;
	display: block;
	object-fit: cover;
	transition: transform 0.8s ease;
	width: 100%;
}

.swp-bq:hover .swp-bq-media img {
	transform: scale(1.06);
}

.swp-bq-badge {
	background: rgba(255, 255, 255, 0.92);
	border-radius: 999px;
	color: var(--wp--preset--color--orchid-deep);
	font-size: var(--wp--preset--font-size--eyebrow);
	font-weight: 600;
	left: 14px;
	letter-spacing: 0.12em;
	margin: 0;
	padding: 6px 14px;
	position: absolute;
	text-transform: uppercase;
	top: 14px;
	z-index: 2;
}

.swp-bq-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 22px 24px 24px;
}

.swp-bq-body h3 {
	margin: 0 0 4px;
}

.swp-bq-stems {
	font-size: var(--wp--preset--font-size--tiny);
	margin: 0 0 14px;
}

.swp-bq-price {
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--price);
	font-weight: 750;
	line-height: 1.2;
	margin: 0;
}

.swp-bq-price small {
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--tiny);
	font-weight: 400;
}

/* Circular "add" control: the label stays in the accessibility tree. */
.swp-bq-add .wp-block-button__link {
	background: #fff;
	background-image: none;
	border: 1px solid var(--swp-line-strong);
	border-radius: 50%;
	box-shadow: none;
	font-size: 0;
	height: 42px;
	padding: 0;
	position: relative;
	transition: 0.25s ease;
	width: 42px;
}

.swp-bq-add .wp-block-button__link::before {
	background-color: var(--wp--preset--color--orchid-deep);
	content: "";
	height: 16px;
	inset: 0;
	margin: auto;
	-webkit-mask: url("assets/images/icons/plus.svg") no-repeat center / contain;
	mask: url("assets/images/icons/plus.svg") no-repeat center / contain;
	position: absolute;
	transition: background-color 0.25s ease;
	width: 16px;
}

.swp-bq-add .wp-block-button__link:hover {
	background: var(--wp--preset--color--orchid);
	border-color: var(--wp--preset--color--orchid);
	transform: rotate(90deg);
}

.swp-bq-add .wp-block-button__link:hover::before {
	background-color: #fff;
}

/* ==========================================================================
   7. SUBSCRIPTION PANEL
   ========================================================================== */

.swp-sub-panel {
	border-bottom: 1px solid rgba(255, 255, 255, 0.4);
	border-top: 1px solid rgba(255, 255, 255, 0.4);
	overflow: hidden;
	position: relative;
}

.swp-sub-panel::before,
.swp-sub-panel::after {
	border-radius: 50%;
	content: "";
	pointer-events: none;
	position: absolute;
}

.swp-sub-panel::before {
	background: rgba(233, 175, 199, 0.3);
	height: 380px;
	right: -120px;
	top: -140px;
	width: 380px;
}

.swp-sub-panel::after {
	background: rgba(255, 255, 255, 0.12);
	bottom: -120px;
	height: 300px;
	left: -90px;
	width: 300px;
}

.swp-sub-panel > * {
	position: relative;
}

.swp-sub-note {
	align-items: center;
	color: rgba(255, 255, 255, 0.7);
	display: flex;
	font-size: var(--wp--preset--font-size--tiny);
	gap: 10px;
	margin-top: 22px;
}

.swp-plan {
	align-items: center;
	background: rgba(255, 255, 255, 0.1);
	border: 1px solid rgba(255, 255, 255, 0.28);
	border-radius: var(--swp-r-sm);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	display: flex;
	gap: 18px;
	justify-content: space-between;
	padding: 18px 24px;
	transition: background 0.3s ease, transform 0.3s ease;
}

.swp-plan:hover {
	background: rgba(255, 255, 255, 0.18);
	transform: translateX(6px);
}

.swp-plan .swp-plan-name {
	color: #fff;
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--h5);
	font-weight: 650;
	line-height: 1.2;
	margin: 0;
}

.swp-plan .swp-plan-sub {
	color: rgba(255, 255, 255, 0.75);
	font-size: var(--wp--preset--font-size--tiny);
	margin: 2px 0 0;
}

.swp-plan .swp-plan-price {
	color: var(--wp--preset--color--petal);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--price);
	font-weight: 750;
	margin: 0;
	white-space: nowrap;
}

.swp-plan .swp-plan-price small {
	color: rgba(255, 255, 255, 0.7);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--tiny);
	font-weight: 400;
}

/* ==========================================================================
   8. TESTIMONIALS
   ========================================================================== */

.swp-quote {
	background: #fff;
	border: 1px solid rgba(255, 255, 255, 0.9);
	border-radius: var(--swp-r-md);
	box-shadow: var(--swp-shadow-tile);
	display: flex;
	flex-direction: column;
	gap: 18px;
	padding: 30px 28px;
}

.swp-stars {
	display: flex;
	gap: 4px;
}

.swp-stars .wp-block-image {
	margin: 0;
	width: 15px;
}

.swp-quote-text {
	font-size: var(--wp--preset--font-size--small);
	margin: 0;
}

.swp-quote-who {
	align-items: center;
	display: flex;
	gap: 14px;
	margin-top: auto;
}

.swp-avatar {
	border: 2px solid #fff;
	border-radius: 50%;
	box-shadow: 0 6px 14px -6px rgba(48, 55, 53, 0.24);
	flex: none;
	margin: 0;
	overflow: hidden;
	width: 46px;
}

.swp-avatar img {
	border-radius: 50%;
	display: block;
	width: 100%;
}

.swp-quote-name {
	color: var(--wp--preset--color--plum);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 550;
	margin: 0;
}

.swp-quote-role {
	font-size: var(--wp--preset--font-size--tiny);
	margin: 0;
}

/* ==========================================================================
   9. BLOG · ARCHIVE · SINGLE
   ========================================================================== */

.swp-post-card {
	background: #fff;
	border: 1px solid rgba(255, 255, 255, 0.9);
	border-radius: var(--swp-r-md);
	box-shadow: var(--swp-shadow-tile);
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.swp-post-card:hover {
	box-shadow: 0 26px 50px -22px rgba(48, 55, 53, 0.26);
	transform: translateY(-6px);
}

.swp-post-card .wp-block-post-featured-image {
	margin: 0;
	overflow: hidden;
}

.swp-post-card .wp-block-post-featured-image img {
	aspect-ratio: 4 / 3;
	object-fit: cover;
	transition: transform 0.8s ease;
	width: 100%;
}

.swp-post-card:hover .wp-block-post-featured-image img {
	transform: scale(1.06);
}

.swp-post-card .wp-block-post-title {
	font-size: var(--wp--preset--font-size--h4);
}

.swp-post-meta {
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--tiny);
}

.swp-post-meta .wp-block-post-terms a {
	color: var(--wp--preset--color--orchid-deep);
}

.swp-entry-content > * {
	margin-block-start: 26px;
}

.swp-entry-content > :first-child {
	margin-block-start: 0;
}

.wp-block-post-navigation-link a {
	color: var(--wp--preset--color--orchid-deep);
	font-weight: 500;
}

.wp-block-query-pagination {
	font-size: var(--wp--preset--font-size--small);
}

.wp-block-query-pagination .page-numbers {
	align-items: center;
	border: 1px solid var(--swp-line);
	border-radius: 999px;
	display: inline-flex;
	height: 40px;
	justify-content: center;
	min-width: 40px;
	padding: 0 12px;
	transition: 0.25s ease;
}

.wp-block-query-pagination .page-numbers:hover,
.wp-block-query-pagination .page-numbers.current {
	background: var(--wp--preset--color--orchid);
	border-color: var(--wp--preset--color--orchid);
	color: #fff;
}

/* Comments and forms. */
.wp-block-post-comments-form input[type="text"],
.wp-block-post-comments-form input[type="email"],
.wp-block-post-comments-form input[type="url"],
.wp-block-post-comments-form textarea,
.wp-block-search__input,
.swp-field input,
.swp-field select,
.swp-field textarea {
	background: #fff;
	border: 1px solid rgba(48, 55, 53, 0.18);
	border-radius: var(--swp-r-sm);
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--body);
	padding: 15px 18px;
	transition: border-color 0.25s ease, box-shadow 0.25s ease;
	width: 100%;
}

.wp-block-post-comments-form input:focus,
.wp-block-post-comments-form textarea:focus,
.wp-block-search__input:focus {
	border-color: var(--wp--preset--color--orchid);
	box-shadow: 0 0 0 4px rgba(192, 79, 61, 0.14);
	outline: none;
}

.wp-block-search__button {
	border-radius: 999px;
	padding: 15px 26px;
}

.wp-block-comment-author-name a {
	color: var(--wp--preset--color--plum);
	font-weight: 500;
}

/* ==========================================================================
   10. FOOTER
   ========================================================================== */

.swp-footer .swp-foot-h {
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--h5);
	font-weight: 700;
	margin: 0 0 18px;
}

.swp-foot-links ul,
.swp-foot-links {
	list-style: none;
	margin: 0;
	padding: 0;
}

.swp-foot-links li {
	margin-bottom: 10px;
}

.swp-foot-links a {
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--small);
	transition: color 0.2s ease;
}

.swp-foot-links a:hover {
	color: var(--wp--preset--color--orchid-deep);
}

.swp-foot-contact {
	display: grid;
	gap: 14px;
}

.swp-foot-contact .wp-block-group {
	align-items: flex-start;
}

.swp-foot-contact p {
	font-size: var(--wp--preset--font-size--small);
	margin: 0;
}

.swp-socials {
	display: flex;
	gap: 10px;
}

.swp-socials .wp-block-social-links {
	gap: 10px;
}

.swp-socials .wp-block-social-link,
.swp-social-btn {
	align-items: center;
	background: #fff;
	border: 1px solid var(--swp-line-strong);
	border-radius: 50%;
	display: flex;
	height: 38px;
	justify-content: center;
	transition: 0.25s ease;
	width: 38px;
}

.swp-social-btn img {
	width: 15px;
}

.swp-social-btn:hover {
	background: var(--wp--preset--color--orchid);
	border-color: var(--wp--preset--color--orchid);
	transform: translateY(-3px);
}

.swp-social-btn:hover img {
	filter: brightness(0) invert(1);
}

.swp-foot-bar {
	border-top: 1px solid var(--swp-line);
	font-size: var(--wp--preset--font-size--tiny);
}

.swp-foot-bar p {
	margin: 0;
}

/* ==========================================================================
   11. WOOCOMMERCE
   ========================================================================== */

.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.wc-block-components-notice-banner {
	background: #fff;
	border: 1px solid rgba(255, 255, 255, 0.9);
	border-left: 3px solid var(--wp--preset--color--orchid);
	border-radius: var(--swp-r-sm);
	box-shadow: var(--swp-shadow-tile);
	color: var(--wp--preset--color--plum);
	font-size: var(--wp--preset--font-size--small);
	padding: 18px 22px;
}

.woocommerce-error {
	border-left-color: var(--wp--preset--color--rose-deep);
}

.woocommerce .button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.wc-block-components-button:not(.is-link),
.wp-block-woocommerce-cart .wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button {
	background-image: none !important;
	background-color: var(--wp--preset--color--orchid-deep) !important;
	border: 1px solid transparent;
	border-radius: 999px;
	box-shadow: 0 8px 20px -14px rgba(48, 55, 53, 0.34);
	color: #fff !important;
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--button);
	font-weight: 650;
	letter-spacing: 0;
	padding: 15px 30px;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.woocommerce .button:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.wc-block-components-button:not(.is-link):hover {
	box-shadow: 0 10px 24px -15px rgba(48, 55, 53, 0.38);
	transform: translateY(-2px);
}

.woocommerce .button.alt,
.woocommerce button.button.alt {
	background-color: transparent;
}

/* --- product grid (product collection + legacy loop) --- */
.wc-block-product-template,
.woocommerce ul.products {
	gap: 26px;
}

.wc-block-product-template__responsive-wrapper .wc-block-product,
li.wc-block-product,
.woocommerce ul.products li.product {
	background: #fff;
	border: 1px solid rgba(255, 255, 255, 0.9);
	border-radius: var(--swp-r-md);
	box-shadow: var(--swp-shadow-tile);
	display: flex;
	flex-direction: column;
	overflow: hidden;
	padding: 0 0 24px;
	position: relative;
	text-align: left;
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

li.wc-block-product:hover,
.woocommerce ul.products li.product:hover {
	box-shadow: 0 26px 50px -22px rgba(48, 55, 53, 0.26);
	transform: translateY(-6px);
}

li.wc-block-product .wc-block-components-product-image,
.woocommerce ul.products li.product a img {
	background: #F0F6F4;
	border-radius: 0;
	margin: 0 0 20px;
	overflow: hidden;
}

li.wc-block-product .wc-block-components-product-image img,
.woocommerce ul.products li.product a img {
	aspect-ratio: 1 / 1.02;
	display: block;
	object-fit: cover;
	transition: transform 0.8s ease;
	width: 100%;
}

li.wc-block-product:hover .wc-block-components-product-image img,
.woocommerce ul.products li.product:hover a img {
	transform: scale(1.06);
}

li.wc-block-product > *:not(.wc-block-components-product-image),
.woocommerce ul.products li.product > *:not(a:first-of-type):not(.woocommerce-LoopProduct-link) {
	padding-left: 24px;
	padding-right: 24px;
}

li.wc-block-product .wp-block-post-title,
.woocommerce ul.products li.product .woocommerce-loop-product__title {
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--h5);
	font-weight: 650;
	line-height: 1.25;
	margin: 0 0 6px;
	text-align: left;
}

li.wc-block-product .wp-block-post-title a,
.woocommerce ul.products li.product .woocommerce-loop-product__title a {
	color: inherit;
}

li.wc-block-product .wc-block-components-product-price,
.woocommerce ul.products li.product .price {
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--price);
	font-weight: 750;
	margin: 0 0 16px;
	text-align: left;
}

li.wc-block-product .wc-block-components-product-price del,
.woocommerce ul.products li.product .price del {
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--small);
	opacity: 0.7;
}

li.wc-block-product .wc-block-components-product-price ins,
.woocommerce ul.products li.product .price ins {
	text-decoration: none;
}

li.wc-block-product .wc-block-components-product-rating,
.woocommerce ul.products li.product .star-rating {
	margin-bottom: 10px;
}

li.wc-block-product .wp-block-button,
li.wc-block-product .wc-block-components-product-button {
	margin-top: auto;
	text-align: left;
}

li.wc-block-product .wp-block-button__link,
.woocommerce ul.products li.product a.button {
	display: inline-flex;
	margin: 0;
	width: auto;
}

/* Sale / stock badges. */
.wc-block-components-product-sale-badge,
.woocommerce span.onsale {
	background: rgba(255, 255, 255, 0.92);
	border-radius: 999px;
	color: var(--wp--preset--color--orchid-deep);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--eyebrow);
	font-weight: 600;
	left: 14px;
	letter-spacing: 0.12em;
	line-height: 1;
	margin: 0;
	min-height: 0;
	min-width: 0;
	padding: 8px 14px;
	position: absolute;
	right: auto;
	text-transform: uppercase;
	top: 14px;
	z-index: 3;
}

/* --- single product --- */
.swp-shop .woocommerce-product-gallery,
.wp-block-woocommerce-product-image-gallery {
	border-radius: var(--swp-r-md);
	overflow: hidden;
}

.swp-shop .woocommerce-product-gallery img,
.wp-block-woocommerce-product-image-gallery img {
	border-radius: var(--swp-r-md);
}

.wp-block-woocommerce-product-image-gallery .flex-control-thumbs li img {
	border-radius: var(--swp-r-sm);
}

.wp-block-woocommerce-product-price .woocommerce-Price-amount,
.swp-shop .summary .price {
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--price);
	font-weight: 750;
}

.wp-block-woocommerce-add-to-cart-form .quantity input.qty,
.woocommerce .quantity input.qty {
	background: #fff;
	border: 1px solid rgba(48, 55, 53, 0.18);
	border-radius: 999px;
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	height: 52px;
	padding: 0 14px;
	text-align: center;
}

/* Block cart, mini cart and checkout share one stepper. The pill lives on the
   wrapper so the minus, value and plus sit inside a single control. */
.wc-block-components-quantity-selector {
	background: #fff;
	border: 1px solid rgba(48, 55, 53, 0.18);
	border-radius: 999px;
	box-shadow: none;
	display: flex;
	align-items: center;
	height: 40px;
	margin: 0;
	max-width: 116px;
	min-width: 108px;
	overflow: hidden;
	width: auto;
}

.wc-block-components-quantity-selector::after {
	display: none;
}

.wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input {
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	color: var(--wp--preset--color--plum);
	flex: 1 1 auto;
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--small);
	height: 100%;
	line-height: 1;
	margin: 0;
	min-width: 0;
	padding: 0;
	text-align: center;
	width: auto;
}

.wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input:focus {
	box-shadow: none;
	outline: none;
}

.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button {
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	color: var(--wp--preset--color--orchid-deep);
	cursor: pointer;
	filter: none;
	flex: none;
	font-size: var(--wp--preset--font-size--h5);
	height: 100%;
	line-height: 1;
	margin: 0;
	min-width: 0;
	opacity: 1;
	padding: 0;
	transition: background 0.2s ease, color 0.2s ease;
	width: 32px;
}

.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:hover:not(:disabled) {
	box-shadow: none;
	transform: none;
}

.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:hover:not(:disabled) {
	background: var(--wp--preset--color--lavender);
	color: var(--wp--preset--color--plum);
}

.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:focus,
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:focus-visible {
	background: #eff6f3;
	box-shadow: none;
	color: var(--wp--preset--color--rose-deep);
	outline: 0;
	transform: none;
}

.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:disabled {
	color: var(--wp--preset--color--ink);
	cursor: default;
	opacity: 0.4;
}

/* The mini cart drawer is narrow, so keep the stepper compact there. */
.wc-block-mini-cart__drawer .wc-block-components-quantity-selector {
	height: 36px;
	max-width: 104px;
	min-width: 96px;
}

.wc-block-mini-cart__drawer .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button {
	width: 30px;
}

.wc-block-cart-item__remove-link,
.wc-block-mini-cart__drawer .wc-block-cart-item__remove-link {
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--tiny);
}

.wc-block-cart-item__remove-link:hover {
	color: var(--wp--preset--color--orchid-deep);
}

.woocommerce div.product form.cart {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
}

.woocommerce div.product .woocommerce-tabs ul.tabs {
	border-bottom: 1px solid var(--swp-line);
	margin: 0 0 24px;
	padding: 0;
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before {
	border-bottom: 0;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li {
	background: transparent;
	border: 0;
	border-radius: 0;
	margin: 0 26px 0 0;
	padding: 0 0 12px;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after {
	display: none;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 650;
	letter-spacing: 0;
	padding: 0;
	text-transform: uppercase;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
	color: var(--wp--preset--color--orchid-deep);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active {
	border-bottom: 2px solid var(--wp--preset--color--orchid);
}

.wp-block-woocommerce-product-details.is-style-minimal .wc-tabs-wrapper,
.wp-block-woocommerce-product-details .wc-tab {
	font-size: var(--wp--preset--font-size--body);
}

/* Ratings. */
.woocommerce .star-rating span::before,
.wc-block-components-product-rating__stars span::before,
.wc-block-review-list-item__rating > div::before {
	color: #e3b23c;
}

/* --- cart, checkout, account panels --- */
.swp-shop .wp-block-woocommerce-cart,
.swp-shop .wp-block-woocommerce-checkout,
.swp-shop .woocommerce-account .woocommerce,
.swp-shop .woocommerce-order,
.wc-block-order-confirmation-totals,
.wc-block-order-confirmation-summary {
	font-size: var(--wp--preset--font-size--body);
}

.wc-block-cart-items__row,
.woocommerce table.shop_table {
	border-color: var(--swp-line);
}

.wc-block-components-sidebar .wc-block-components-totals-wrapper,
.wc-block-cart__sidebar .wp-block-woocommerce-cart-order-summary-block,
.wc-block-checkout__sidebar .wc-block-components-totals-wrapper {
	background: #fff;
	border-radius: var(--swp-r-md);
}

.wc-block-cart__sidebar .wp-block-woocommerce-cart-order-summary-block,
.wc-block-checkout__sidebar .wc-block-components-order-summary {
	border: 1px solid rgba(255, 255, 255, 0.9);
	box-shadow: var(--swp-shadow-tile);
	padding: 26px 24px;
}

.wc-block-components-title,
.wc-block-components-checkout-step__title,
.woocommerce-account h2,
.woocommerce-account h3 {
	color: var(--wp--preset--color--plum) !important;
	font-family: var(--wp--preset--font-family--jost) !important;
	font-weight: 650 !important;
}

.wc-block-components-text-input input,
.wc-block-components-textarea,
.wc-block-components-select__container,
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.select2-container--default .select2-selection--single {
	background: #fff;
	border: 1px solid rgba(48, 55, 53, 0.18) !important;
	border-radius: var(--swp-r-sm) !important;
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--body);
	min-height: 52px;
	padding: 14px 18px;
}

.wc-block-components-text-input.is-active label,
.wc-block-components-text-input input:focus,
.woocommerce form .form-row input.input-text:focus {
	border-color: var(--wp--preset--color--orchid) !important;
	box-shadow: 0 0 0 4px rgba(192, 79, 61, 0.14);
	outline: none;
}

.woocommerce-account nav.woocommerce-MyAccount-navigation ul {
	display: grid;
	gap: 6px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.woocommerce-account nav.woocommerce-MyAccount-navigation li {
	list-style: none;
	margin: 0;
	padding: 0;
}

.woocommerce-account nav.woocommerce-MyAccount-navigation li::marker {
	content: "";
}

.woocommerce-account .woocommerce-MyAccount-navigation li a {
	border: 1px solid transparent;
	border-radius: 999px;
	color: var(--wp--preset--color--plum);
	display: block;
	font-size: var(--wp--preset--font-size--small);
	padding: 12px 20px;
	text-decoration: none;
	transition: 0.25s ease;
}

.woocommerce-account .woocommerce-MyAccount-navigation li a:hover,
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a {
	background: #fff;
	border-color: rgba(255, 255, 255, 0.9);
	box-shadow: var(--swp-shadow-tile);
	color: var(--wp--preset--color--orchid-deep);
}

.woocommerce-account .woocommerce-MyAccount-content {
	background: #fff;
	border: 1px solid rgba(255, 255, 255, 0.9);
	border-radius: var(--swp-r-md);
	box-shadow: var(--swp-shadow-tile);
	padding: clamp(24px, 3vw, 38px);
}

.woocommerce table.shop_table,
.wc-block-order-confirmation-totals table {
	background: #fff;
	border: 1px solid rgba(255, 255, 255, 0.9);
	border-radius: var(--swp-r-md);
	box-shadow: var(--swp-shadow-tile);
	overflow: hidden;
}

.woocommerce table.shop_table th {
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	font-weight: 500;
}

.wc-block-components-product-name,
.woocommerce table.shop_table td.product-name a {
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--h5);
	font-weight: 650;
}

.wc-block-breadcrumbs,
.woocommerce-breadcrumb {
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--tiny);
	letter-spacing: 0.04em;
}

.wc-block-breadcrumbs a,
.woocommerce-breadcrumb a {
	color: var(--wp--preset--color--orchid-deep);
}

.woocommerce-ordering select,
.wc-block-catalog-sorting select {
	background: #fff;
	border: 1px solid rgba(48, 55, 53, 0.18);
	border-radius: 999px;
	color: var(--wp--preset--color--plum);
	font-family: var(--wp--preset--font-family--jost);
	font-size: var(--wp--preset--font-size--small);
	padding: 11px 18px;
}

.woocommerce-result-count,
.wc-block-product-results-count {
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--small);
	margin: 0;
}

.woocommerce nav.woocommerce-pagination ul {
	border: 0;
	display: flex;
	gap: 8px;
}

.woocommerce nav.woocommerce-pagination ul li {
	border: 0;
}

.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
	background: #fff;
	border: 1px solid var(--swp-line);
	border-radius: 999px;
	color: var(--wp--preset--color--plum);
	min-width: 40px;
	padding: 10px 14px;
}

.woocommerce nav.woocommerce-pagination ul li a:hover,
.woocommerce nav.woocommerce-pagination ul li span.current {
	background: var(--wp--preset--color--orchid);
	border-color: var(--wp--preset--color--orchid);
	color: #fff;
}

/* Mini cart button in the header. */
.swp-cart-link {
	align-items: center;
	background: #fff;
	border: 1px solid var(--swp-line-strong);
	border-radius: 999px;
	color: var(--wp--preset--color--orchid-deep);
	display: inline-flex;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 550;
	gap: 8px;
	padding: 10px 18px;
	transition: 0.25s ease;
}

.swp-cart-link:hover {
	background: var(--wp--preset--color--orchid);
	color: #fff;
}

/* ==========================================================================
   12. RESPONSIVE
   ========================================================================== */

@media (max-width: 1080px) {
	.swp-bq-grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.swp-hero-visual {
		order: -1;
	}
}

@media (max-width: 781px) {
	.swp-bq-grid {
		grid-template-columns: 1fr;
	}

	.swp-hero-stats {
		align-items: flex-start;
		flex-direction: column;
		gap: 18px;
	}

	.swp-hero-stats > .wp-block-group {
		width: 100%;
	}

	.swp-hero-stats > .wp-block-group + .wp-block-group {
		border-left: 0;
		padding-left: 0;
	}

	.swp-chip-a,
	.swp-chip-b {
		left: 4px;
	}

	.swp-stamp {
		height: 96px;
		right: 4px;
		width: 96px;
	}

	.swp-section-head {
		align-items: flex-start;
	}

	.swp-plan {
		align-items: flex-start;
		flex-direction: column;
		gap: 10px;
	}

}

@media (max-width: 600px) {
	.swp-arch-wrap::after {
		inset: -8px;
	}
}

/* ==========================================================================
   13. MOTION PREFERENCES
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
	}

}

/* ==========================================================================
   14. PATTERN DETAILS
   ========================================================================== */

/* Arrow suffix on the primary call-to-action buttons. */
.swp-btn-arrow .wp-block-button__link::after {
	background-color: currentColor;
	content: "";
	display: inline-block;
	flex: none;
	height: 15px;
	-webkit-mask: url("assets/images/icons/arrow-right.svg") no-repeat center / contain;
	mask: url("assets/images/icons/arrow-right.svg") no-repeat center / contain;
	transition: transform 0.25s ease;
	width: 15px;
}

.swp-btn-arrow .wp-block-button__link:hover::after {
	transform: translateX(4px);
}

/* Post terms reused as an eyebrow label. */
.swp-eyebrow-terms {
	color: var(--wp--preset--color--orchid-deep);
	font-weight: 600;
	letter-spacing: 0.24em;
	text-transform: uppercase;
}

.swp-eyebrow-terms a {
	color: inherit;
}

/* Section banners shared by blog, page and shop templates. */
.swp-page-banner .wp-block-post-title,
.swp-page-banner .wp-block-query-title {
	margin-left: auto;
	margin-right: auto;
	max-width: 20ch;
}

.swp-404-mark {
	opacity: 0.9;
}

/* Social icons: bordered circles that fill on hover. */
.swp-socials.wp-block-social-links .wp-block-social-link {
	border: 1px solid var(--swp-line-strong);
	border-radius: 50%;
	transition: transform 0.25s ease, background-color 0.25s ease, border-color 0.25s ease;
}

.swp-socials.wp-block-social-links .wp-block-social-link:hover {
	background-color: var(--wp--preset--color--orchid) !important;
	border-color: var(--wp--preset--color--orchid);
	transform: translateY(-3px);
}

.swp-socials.wp-block-social-links .wp-block-social-link:hover .wp-block-social-link-anchor {
	color: #fff !important;
	fill: #fff !important;
}

/* WooCommerce product collection grids follow the bouquet gutter. */
.wp-block-woocommerce-product-collection .wc-block-product-template {
	gap: 26px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.swp-shop-archive .wc-block-product-template,
.swp-related .wc-block-product-template {
	gap: 26px;
}

/* Card grids fall back gracefully where grid layout is unavailable. */
.swp-post-card .wp-block-post-title a {
	color: var(--wp--preset--color--plum);
}

.swp-post-card .wp-block-post-title a:hover {
	color: var(--wp--preset--color--orchid-deep);
}

/* Featured image frame on single posts and pages. */
.swp-frame.wp-block-post-featured-image {
	border-radius: var(--swp-r-md);
	box-shadow: var(--swp-shadow-soft);
	overflow: hidden;
}

.swp-frame.wp-block-post-featured-image img {
	aspect-ratio: 16 / 9;
	object-fit: cover;
	width: 100%;
}

/* Entry content rhythm. */
.swp-entry-content h2,
.swp-entry-content h3,
.swp-entry-content h4 {
	margin-block-start: 40px;
}

.swp-entry-content ul,
.swp-entry-content ol {
	padding-left: 22px;
}

.swp-entry-content li {
	margin-bottom: 8px;
}

/* ==========================================================================
   15. WOOCOMMERCE PRODUCT GRID SIZING
   ========================================================================== */

/* WooCommerce sizes its responsive grid from a 1.25em gap. Widening the gap
   without restating the tracks makes a three-column grid wrap to two, so the
   tracks are declared explicitly here. */
.wc-block-product-template__responsive {
	gap: 26px;
}

.wc-block-product-template__responsive.columns-2,
.wc-block-product-template__responsive.columns-3,
.wc-block-product-template__responsive.columns-4,
.wc-block-product-template__responsive.columns-5,
.wc-block-product-template__responsive.columns-6 {
	grid-template-columns: minmax(0, 1fr);
}

@media (min-width: 601px) {
	.wc-block-product-template__responsive.columns-2,
	.wc-block-product-template__responsive.columns-3,
	.wc-block-product-template__responsive.columns-4,
	.wc-block-product-template__responsive.columns-5,
	.wc-block-product-template__responsive.columns-6 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1081px) {
	.wc-block-product-template__responsive.columns-3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.wc-block-product-template__responsive.columns-4 {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.wc-block-product-template__responsive.columns-5 {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}

	.wc-block-product-template__responsive.columns-6 {
		grid-template-columns: repeat(6, minmax(0, 1fr));
	}
}

/* Card internals align left like the bouquet cards. */
li.wc-block-product .wc-block-components-product-button,
li.wc-block-product .wc-block-components-product-price,
li.wc-block-product .wc-block-components-product-rating {
	text-align: left;
}

li.wc-block-product .wp-block-button.wc-block-components-product-button {
	align-items: flex-start;
	justify-content: flex-start;
	margin-top: auto;
	padding-top: 4px;
}

li.wc-block-product .wc-block-components-product-image {
	display: block;
	position: relative;
}

li.wc-block-product .wc-block-components-product-image a {
	display: block;
}

/* Loading/added states keep the pill shape. */
.wc-block-components-product-button .wp-block-button__link.loading,
.wc-block-components-product-button .wp-block-button__link.added {
	opacity: 0.85;
}

.wc-block-components-product-button .added_to_cart {
	color: var(--wp--preset--color--orchid-deep);
	display: inline-block;
	font-size: var(--wp--preset--font-size--tiny);
	margin-top: 10px;
	text-decoration: underline;
}

/* ==========================================================================
   16. WOOCOMMERCE HEADER BLOCKS + ACCOUNT
   ========================================================================== */

/* The nav bar is a plain left-aligned flex row. Auto margins on the menu push
   the logo hard left and pack everything after it into one right-hand cluster,
   which is where WooCommerce injects the account and mini-cart blocks. */
.swp-nav.wp-block-group {
	gap: 14px;
	justify-content: flex-start;
}

.swp-nav > .wp-block-navigation {
	margin-inline: auto;
}

.swp-nav > .wp-block-woocommerce-customer-account,
.swp-nav > .wp-block-woocommerce-mini-cart {
	flex: none;
	margin: 0;
}

.swp-nav .wp-block-woocommerce-customer-account a,
.swp-nav .wc-block-mini-cart__button {
	align-items: center;
	background: #fff;
	border: 1px solid var(--swp-line-strong);
	border-radius: 999px;
	color: var(--wp--preset--color--orchid-deep);
	display: inline-flex;
	gap: 6px;
	height: 40px;
	justify-content: center;
	min-width: 40px;
	padding: 0 12px;
	transition: 0.25s ease;
}

.swp-nav .wp-block-woocommerce-customer-account a:hover,
.swp-nav .wc-block-mini-cart__button:hover {
	background: var(--wp--preset--color--orchid);
	border-color: var(--wp--preset--color--orchid);
	color: #fff;
}

.swp-nav .wc-block-customer-account__account-icon,
.swp-nav .wc-block-mini-cart__quantity-badge svg {
	height: 18px;
	width: 18px;
}

.swp-nav .swp-account-name {
	font-family: var(--wp--preset--font-family--jost);
	font-size: 13px;
	font-weight: 600;
	line-height: 1;
	max-width: 120px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.swp-nav .wc-block-mini-cart__badge {
	background: var(--wp--preset--color--orchid);
	color: #fff;
}

/* Account: login card and dashboard split. */
.woocommerce-account .woocommerce {
	max-width: 100%;
}

.woocommerce-account form.login,
.woocommerce-account form.register,
.woocommerce-account form.lost_reset_password {
	background: #fff;
	border: 1px solid rgba(255, 255, 255, 0.9);
	border-radius: var(--swp-r-md);
	box-shadow: var(--swp-shadow-tile);
	padding: clamp(24px, 3vw, 34px);
}

.woocommerce-account #customer_login > .col-1:only-child,
.woocommerce-account .u-columns > .col-1:only-child {
	float: none;
	margin: 0 auto;
	max-width: 560px;
	width: 100%;
}

.woocommerce-account #customer_login.col2-set {
	display: grid;
	gap: 32px;
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.woocommerce-account #customer_login .col-1,
.woocommerce-account #customer_login .col-2 {
	float: none;
	width: 100%;
}

/* WooCommerce floats the account sidebar and content at 30%/68%. Those rules
   are more specific than a plain class, so the split is rebuilt here as a flex
   row with matching specificity. Login, register and password screens have no
   sidebar and fall through to the full-width branch below. */
body.woocommerce-account .woocommerce {
	align-items: flex-start;
	display: flex;
	flex-wrap: wrap;
	gap: 34px;
}

body.woocommerce-account .woocommerce > nav.woocommerce-MyAccount-navigation {
	flex: 0 0 260px;
	float: none;
	max-width: 100%;
	width: 260px;
}

body.woocommerce-account .woocommerce > .woocommerce-MyAccount-content {
	flex: 1 1 320px;
	float: none;
	min-width: 0;
	width: auto;
}

/* Everything else in the wrapper spans the full row. */
body.woocommerce-account .woocommerce > .woocommerce-notices-wrapper,
body.woocommerce-account .woocommerce > h2,
body.woocommerce-account .woocommerce > p,
body.woocommerce-account .woocommerce > form,
body.woocommerce-account .woocommerce > .u-columns,
body.woocommerce-account .woocommerce > #customer_login {
	flex: 1 1 100%;
	min-width: 0;
}

@media (max-width: 781px) {
	body.woocommerce-account .woocommerce > nav.woocommerce-MyAccount-navigation {
		flex: 1 1 100%;
		width: 100%;
	}
}

.woocommerce form .form-row label {
	color: var(--wp--preset--color--plum);
	font-size: var(--wp--preset--font-size--tiny);
	font-weight: 650;
	letter-spacing: 0.04em;
}

.woocommerce form .form-row .required {
	color: var(--wp--preset--color--rose-deep);
}

/* Logged-out account screens sit in a centred column. */
body.woocommerce-account .woocommerce:not(:has(nav.woocommerce-MyAccount-navigation)) {
	gap: 18px;
	margin-left: auto;
	margin-right: auto;
	max-width: 560px;
}

.woocommerce-account .woocommerce h2 {
	font-size: var(--wp--preset--font-size--h3);
	margin-bottom: 18px;
}

.woocommerce-account form.login .woocommerce-form-login__submit {
	margin-right: 14px;
}

/* ==========================================================================
   17. RESPONSIVE GRID FALLBACKS
   ========================================================================== */

/* Core grid layouts with a fixed column count do not collapse on their own.
   Step them down so every card grid stays inside the viewport. */
@media (max-width: 1080px) {
	.swp-panel .wp-block-group.is-layout-grid,
	.swp-panel .wp-block-post-template.is-layout-grid,
	.swp-sub-panel .wp-block-group.is-layout-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 781px) {
	.swp-panel .wp-block-group.is-layout-grid,
	.swp-panel .wp-block-post-template.is-layout-grid,
	.swp-sub-panel .wp-block-group.is-layout-grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Flex rows that hold a constrained text block need to be allowed to shrink. */
.swp-quote-who > .wp-block-group,
.swp-plan > .wp-block-group,
.swp-logo > .wp-block-group,
.swp-nav-phone > *,
.swp-foot-contact .wp-block-group > * {
	min-width: 0;
}

.swp-quote-name,
.swp-quote-role,
.swp-plan-name,
.swp-plan-sub {
	overflow-wrap: anywhere;
}

/* =========================================================
   产品页品牌化（按 UI 规范重构）
   ========================================================= */
:root {
    --cc-text: #303735;
    --cc-text-2: #68716E;
    --cc-brand: #C04F3D;
    --cc-brand-dark: #A94334;
    --cc-bg-soft: #F6F9F8;
    --cc-border: #DDE5E2;
    --cc-bg-page: #FFFFFF;
}

/* ---- 整体版式：两栏更开阔 ---- */
.swp-single-product {
    --wp--style--global--content-size: 1440px;
}

.swp-single-product .wp-block-columns {
    align-items: flex-start !important;
    gap: 72px !important;
}

.swp-single-product .wp-block-column {
    min-width: 0;
}

/* ---- 产品图库：4:5 容器、sticky、浅灰紫底 ---- */
.wp-block-woocommerce-product-image-gallery {
    aspect-ratio: 4 / 5;
    background: #F6F9F8;
    border-radius: 14px;
    overflow: hidden;
    position: sticky;
    top: 100px;
}

.wp-block-woocommerce-product-image-gallery img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 14px;
}

/* ---- Product title ---- */
.swp-product-summary .wp-block-post-title {
    color: #303735;
    font-family: var(--wp--preset--font-family--jost);
    font-size: var(--wp--preset--font-size--h2);
    line-height: 1.1;
    letter-spacing: 0;
    font-weight: 650;
    margin-bottom: 20px;
}

/* ---- Price ---- */
.swp-product-summary .price,
.swp-product-summary .woocommerce-Price-amount {
    color: #2F7D71 !important;
    font-family: var(--wp--preset--font-family--jost);
    font-size: var(--wp--preset--font-size--price);
    font-weight: 750;
}

.swp-product-summary .price {
    margin: 0 0 22px !important;
}

/* ---- 简介 ---- */
.swp-product-summary .wp-block-post-excerpt {
    font-size: var(--wp--preset--font-size--body);
    line-height: 1.6;
    color: #68716E;
    max-width: 100%;
}

/* ---- 数量控件：48px、圆角 8、紫色 focus ---- */
.swp-product-summary .quantity input.qty {
    width: 100% !important;
    height: 48px;
    min-height: 48px;
    padding: 8px 14px;
    font-size: var(--wp--preset--font-size--body);
    font-family: var(--wp--preset--font-family--jost);
    color: #303735;
    background-color: #FFFFFF;
    border: 1px solid #DDE5E2;
    border-radius: 8px;
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='13' height='13' viewBox='0 0 24 24' fill='none' stroke='%23817a8a' stroke-width='2.4'><path d='M6 9l6 6 6-6'/></svg>");
    background-repeat: no-repeat;
    background-position: right 14px center;
    background-size: 13px;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.swp-product-summary .quantity input.qty {
    appearance: auto;
    -webkit-appearance: auto;
    background-image: none;
    padding: 8px 14px;
    cursor: text;
}

.swp-product-summary .quantity input.qty:focus {
    outline: none;
    border-color: #C04F3D !important;
    box-shadow: 0 0 0 3px rgba(192, 79, 61, 0.14) !important;
}

/* ---- 加购行：数量 54×52 + 实心紫按钮 ---- */
.swp-product-summary form.cart {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin: 4px 0 0;
}

.swp-product-summary .quantity {
    float: none;
    margin: 0;
}

.swp-product-summary .quantity input.qty {
    width: 54px;
    height: 52px;
    text-align: center;
    font-size: var(--wp--preset--font-size--body);
    font-weight: 650;
    padding: 0;
}

.swp-product-summary .single_add_to_cart_button {
    flex: 1;
    height: 52px;
    min-width: 200px;
    background: #C04F3D;
    border: none;
    border-radius: 10px;
    color: #fff;
    font-size: var(--wp--preset--font-size--button);
    font-weight: 700;
    letter-spacing: 0;
    cursor: pointer;
    transition: background 0.2s ease;
}

.swp-product-summary .single_add_to_cart_button:hover {
    background: #A94334;
}

.swp-product-summary .single_add_to_cart_button:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(192, 79, 61, 0.24);
}

/* ---- 上传区域：拖拽式 ---- */
.cc-order-upload {
    display: block;
    margin: 24px 0 0;
    padding: 0;
    background: transparent;
    border: 0;
    border-radius: 0;
}

.cc-product-customizer .cc-order-upload {
    margin: 0;
    background: transparent;
}

.cc-product-customizer--area > .cc-order-upload {
    order: 0;
}

.cc-order-upload label {
    display: block;
    font-size: var(--wp--preset--font-size--body);
    font-weight: 600;
    color: #303735;
    margin-bottom: 8px;
}

.cc-file-control {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    min-width: 0;
    min-height: 56px;
    padding: 10px;
    background: #FCFBF8;
    border: 1px solid #E4DCD1;
    border-radius: 8px;
    box-sizing: border-box;
    transition: border-color 0.2s ease, background 0.2s ease;
}

.cc-file-control:hover {
    border-color: #BCA88F;
    background: #FFFDF9;
}

.cc-file-control input[type="file"] {
    position: absolute;
    inline-size: 1px;
    block-size: 1px;
    opacity: 0;
    pointer-events: none;
}

.cc-file-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 128px;
    width: 128px;
    max-width: 44%;
    min-height: 38px;
    padding: 0 16px;
    color: #FFFFFF !important;
    background: #303735;
    border: 1px solid #303735;
    border-radius: 7px;
    box-sizing: border-box;
    cursor: pointer;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1;
    margin: 0 !important;
    padding-block: 0 !important;
    text-align: center;
    white-space: nowrap;
}

.cc-order-upload .cc-file-button {
    display: inline-flex;
    margin: 0 !important;
}

.cc-file-name {
    min-width: 0;
    overflow: hidden;
    color: #68716E;
    font-size: var(--wp--preset--font-size--small);
    line-height: 1.3;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cc-file-control input[type="file"]:focus-visible + .cc-file-button {
    outline: 2px solid #C04F3D;
    outline-offset: 2px;
}

.cc-order-upload .cc-upload-hint {
    font-size: var(--wp--preset--font-size--tiny);
    line-height: 1.45;
    color: #747D7A;
    margin-top: 8px;
}

.cc-product-customizer {
    display: grid;
    gap: 16px;
    margin: 24px 0 0;
    padding: 20px;
    background: #ffffff;
    border: 1px solid #E2E8E5;
    border-radius: 8px;
}

.cc-product-customizer--area {
    gap: 7px;
    margin-top: 12px;
    padding: 12px;
}

.cc-product-customizer--area .cc-customizer-head {
    order: 1;
}

.cc-product-customizer--area .cc-customizer-fields {
    order: 2;
}

.cc-product-customizer--area .cc-customizer-total {
    order: 3;
}

.cc-customizer-head h3 {
    color: #303735;
    font-family: var(--wp--preset--font-family--jost);
    font-size: var(--wp--preset--font-size--body);
    font-weight: 700;
    line-height: 1.25;
    margin: 0 0 6px;
}

.cc-customizer-head p {
    color: #68716E;
    font-size: var(--wp--preset--font-size--tiny);
    line-height: 1.45;
    margin: 0;
}

.cc-customizer-fields {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.cc-product-customizer--area .cc-customizer-fields {
    gap: 5px 12px;
}

.cc-product-customizer--area .cc-field-width,
.cc-product-customizer--area .cc-field-height {
    grid-column: auto;
}

.cc-product-customizer--area .cc-field-quantity {
    grid-column: 1 / -1;
}

.cc-customizer-field {
    display: grid;
    gap: 4px;
}

.cc-customizer-field-wide {
    grid-column: 1 / -1;
}

.cc-customizer-field span,
.cc-customizer-label {
    color: #303735;
    font-size: var(--wp--preset--font-size--tiny);
    font-weight: 700;
}

.cc-customizer-field select,
.cc-customizer-field input[type="number"],
.cc-customizer-field textarea {
    width: 100%;
    min-height: 38px;
    padding: 6px 11px;
    color: #303735;
    background: #FBFDFC;
    border: 1px solid #DDE5E2;
    border-radius: 8px;
    font-family: var(--wp--preset--font-family--jost);
    font-size: var(--wp--preset--font-size--small);
    box-sizing: border-box;
}

.cc-number-control {
    display: flex;
    align-items: center;
    gap: 6px;
}

.cc-number-control input[type="number"] {
    flex: 1 1 auto;
}

.cc-number-control em {
    flex: 0 0 auto;
    min-width: 34px;
    color: #747D7A;
    font-size: var(--wp--preset--font-size--small);
    font-style: normal;
    font-weight: 600;
}

.cc-fixed-value {
    display: flex;
    align-items: center;
    min-height: 42px;
    padding: 8px 0;
    color: #4D5754;
    background: transparent;
    border: 0;
    border-top: 1px solid #E3E9E6;
    border-radius: 8px;
    box-sizing: border-box;
    font-size: var(--wp--preset--font-size--small);
    font-weight: 650;
}

.cc-customizer-field textarea {
    min-height: 88px;
    resize: vertical;
}

.cc-customizer-field select:focus,
.cc-customizer-field input[type="number"]:focus,
.cc-customizer-field textarea:focus {
    outline: none;
    border-color: #C04F3D;
    box-shadow: 0 0 0 3px rgba(192, 79, 61, 0.14);
}

.cc-customizer-total {
    display: grid;
    gap: 4px;
    padding: 10px 0 0;
    background: transparent;
    border-top: 1px solid #E3E9E6;
    border-radius: 8px;
}

.cc-customizer-total > div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    color: #68716E;
    font-size: var(--wp--preset--font-size--small);
}

.cc-customizer-total strong {
    color: #4D5A57;
    font-size: var(--wp--preset--font-size--body);
}

.cc-customizer-total .cc-grand-total {
    padding-top: 6px;
    border-top: 1px solid #DCE4E1;
    color: #303735;
    font-weight: 800;
}

.cc-customizer-total .cc-grand-total strong {
    color: #2F7D71;
    font-size: var(--wp--preset--font-size--price);
    font-weight: 800;
}

/* ---- Description 区域：全宽、减少上方空白 ---- */
.swp-single-product .wp-block-woocommerce-product-details {
    margin-top: 48px !important;
}

.swp-single-product .wp-block-woocommerce-product-details .wp-block-heading,
.swp-single-product .wp-block-woocommerce-product-details h2 {
    font-size: var(--wp--preset--font-size--h4);
    font-weight: 650;
    color: #303735;
    letter-spacing: 0;
    text-transform: none;
}

/* ---- Related：标题收敛、间距 ---- */
.swp-related {
    margin-top: 24px !important;
    padding-top: 72px !important;
}

.swp-related .wp-block-heading {
    font-size: var(--wp--preset--font-size--h2);
    line-height: 1.15;
    color: #303735;
    font-family: var(--wp--preset--font-family--jost);
    font-weight: 650;
}

/* ---- 移动端 ---- */
@media (max-width: 768px) {
    .swp-single-product .wp-block-columns {
        gap: 32px !important;
    }
    .wp-block-woocommerce-product-image-gallery {
        position: static;
        aspect-ratio: 1 / 1;
    }
    .swp-product-summary .wp-block-post-title {
        font-size: 36px;
    }
    .swp-product-summary form.cart {
        flex-wrap: nowrap;
    }
    .swp-product-summary .quantity input.qty {
        width: 54px;
    }
    .swp-product-summary .single_add_to_cart_button {
        min-width: 0;
    }
}

.swp-single-product .wp-block-woocommerce-product-meta {
    color: #68716E;
    font-size: var(--wp--preset--font-size--tiny);
}

.swp-single-product .wp-block-woocommerce-product-details {
    background: rgba(255, 255, 255, 0.62);
    border: 1px solid rgba(255, 255, 255, 0.86);
    border-radius: 18px;
    box-shadow: var(--swp-shadow-tile);
    padding: clamp(22px, 4vw, 34px);
}

.swp-single-product .wc-tabs-wrapper {
    margin: 0;
}

.swp-single-product .woocommerce-Tabs-panel {
    color: #62586c;
    line-height: 1.7;
}

.swp-related .wc-block-product-template {
    align-items: stretch;
}

/* ---- Price summary and cart controls refinement ---- */
.swp-product-summary form.cart {
    display: grid !important;
    grid-template-columns: 120px minmax(0, 1fr);
    gap: 16px 14px;
    align-items: end;
}

.swp-product-summary form.cart > p,
.swp-product-summary form.cart .cc-product-customizer {
    grid-column: 1 / -1;
}

.swp-product-summary form.cart .cc-product-customizer {
    order: 1;
}

.swp-product-summary form.cart > .cc-order-upload {
    grid-column: 1 / -1;
    order: 2;
}

.swp-product-summary form.cart .quantity {
    grid-column: 1;
    order: 3;
    width: 100%;
}

.swp-product-summary form.cart .single_add_to_cart_button {
    grid-column: 2;
    order: 3;
}

.swp-product-summary form.cart > p:has(.single_add_to_cart_button) {
    grid-column: 2;
    margin: 0;
    order: 3;
}

.swp-product-summary .quantity input.qty {
    width: 100% !important;
    max-width: none;
}

.swp-product-summary .single_add_to_cart_button.button,
.swp-product-summary .single_add_to_cart_button.wp-element-button {
    align-items: center;
    background: #C04F3D !important;
    background-image: none !important;
    border: 0 !important;
    border-radius: 10px !important;
    box-shadow: 0 16px 30px -16px rgba(48, 55, 53, 0.30) !important;
    color: #fff !important;
    display: inline-flex !important;
    font-family: var(--wp--preset--font-family--jost) !important;
    font-size: var(--wp--preset--font-size--button) !important;
    font-weight: 700 !important;
    height: 52px !important;
    justify-content: center;
    line-height: 1 !important;
    min-width: 0 !important;
    opacity: 1 !important;
    padding: 0 24px !important;
    text-indent: 0 !important;
    text-shadow: none !important;
    visibility: visible !important;
    width: 100% !important;
}

.swp-product-summary .single_add_to_cart_button.button:hover,
.swp-product-summary .single_add_to_cart_button.wp-element-button:hover {
    background: #A94334 !important;
}

@media (max-width: 640px) {
    .swp-product-summary form.cart {
        grid-template-columns: 86px minmax(0, 1fr);
    }

    .cc-customizer-fields {
        grid-template-columns: 1fr;
    }

    .cc-file-control {
        align-items: stretch;
        flex-direction: column;
    }

    .cc-file-button {
        width: 100%;
    }

    .cc-file-name {
        white-space: normal;
        word-break: break-word;
    }
}

/* ---- Clean custom-products homepage ---- */
.home .swp-panel {
    background: #ffffff;
    box-shadow: none;
}

.home .swp-hero {
    border-bottom: 1px solid #E1E8E5;
}

.home .swp-hero::before,
.home .swp-arch-wrap::after {
    display: none;
}

.home .swp-hero .wp-block-columns {
    min-height: 600px;
}

.home .swp-hero .wp-block-column:first-child {
    padding-top: clamp(36px, 6vw, 76px);
}

.home .swp-hero h1 {
    max-width: 560px;
}

.home .swp-hero .swp-lead {
    max-width: 560px;
    color: #5F6966;
}

.home .swp-hero-visual {
    display: flex;
    align-items: flex-start;
    justify-content: flex-end;
}

.home .swp-hero-visual .swp-arch-wrap {
    margin-inline: 0;
    max-width: 780px !important;
    width: 100% !important;
}

.home .swp-arch {
    border: 1px solid #E1E8E5;
    border-radius: 8px;
    box-shadow: none;
    overflow: hidden;
}

.home .swp-arch img {
    aspect-ratio: 5 / 4;
    border-radius: 0;
    height: auto;
    object-fit: cover;
    width: 100%;
}

.home .swp-hero-visual:hover .swp-arch img {
    transform: none;
}

.home .swp-bouquets {
    padding-top: 64px !important;
    padding-bottom: 64px !important;
}

.home .swp-section-head {
    align-items: flex-end;
    margin-bottom: 34px !important;
}

.post-16 .wc-block-components-product-image img,
.woocommerce ul.products li.product.post-16 a img {
    aspect-ratio: 4 / 3;
    background: #fff;
    object-fit: contain;
}

.post-17 .wc-block-components-product-image img,
.woocommerce ul.products li.product.post-17 a img {
    background: #fff;
    object-fit: cover;
}

.single-product.postid-17 .wp-block-woocommerce-product-image-gallery {
    background: #fff;
}

.single-product.postid-17 .wp-block-woocommerce-product-image-gallery img {
    background: #fff;
    box-sizing: border-box;
    object-fit: contain;
    padding: 0;
}

.swp-home-process {
    background: #F6F9F8;
    border-top: 1px solid #E1E8E5;
}

.swp-home-process-head h2 {
    max-width: 620px;
}

.swp-process-step {
    background: transparent;
    border-top: 1px solid #dcd5e4;
	min-height: 154px;
	padding-top: 20px !important;
}

.swp-process-number {
    color: #C04F3D;
	font-family: var(--fj-ui-font);
	font-size: 12px;
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	letter-spacing: 0;
	line-height: 1;
    margin: 0;
    text-transform: uppercase;
}

.swp-process-step h3 {
	font-family: var(--fj-ui-font);
	font-size: 22px;
	font-weight: 600;
	letter-spacing: 0;
	line-height: 1.2;
    margin: 0;
}

.swp-process-step p:not(.swp-process-number) {
    color: #68716E;
	font-family: var(--fj-ui-font);
    font-size: var(--wp--preset--font-size--small);
	font-weight: 400;
	letter-spacing: 0;
    line-height: 1.55;
	margin: 0;
	max-width: 31ch;
}

@media (max-width: 781px) {
	.swp-home-title-hero {
		font-size: 46px;
		line-height: 1.04;
	}

	.swp-home-title-section {
		font-size: 34px;
		line-height: 1.1;
	}

	.home .swp-hero .swp-lead,
	.home .swp-section-head .swp-lead {
		font-size: 16px;
		line-height: 1.58;
	}

	.swp-process-step h3 {
		font-size: 21px;
	}

    .home .swp-hero .wp-block-columns {
        min-height: 0;
    }

    .home .swp-hero .wp-block-column:first-child {
        padding-top: 0;
    }

    .home .swp-hero-visual {
        justify-content: flex-start;
    }

    .home .swp-section-head {
        align-items: flex-start;
    }
}

/* Square catalog images must remain fully visible. */
.single-product.postid-10 .wp-block-woocommerce-product-image-gallery,
.single-product.postid-14 .wp-block-woocommerce-product-image-gallery {
    aspect-ratio: 1 / 1;
    background: #fff;
}

.single-product.postid-10 .wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery,
.single-product.postid-14 .wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery {
    opacity: 1 !important;
}

.single-product.postid-10 .wp-block-woocommerce-product-image-gallery img,
.single-product.postid-14 .wp-block-woocommerce-product-image-gallery img {
    background: #fff;
    height: 100%;
    object-fit: contain;
    width: 100%;
}

/* Window perforated product detail page. */
.single-product.postid-16 {
    --wpd-action: #c04f3d;
    --wpd-action-hover: #a94334;
    --wpd-accent: #2f7d71;
    --wpd-ink: #303735;
    --wpd-muted: #68716e;
    --wpd-line: #dfe7e4;
    --wpd-surface: #f6f9f8;
    --wpd-price-font: var(--wp--preset--font-family--jost);
}

.single-product.postid-16 .swp-single-product .wc-block-breadcrumbs {
    font-size: 13px !important;
    margin-bottom: 32px !important;
}

.single-product.postid-16 .swp-single-product > .wp-block-columns {
    align-items: flex-start !important;
    gap: clamp(44px, 5vw, 72px) !important;
}

.single-product.postid-16 .swp-single-product > .wp-block-columns > .wp-block-column:first-child {
    flex-basis: 55% !important;
}

.single-product.postid-16 .swp-single-product > .wp-block-columns > .swp-product-summary {
    flex-basis: 45% !important;
}

.single-product.postid-16 .wp-block-woocommerce-product-image-gallery {
    aspect-ratio: 4 / 3;
    background: #fff;
    border-radius: 0;
    overflow: hidden;
    position: sticky;
    top: 96px;
}

.single-product.postid-16 .wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery,
.single-product.postid-16 .wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__wrapper,
.single-product.postid-16 .wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__image,
.single-product.postid-16 .wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__image > a {
    height: 100%;
}

.single-product.postid-16 .wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery {
    opacity: 1 !important;
}

.single-product.postid-16 .wp-block-woocommerce-product-image-gallery img {
    background: #fff;
    border-radius: 0;
    height: 100%;
    object-fit: contain;
    width: 100%;
}

.single-product.postid-16 .woocommerce-product-gallery__trigger {
    align-items: center !important;
    background: rgba(255, 255, 255, 0.94) !important;
    border: 1px solid var(--wpd-line) !important;
    border-radius: 50% !important;
    box-shadow: 0 6px 18px rgba(37, 35, 41, 0.08) !important;
    box-sizing: border-box !important;
    display: flex !important;
    font-size: 17px !important;
    height: 38px !important;
    justify-content: center !important;
    right: 14px !important;
    top: 14px !important;
    width: 38px !important;
}

.single-product.postid-16 .swp-product-summary .wp-block-post-title {
    color: var(--wpd-ink) !important;
    font-size: clamp(30px, 2.1vw, 36px) !important;
    font-weight: 650 !important;
    line-height: 1.12 !important;
    margin: 0 0 10px !important;
}

.single-product.postid-16 .swp-product-summary .wp-block-woocommerce-product-price,
.single-product.postid-16 .swp-product-summary .price,
.single-product.postid-16 .swp-product-summary .woocommerce-Price-amount {
    color: var(--wpd-accent) !important;
    font-family: var(--wpd-price-font) !important;
    font-size: clamp(22px, 1.35vw, 25px) !important;
    font-variant-numeric: tabular-nums;
    font-weight: 600 !important;
    line-height: 1.15 !important;
}

.single-product.postid-16 .swp-product-summary .wp-block-woocommerce-product-price,
.single-product.postid-16 .swp-product-summary .price {
    margin: 0 0 16px !important;
}

.single-product.postid-16 .swp-product-summary .wp-block-post-excerpt,
.single-product.postid-16 .swp-product-summary .wp-block-post-excerpt p {
    color: var(--wpd-muted) !important;
    font-size: 15px !important;
    line-height: 1.5 !important;
    margin: 0 !important;
}

.single-product.postid-16 .swp-product-summary form.cart {
    align-items: stretch !important;
    display: grid !important;
    gap: 12px !important;
    grid-template-columns: minmax(0, 1fr) !important;
    margin: 18px 0 0 !important;
    width: 100%;
}

.single-product.postid-16 .cc-product-customizer--area {
    background: #fff !important;
    border: 1px solid var(--wpd-line) !important;
    border-radius: 6px !important;
    box-shadow: none !important;
    display: grid !important;
    gap: 0 !important;
    margin: 0 !important;
    padding: 18px !important;
}

.single-product.postid-16 .cc-product-customizer--area > p:empty,
.single-product.postid-16 .cc-order-upload > p:empty,
.single-product.postid-16 .cc-customizer-field > p:empty {
    display: none !important;
    margin: 0 !important;
}

.single-product.postid-16 .cc-product-customizer--area > .cc-customizer-head {
    border-bottom: 1px solid var(--wpd-line);
    order: 0 !important;
    padding: 0 0 14px;
}

.single-product.postid-16 .cc-customizer-head h3 {
    color: var(--wpd-ink) !important;
    font-size: 18px !important;
    font-weight: 650 !important;
    line-height: 1.25 !important;
    margin: 0 !important;
}

.single-product.postid-16 .cc-customizer-head p {
    display: none !important;
}

.single-product.postid-16 .cc-product-customizer--area > .cc-order-upload {
    border-bottom: 1px solid var(--wpd-line);
    margin: 0 !important;
    order: 1 !important;
    padding: 14px 0 16px;
}

.single-product.postid-16 .cc-order-upload,
.single-product.postid-16 .cc-order-upload p {
    margin-block: 0 !important;
}

.single-product.postid-16 .cc-order-upload > label,
.single-product.postid-16 .cc-customizer-label {
    color: var(--wpd-ink) !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    line-height: 1.25 !important;
    margin: 0 !important;
}

.single-product.postid-16 .cc-order-upload > label {
    margin-bottom: 6px !important;
}

.single-product.postid-16 .cc-file-control {
    align-items: center !important;
    background: var(--wpd-surface) !important;
    border: 1px solid #dfe7e4 !important;
    border-radius: 6px !important;
    gap: 10px !important;
    min-height: 42px !important;
    padding: 4px !important;
}

.single-product.postid-16 .cc-file-control:hover {
    background: #fff !important;
    border-color: #c6d3cf !important;
}

.single-product.postid-16 .cc-file-button {
    background: var(--wpd-ink) !important;
    border-color: var(--wpd-ink) !important;
    border-radius: 5px !important;
    flex: 0 0 108px !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    min-height: 34px !important;
    padding: 0 14px !important;
    width: 108px !important;
}

.single-product.postid-16 .cc-file-name {
    color: #68716e !important;
    font-size: 13px !important;
    line-height: 1.25 !important;
}

.single-product.postid-16 .cc-order-upload .cc-upload-hint {
    color: #747d7a !important;
    font-size: 12.5px !important;
    line-height: 1.4 !important;
    margin-top: 6px !important;
}

.single-product.postid-16 .cc-product-customizer--area .cc-customizer-fields {
    border-bottom: 1px solid var(--wpd-line);
    display: grid !important;
    gap: 10px !important;
    grid-template-columns: minmax(0, 1fr) !important;
    order: 2 !important;
    padding: 16px 0;
}

.single-product.postid-16 .cc-customizer-field {
    align-items: center !important;
    display: grid !important;
    gap: 18px !important;
    grid-template-columns: 92px minmax(0, 1fr) !important;
    min-height: 40px;
    min-width: 0 !important;
}

.single-product.postid-16 .cc-product-customizer--area .cc-field-quantity {
    grid-column: 1 !important;
}

.single-product.postid-16 .cc-number-control {
    gap: 6px !important;
    min-width: 0 !important;
}

.single-product.postid-16 .cc-customizer-field input[type="number"] {
    background: #fff !important;
    border: 1px solid #d8e1de !important;
    border-radius: 6px !important;
    color: var(--wpd-ink) !important;
    font-size: 14px !important;
    min-height: 40px !important;
    padding: 6px 10px !important;
}

.single-product.postid-16 .cc-customizer-field input[type="number"]:focus {
    border-color: var(--wpd-accent) !important;
    box-shadow: 0 0 0 3px rgba(47, 125, 113, 0.12) !important;
}

.single-product.postid-16 .cc-number-control em {
    color: #747d7a !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    min-width: 18px !important;
}

.single-product.postid-16 .cc-product-customizer--area .cc-customizer-total {
    border: 0 !important;
    border-radius: 0 !important;
    display: grid !important;
    gap: 5px !important;
    order: 3 !important;
    padding: 14px 0 0 !important;
}

.single-product.postid-16 .cc-customizer-total > div {
    color: #68716e !important;
    font-family: var(--wpd-price-font) !important;
    font-size: 13px !important;
    line-height: 1.35 !important;
}

.single-product.postid-16 .cc-customizer-total strong {
    color: #4d5754 !important;
    font-family: var(--wpd-price-font) !important;
    font-size: 13.5px !important;
    font-variant-numeric: tabular-nums;
    font-weight: 600 !important;
}

.single-product.postid-16 .cc-customizer-total .cc-grand-total {
    border-top: 1px solid var(--wpd-line) !important;
    color: var(--wpd-ink) !important;
    font-family: var(--wpd-price-font) !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    margin-top: 5px !important;
    padding-top: 10px !important;
}

.single-product.postid-16 .cc-customizer-total .cc-grand-total strong {
    color: var(--wpd-accent) !important;
    font-size: 19px !important;
    font-weight: 600 !important;
}

.single-product.postid-16 .swp-product-summary form.cart > .quantity {
    display: none !important;
}

.single-product.postid-16 .swp-product-summary form.cart > p:has(.single_add_to_cart_button) {
    display: flex !important;
    grid-column: 1 !important;
    justify-content: flex-end !important;
    margin: 0 !important;
    width: 100% !important;
}

.single-product.postid-16 .swp-product-summary .single_add_to_cart_button.button,
.single-product.postid-16 .swp-product-summary .single_add_to_cart_button.wp-element-button {
    background: var(--wpd-action) !important;
    border: 0 !important;
    border-radius: 6px !important;
    box-shadow: 0 10px 22px -14px rgba(192, 79, 61, 0.48) !important;
    flex: 0 1 164px !important;
    font-size: 13.5px !important;
    font-weight: 650 !important;
    height: 40px !important;
    min-height: 40px !important;
    min-width: 0 !important;
    padding: 0 18px !important;
    width: 164px !important;
}

.single-product.postid-16 .swp-product-summary .single_add_to_cart_button.button:hover,
.single-product.postid-16 .swp-product-summary .single_add_to_cart_button.wp-element-button:hover {
    background: var(--wpd-action-hover) !important;
    box-shadow: 0 12px 24px -14px rgba(192, 79, 61, 0.52) !important;
    transform: translateY(-1px);
}

.single-product.postid-16 .swp-single-product .product_meta {
    color: #747d7a !important;
    font-size: 12px !important;
}

.single-product.postid-16 .swp-single-product .wp-block-woocommerce-product-details {
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    border-top: 1px solid var(--wpd-line) !important;
    box-shadow: none !important;
    margin-top: 72px !important;
    padding: 40px 0 0 !important;
}

.single-product.postid-16 .swp-single-product .woocommerce-tabs,
.single-product.postid-16 .swp-single-product .woocommerce-Tabs-panel {
    color: #5f6966 !important;
    font-size: 15px !important;
    line-height: 1.65 !important;
}

.single-product.postid-16 .swp-single-product .woocommerce-tabs ul.tabs {
    margin: 0 0 28px !important;
    padding: 0 !important;
}

.single-product.postid-16 .swp-single-product .woocommerce-tabs ul.tabs li a {
    font-size: 13.5px !important;
    font-weight: 600 !important;
}

.single-product.postid-16 .swp-single-product .woocommerce-Tabs-panel {
    max-width: 1040px;
}

.single-product.postid-16 .swp-single-product .woocommerce-Tabs-panel h2,
.single-product.postid-16 .swp-single-product .woocommerce-Tabs-panel h3 {
    color: var(--wpd-ink) !important;
    font-size: 17px !important;
    line-height: 1.35 !important;
    margin-bottom: 12px;
}

.single-product.postid-16 .swp-nav .wp-block-woocommerce-customer-account a,
.single-product.postid-16 .swp-nav .wc-block-mini-cart__button,
.single-product.postid-16 .swp-nav .wp-block-navigation__responsive-container-open {
    box-sizing: border-box !important;
    height: 40px !important;
    justify-content: center !important;
    min-height: 40px !important;
    min-width: 40px !important;
    padding: 0 !important;
    width: 40px !important;
}

.single-product.postid-16 .swp-nav .wc-block-customer-account__account-icon,
.single-product.postid-16 .swp-nav .wc-block-mini-cart__quantity-badge svg {
    height: 18px !important;
    width: 18px !important;
}

.logged-in.single-product.postid-16 .swp-nav .wp-block-woocommerce-customer-account a {
    gap: 6px !important;
    padding: 0 12px !important;
    width: auto !important;
}

@media (max-width: 960px) {
    .single-product.postid-16 .swp-single-product > .wp-block-columns {
        flex-wrap: wrap !important;
        gap: 34px !important;
    }

    .single-product.postid-16 .swp-single-product > .wp-block-columns > .wp-block-column:first-child,
    .single-product.postid-16 .swp-single-product > .wp-block-columns > .swp-product-summary {
        flex-basis: 100% !important;
        width: 100% !important;
    }

    .single-product.postid-16 .wp-block-woocommerce-product-image-gallery {
        position: static;
    }
}

@media (max-width: 640px) {
    .single-product.postid-16 .swp-single-product {
        padding-top: 34px !important;
    }

    .single-product.postid-16 .swp-single-product .wc-block-breadcrumbs {
        margin-bottom: 24px !important;
    }

    .single-product.postid-16 .swp-product-summary .wp-block-post-title,
    .single-product.postid-16 .swp-product-summary .wp-block-woocommerce-product-price {
        display: block !important;
        opacity: 1 !important;
        position: static !important;
        visibility: visible !important;
    }

    .single-product.postid-16 .swp-product-summary .wp-block-post-title {
        font-size: 28px !important;
    }

    .single-product.postid-16 .swp-product-summary .wp-block-woocommerce-product-price,
    .single-product.postid-16 .swp-product-summary .woocommerce-Price-amount {
        font-size: 21px !important;
    }

    .single-product.postid-16 .swp-product-summary,
    .single-product.postid-16 .swp-product-summary form.cart,
    .single-product.postid-16 .cc-product-customizer--area {
        box-sizing: border-box !important;
        max-width: 100% !important;
        min-width: 0 !important;
        width: 100% !important;
    }

    .single-product.postid-16 .cc-product-customizer--area {
        padding: 14px !important;
    }

    .single-product.postid-16 .cc-customizer-field {
        gap: 12px !important;
        grid-template-columns: 78px minmax(0, 1fr) !important;
    }

    .single-product.postid-16 .cc-file-control {
        align-items: center !important;
        flex-direction: row !important;
        min-width: 0 !important;
    }

    .single-product.postid-16 .cc-file-button {
        flex-basis: 104px !important;
        max-width: 42% !important;
        width: 104px !important;
    }

    .single-product.postid-16 .swp-product-summary .single_add_to_cart_button.button,
    .single-product.postid-16 .swp-product-summary .single_add_to_cart_button.wp-element-button {
        flex-basis: 164px !important;
        width: 164px !important;
    }

    .single-product.postid-16 .swp-single-product .wp-block-woocommerce-product-details {
        margin-top: 56px !important;
        padding-top: 32px !important;
    }
}

/* ==========================================================================
   20. FORMAJOY VISUAL HIERARCHY
   ========================================================================== */

:root {
	--fj-canvas: #f6f9f8;
	--fj-surface: #ffffff;
	--fj-text: #303735;
	--fj-body: #3f4745;
	--fj-muted: #68716e;
	--fj-border: #dfe7e4;
	--fj-border-strong: #ccd8d4;
	--fj-coral: #c04f3d;
	--fj-coral-hover: #a94334;
	--fj-coral-soft: #fff2ee;
	--fj-green: #2f7d71;
	--fj-green-hover: #25685f;
	--fj-green-soft: #eaf5f1;
	--fj-shadow-hover: 0 22px 44px -24px rgba(48, 55, 53, 0.3);
}

body {
	--wp--preset--color--plum: #303735;
	--wp--preset--color--ink: #68716e;
	--wp--preset--color--orchid: #e77862;
	--wp--preset--color--orchid-deep: #c04f3d;
	--wp--preset--color--rose: #aad9cd;
	--wp--preset--color--rose-deep: #2f7d71;
	--wp--preset--color--petal: #eaf5f1;
	--wp--preset--color--blush: #fff2ee;
	--wp--preset--color--lavender: #f0f6f4;
	--wp--preset--color--cream: #fcfdfc;
	--wp--preset--color--sky: #f6f9f8;
	--wp--preset--gradient--orchid-gradient: #c04f3d;
	--wp--preset--gradient--subscription: #303735;
	color: var(--fj-body);
}

.swp-hero .wp-block-button:not(.is-style-outline) > .wp-block-button__link {
	background: var(--fj-coral);
	background-image: none;
	color: #fff;
}

.swp-hero .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover {
	background: var(--fj-coral-hover);
}

.swp-panel,
.wp-block-group.is-style-glass-panel { border-color: var(--fj-border); }

.swp-italic {
	color: var(--fj-coral);
	font-weight: 520;
}

.wp-block-button__link,
.woocommerce .button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.wc-block-components-button:not(.is-link) { transition-duration: 180ms; }

.wp-block-button__link:hover,
.woocommerce .button:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.wc-block-components-button:not(.is-link):hover {
	box-shadow: 0 14px 26px -16px rgba(192, 79, 61, 0.48);
	transform: translateY(-1px);
}

.wp-block-button.is-style-outline > .wp-block-button__link,
.wp-block-button.is-style-outline > .wp-block-button__link:not(.has-text-color) {
	background: var(--fj-surface);
	border-color: rgba(192, 79, 61, 0.36);
	color: var(--fj-coral);
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--fj-coral-soft);
	border-color: var(--fj-coral);
	color: var(--fj-coral-hover);
}

.swp-nav {
	background: rgba(255, 255, 255, 0.9);
	border-bottom-color: var(--fj-border);
}

.swp-nav .wp-block-navigation .wp-block-navigation-item__content::after { background: var(--fj-coral); }

.swp-nav .wp-block-woocommerce-customer-account a,
.swp-nav .wc-block-mini-cart__button {
	border-color: var(--fj-border-strong);
	color: var(--fj-text);
}

.swp-nav .wp-block-woocommerce-customer-account a:hover,
.swp-nav .wc-block-mini-cart__button:hover {
	background: var(--fj-green-soft);
	border-color: var(--fj-green);
	color: var(--fj-green);
}

.swp-nav .wc-block-mini-cart__badge { background: var(--fj-coral); }

.wc-block-product-template__responsive-wrapper .wc-block-product,
li.wc-block-product,
.woocommerce ul.products li.product {
	border-color: var(--fj-border);
	border-radius: 8px;
	box-shadow: none;
	transition-duration: 180ms;
}

li.wc-block-product:hover,
.woocommerce ul.products li.product:hover {
	border-color: var(--fj-border-strong);
	box-shadow: var(--fj-shadow-hover);
	transform: translateY(-2px);
}

li.wc-block-product .wc-block-components-product-image,
.woocommerce ul.products li.product a img { background: var(--fj-canvas); }

li.wc-block-product .wp-block-post-title,
.woocommerce ul.products li.product .woocommerce-loop-product__title {
	color: var(--fj-text);
	font-size: 17px;
	font-weight: 620;
	line-height: 1.3;
}

li.wc-block-product .wp-block-woocommerce-product-summary,
li.wc-block-product .wc-block-components-product-summary {
	color: var(--fj-muted);
	line-height: 1.5;
}

li.wc-block-product .wc-block-components-product-price,
.woocommerce ul.products li.product .price {
	color: var(--fj-green);
	font-size: 20px;
	font-weight: 620;
	line-height: 1.2;
}
li.wc-block-product .woocommerce-Price-amount,
.woocommerce ul.products li.product .woocommerce-Price-amount {
	color: inherit !important;
	font-size: inherit;
	font-weight: inherit;
}

.swp-product-summary .wp-block-post-title {
	color: var(--fj-text);
	font-size: 40px;
	font-weight: 620;
}

.swp-product-summary .price,
.swp-product-summary .woocommerce-Price-amount {
	color: var(--fj-green) !important;
	font-size: 21px;
	font-weight: 620;
}

.cc-customizer-total strong,
.cc-customizer-total .cc-grand-total strong { font-weight: 620; }
.cc-customizer-total .cc-grand-total strong { color: var(--fj-green); }

.swp-product-summary .single_add_to_cart_button.button,
.swp-product-summary .single_add_to_cart_button.wp-element-button {
	background: var(--fj-coral) !important;
	box-shadow: 0 12px 24px -15px rgba(192, 79, 61, 0.48) !important;
	font-weight: 650 !important;
	height: 48px !important;
	min-height: 48px !important;
}

.swp-product-summary .quantity input.qty {
	height: 48px !important;
	min-height: 48px !important;
}

.swp-product-summary .single_add_to_cart_button.button:hover,
.swp-product-summary .single_add_to_cart_button.wp-element-button:hover { background: var(--fj-coral-hover) !important; }

.swp-footer {
	background: var(--fj-canvas);
	border-top: 1px solid var(--fj-border);
}

.swp-footer .swp-foot-h {
	color: var(--fj-text);
	font-weight: 650;
}

.swp-foot-links a,
.swp-foot-contact { color: var(--fj-muted); }
.swp-foot-links a:hover { color: var(--fj-coral); }

.swp-home-process {
	background: var(--fj-canvas);
	border-color: var(--fj-border);
}

.swp-process-step { border-color: var(--fj-border-strong); }
.swp-process-number { color: var(--fj-coral); }

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline-color: var(--fj-green); }

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
	}
}

@media (max-width: 781px) {
	.swp-product-summary .wp-block-post-title { font-size: 32px; }

	.swp-nav.wp-block-group {
		flex-wrap: nowrap !important;
		gap: 10px;
		padding-bottom: 12px !important;
		padding-top: 12px !important;
	}

	.swp-nav > .swp-logo {
		flex: 0 1 132px;
		min-width: 112px;
	}

	.swp-nav .swp-logo-mark,
	.swp-nav .swp-logo-mark img {
		width: 42px !important;
	}

	.swp-nav > .wp-block-woocommerce-customer-account,
	.swp-nav > .wp-block-woocommerce-mini-cart,
	.swp-nav > .wp-block-navigation {
		flex: 0 0 40px;
		width: 40px;
	}

	.swp-nav .wp-block-woocommerce-customer-account a,
	.swp-nav .wc-block-mini-cart__button,
	.swp-nav .wp-block-navigation__responsive-container-open {
		box-sizing: border-box;
		height: 40px;
		justify-content: center;
		min-width: 40px;
		padding: 0;
		width: 40px;
	}
}
/* Contact form */
.cc-contact-form {
	margin-top: 30px;
	max-width: 780px;
}

.cc-contact-grid {
	display: grid;
	gap: 18px 20px;
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.cc-contact-field {
	display: grid;
	gap: 7px;
}

.cc-contact-field-wide {
	grid-column: 1 / -1;
}

.cc-contact-field > span {
	color: var(--fj-text);
	font-size: 14px;
	font-weight: 620;
}

.cc-contact-field input,
.cc-contact-field select,
.cc-contact-field textarea {
	background: #fff;
	border: 1px solid var(--fj-border-strong);
	border-radius: 7px;
	box-sizing: border-box;
	color: var(--fj-text);
	font: inherit;
	min-height: 46px;
	padding: 10px 12px;
	width: 100%;
}

.cc-contact-field textarea {
	line-height: 1.5;
	resize: vertical;
}

.cc-contact-field input:focus,
.cc-contact-field select:focus,
.cc-contact-field textarea:focus {
	border-color: var(--fj-green);
	box-shadow: 0 0 0 3px rgba(47, 125, 113, 0.12);
	outline: 0;
}

.cc-contact-submit {
	background: var(--fj-coral);
	border: 0;
	border-radius: 999px;
	color: #fff;
	cursor: pointer;
	font: inherit;
	font-size: 14.5px;
	font-weight: 650;
	margin-top: 20px;
	min-height: 48px;
	padding: 0 28px;
}

.cc-contact-submit:hover {
	background: var(--fj-coral-hover);
}

.cc-contact-trap {
	height: 1px;
	left: -10000px;
	overflow: hidden;
	position: absolute;
	width: 1px;
}

.cc-contact-status {
	margin-bottom: 20px;
	max-width: 780px;
}

@media (max-width: 640px) {
	.cc-contact-grid {
		grid-template-columns: 1fr;
	}

	.cc-contact-field-wide {
		grid-column: auto;
	}
}

/* Shared catalog cards used by the homepage and product archive. */
.single-product .swp-product-summary > .swp-eyebrow-terms {
	display: none !important;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) .wc-block-product-template {
	gap: 22px;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product {
	--fj-card-image-scale: 0.96;
	background: var(--fj-surface);
	border: 1px solid var(--fj-border);
	border-radius: 6px;
	box-shadow: none;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	padding: 0;
	transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product:hover {
	border-color: var(--fj-border-strong);
	box-shadow: 0 18px 42px rgba(49, 40, 58, 0.08);
	transform: translateY(-2px);
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .wc-block-components-product-image {
	aspect-ratio: 1 / 1;
	background: var(--fj-surface);
	margin: 0 0 20px;
	overflow: hidden;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .wc-block-components-product-image > a {
	display: block;
	height: 100%;
	width: 100%;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .wc-block-components-product-image img {
	aspect-ratio: auto !important;
	height: 100% !important;
	object-fit: contain !important;
	transform: scale(var(--fj-card-image-scale)) !important;
	transform-origin: center;
	width: 100% !important;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product:hover .wc-block-components-product-image img {
	transform: scale(var(--fj-card-image-scale)) !important;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .wp-block-post-title,
:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .wp-block-woocommerce-product-summary {
	padding-left: 20px;
	padding-right: 20px;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .wp-block-post-title {
	font-family: var(--fj-ui-font);
	font-size: 18px;
	font-weight: 600;
	letter-spacing: 0;
	line-height: 1.28;
	margin-bottom: 7px !important;
	min-height: 46px;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .wp-block-post-title a {
	color: var(--fj-text);
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .wp-block-woocommerce-product-summary,
:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .wc-block-components-product-summary {
	color: var(--fj-muted);
	font-family: var(--fj-ui-font);
	font-size: 14px !important;
	font-weight: 400;
	letter-spacing: 0;
	line-height: 1.45;
	min-height: 41px;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .wc-block-components-product-summary p {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	margin: 0;
	overflow: hidden;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .swp-bq-foot {
	align-items: center;
	border-top: 1px solid var(--fj-border);
	display: flex;
	justify-content: space-between;
	margin-top: auto !important;
	padding: 15px 20px 20px !important;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .swp-bq-foot > * {
	margin: 0;
	padding: 0;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product .wc-block-components-product-price {
	color: var(--fj-green);
	font-family: var(--fj-ui-font);
	font-size: 18px;
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	letter-spacing: 0;
	line-height: 1.2;
	margin: 0;
}

body .wp-block-woocommerce-product-collection .swp-bq-foot > .cc-customize-product-link {
	align-items: center;
	background-color: var(--fj-green) !important;
	background-image: none !important;
	border: 1px solid var(--fj-green) !important;
	border-radius: 7px !important;
	box-shadow: none !important;
	box-sizing: border-box;
	color: #fff !important;
	display: inline-flex;
	font-family: var(--fj-ui-font);
	font-size: 13.5px;
	font-weight: 600;
	height: 38px;
	justify-content: center;
	letter-spacing: 0;
	line-height: 1;
	min-width: 88px;
	padding: 0 15px;
	transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease;
}

body .wp-block-woocommerce-product-collection .swp-bq-foot > .cc-customize-product-link:hover {
	background-color: var(--fj-green-hover) !important;
	border-color: var(--fj-green-hover) !important;
	box-shadow: none !important;
	color: #fff !important;
	transform: translateY(-1px) !important;
}

body .wp-block-woocommerce-product-collection .swp-bq-foot > .cc-customize-product-link:focus-visible {
	outline: 2px solid var(--fj-coral);
	outline-offset: 3px;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product.post-103,
:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product.post-92 {
	--fj-card-image-scale: 0.98;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product.post-90,
:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product.post-10 {
	--fj-card-image-scale: 0.90;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product.post-17 {
	--fj-card-image-scale: 1.035;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product.post-16 {
	--fj-card-image-scale: 1.05;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product.post-14 {
	--fj-card-image-scale: 0.93;
}

:where(.swp-product-card-grid, .wp-block-woocommerce-product-collection) li.wc-block-product.post-112 {
	--fj-card-image-scale: 0.90;
}

/* Header product search. */
.fj-product-search {
	align-items: center;
	background: var(--fj-surface);
	border: 1px solid var(--fj-border-strong);
	border-radius: 999px;
	box-sizing: border-box;
	display: flex;
	flex: 0 1 212px;
	height: 40px;
	margin: 0;
	max-width: 230px;
	min-width: 176px;
	overflow: hidden;
	transition: border-color 180ms ease, box-shadow 180ms ease, max-width 180ms ease;
}

body:not(.home) .fj-product-search {
	display: none;
}

.fj-product-search:focus-within {
	border-color: var(--fj-green);
	box-shadow: 0 0 0 3px rgba(47, 125, 113, 0.12);
	max-width: 250px;
}

.fj-product-search input[type="search"] {
	appearance: none;
	background: transparent;
	border: 0;
	box-shadow: none;
	box-sizing: border-box;
	color: var(--fj-text);
	flex: 1 1 auto;
	font-family: inherit;
	font-size: 14px;
	font-weight: 450;
	height: 38px;
	letter-spacing: 0;
	line-height: 1.2;
	margin: 0;
	min-width: 0;
	outline: 0;
	padding: 0 4px 0 16px;
}

.fj-product-search input[type="search"]::-webkit-search-cancel-button {
	cursor: pointer;
}

.fj-product-search input[type="search"]::placeholder {
	color: var(--fj-muted);
	opacity: 0.9;
}

.fj-product-search-type {
	display: none;
}

.fj-product-search button {
	align-items: center;
	align-self: stretch;
	background: transparent;
	border: 0;
	border-radius: 50%;
	color: var(--fj-text);
	cursor: pointer;
	display: inline-flex;
	flex: 0 0 40px;
	height: 38px;
	justify-content: center;
	margin: 0;
	padding: 0;
	transition: background 180ms ease, color 180ms ease;
	width: 40px;
}

.fj-product-search button:hover {
	background: var(--fj-green-soft);
	color: var(--fj-green);
}

.fj-product-search button .dashicons {
	font-size: 18px;
	height: 18px;
	line-height: 18px;
	width: 18px;
}

@media (max-width: 1199px) {
	.swp-header .swp-nav > .fj-product-search {
		order: 1;
	}
}

@media (max-width: 781px) {
	.swp-nav.wp-block-group {
		flex-wrap: wrap !important;
	}

	.swp-header .swp-nav > .fj-product-search {
		flex: 1 0 100%;
		max-width: none;
		min-width: 0;
		order: 6;
		width: 100%;
	}

	.fj-product-search:focus-within {
		max-width: none;
	}
}
