/*
Theme Name: Crafty Barmaid
Theme URI: https://craftybarmaid.com
Author: Thobias Romu
Author URI: https://craftybarmaid.com
Description: Site-specific block theme for Crafty Barmaid: projects, printables, parties and a digital shop.
Requires at least: 6.8
Tested up to: 7.1
Requires PHP: 8.1
Version: 0.2.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: craftybarmaid
Tags: full-site-editing, block-themes, block-patterns, wide-blocks, custom-colors, custom-typography, accessibility-ready
*/

/*
 * Global foundations
 */

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

html {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

body {
	min-width: 320px;
	margin: 0;
	overflow-wrap: break-word;
	--crafty-radius-small: 3px;
	--crafty-radius-medium: 6px;
	--crafty-image-transition: 180ms ease-out;
	--crafty-product-carousel-button-background: var( --wp--preset--color--primary, #8a2c4c );
	--crafty-product-carousel-button-color: var( --wp--preset--color--on-primary, #fff );
	--crafty-product-carousel-button-background-hover: var( --wp--preset--color--contrast, #292724 );
	--crafty-product-carousel-button-color-hover: var( --wp--preset--color--surface, #fff );
	--crafty-product-carousel-button-radius: 4px;
	--crafty-product-carousel-dot-color: var( --wp--preset--color--muted, #625d57 );
	--crafty-product-carousel-dot-active-color: var( --wp--preset--color--primary, #8a2c4c );
	--crafty-product-carousel-arrow-background: var( --wp--preset--color--surface, #fff );
	--crafty-product-carousel-arrow-color: var( --wp--preset--color--contrast, #292724 );
	--crafty-post-grid-gap: var( --wp--preset--spacing--40, 2rem );
	--crafty-post-grid-content-gap: var( --wp--preset--spacing--20, 0.75rem );
}

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

button,
input,
select,
textarea {
	font: inherit;
}

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var( --wp--preset--color--focus, #245a81 );
	outline-offset: 3px;
	box-shadow: 0 0 0 2px var( --wp--preset--color--base, #faf9f6 );
}

::selection {
	background: var( --wp--preset--color--primary-soft, #f6e7ec );
	color: var( --wp--preset--color--contrast, #292724 );
}

.wp-site-blocks {
	min-height: 100vh;
}

.crafty-main {
	padding-block: clamp( 3rem, 7vw, 5.5rem );
}

.crafty-main > :first-child,
.crafty-main > .woocommerce > :first-child {
	margin-block-start: 0;
}

.crafty-main > :last-child,
.crafty-main > .woocommerce > :last-child {
	margin-block-end: 0;
}

/*
 * Shared links and buttons
 */

:where(.wp-site-blocks main p, .wp-site-blocks main li) > a {
	text-decoration-thickness: 0.08em;
	text-underline-offset: 0.15em;
}

:where(.wp-element-button, .wp-block-button__link) {
	display: inline-flex;
	min-height: 44px;
	align-items: center;
	justify-content: center;
	text-decoration: none;
}

.wp-block-button.is-style-outline > .wp-block-button__link {
	border: 1px solid var( --wp--preset--color--control-border, #827b73 );
	background: transparent;
	color: var( --wp--preset--color--contrast, #292724 );
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	border-color: var( --wp--preset--color--primary, #8a2c4c );
	background: var( --wp--preset--color--primary-soft, #f6e7ec );
	color: var( --wp--preset--color--contrast, #292724 );
}

/*
 * Header and navigation
 */

.crafty-site-header {
	position: relative;
	z-index: 20;
	border-bottom: 1px solid var( --wp--preset--color--border, #d8d2ca );
	background: var( --wp--preset--color--base, #faf9f6 );
}

.crafty-site-header__identity-row {
	min-height: 6.5rem;
	padding-block: var( --wp--preset--spacing--30, 1.25rem );
}

.crafty-site-header .wp-block-site-title {
	margin: 0;
}

.crafty-site-header .wp-block-site-title a {
	color: var( --wp--preset--color--contrast, #292724 );
	text-decoration: none;
}

.crafty-site-header .wp-block-site-title a:hover {
	color: var( --wp--preset--color--primary, #8a2c4c );
}

.crafty-site-header__utilities {
	gap: var( --wp--preset--spacing--30, 1.25rem );
}

.crafty-header-search {
	min-width: min( 15rem, 30vw );
}

.crafty-header-search .wp-block-search__inside-wrapper {
	padding: 0;
	border: 0;
	border-bottom: 1px solid var( --wp--preset--color--control-border, #827b73 );
	background: transparent;
}

.crafty-header-search .wp-block-search__input {
	min-width: 0;
	min-height: 44px;
	padding: 0.5rem 0.25rem;
	border: 0;
	background: transparent;
	color: inherit;
}

.crafty-header-search .wp-block-search__input::placeholder {
	color: var( --wp--preset--color--muted, #625d57 );
	opacity: 1;
}

.crafty-header-search .wp-block-search__button {
	min-width: 44px;
	min-height: 44px;
	margin: 0;
	padding: 0.6rem;
	border: 0;
	background: transparent;
	color: var( --wp--preset--color--contrast, #292724 );
}

.crafty-header-search .wp-block-search__button:hover {
	background: var( --wp--preset--color--primary-soft, #f6e7ec );
	color: var( --wp--preset--color--contrast, #292724 );
}

.crafty-header-cart {
	margin: 0;
	font-size: var( --wp--preset--font-size--small, 0.9375rem );
	font-weight: 600;
	white-space: nowrap;
}

.crafty-header-cart a {
	display: inline-flex;
	min-height: 44px;
	align-items: center;
	color: var( --wp--preset--color--contrast, #292724 );
	text-decoration: none;
}

.crafty-header-cart a:hover {
	color: var( --wp--preset--color--primary, #8a2c4c );
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.crafty-site-header__navigation-row {
	min-height: 3.5rem;
	border-top: 1px solid var( --wp--preset--color--border, #d8d2ca );
}

.crafty-primary-navigation {
	width: 100%;
}

.crafty-primary-navigation .wp-block-navigation__container {
	column-gap: clamp( 1.25rem, 3vw, 2.75rem );
}

.crafty-primary-navigation .wp-block-navigation-item__content {
	padding-block: 0.9rem;
	color: var( --wp--preset--color--contrast, #292724 );
	text-decoration: none;
}

.crafty-primary-navigation .wp-block-navigation-item__content:hover,
.crafty-primary-navigation .current-menu-ancestor > .wp-block-navigation-item__content,
.crafty-primary-navigation [aria-current="page"] {
	color: var( --wp--preset--color--primary, #8a2c4c );
	text-decoration: underline;
	text-decoration-thickness: 0.12em;
	text-underline-offset: 0.35em;
}

.crafty-primary-navigation .wp-block-navigation__submenu-container {
	min-width: 15rem;
	padding: 0.4rem 1rem;
	border: 1px solid var( --wp--preset--color--border, #d8d2ca );
	background: var( --wp--preset--color--surface, #fff );
	box-shadow: 0 0.75rem 2rem rgba( 41, 39, 36, 0.08 );
}

.crafty-primary-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 0.65rem 0;
}

.crafty-primary-navigation .wp-block-navigation-submenu__toggle {
	min-height: 44px;
	border-radius: 2px;
}

.crafty-primary-navigation .wp-block-navigation__responsive-container-open,
.crafty-primary-navigation .wp-block-navigation__responsive-container-close {
	min-width: 44px;
	min-height: 44px;
	align-items: center;
	justify-content: center;
	border-radius: 4px;
}

.crafty-primary-navigation .wp-block-navigation__responsive-container-open:hover,
.crafty-primary-navigation .wp-block-navigation__responsive-container-close:hover {
	background: var( --wp--preset--color--primary-soft, #f6e7ec );
}

.crafty-primary-navigation .wp-block-navigation__responsive-container.is-menu-open {
	padding: clamp( 1.25rem, 5vw, 2rem );
	background: var( --wp--preset--color--base, #faf9f6 );
	color: var( --wp--preset--color--contrast, #292724 );
}

.crafty-primary-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	width: 100%;
	min-height: 44px;
	padding-block: 0.65rem;
	font-size: 1.125rem;
}

.crafty-primary-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	padding: 0 0 0 1rem;
	border: 0;
	box-shadow: none;
}

/*
 * Homepage
 */

.crafty-home {
	padding-block: 0;
}

.crafty-home-intro {
	padding-block: clamp( 3.5rem, 8vw, 6.5rem ) clamp( 2.5rem, 5vw, 3.5rem );
	background: var( --wp--preset--color--base, #faf9f6 );
}

.crafty-home-intro__inner {
	gap: var( --wp--preset--spacing--30, 1.25rem );
}

.crafty-home-intro h1 {
	max-width: 15ch;
	margin-inline: auto;
}

.crafty-home-intro__lead {
	max-width: 48ch;
	margin-inline: auto;
	color: var( --wp--preset--color--muted, #625d57 );
}

.crafty-topic-links {
	margin-block-start: var( --wp--preset--spacing--40, 2rem );
	gap: 0.75rem;
}

.crafty-home-feed {
	padding-block: clamp( 2.5rem, 6vw, 5rem );
}

.crafty-home-feed > h2 {
	margin-block-end: var( --wp--preset--spacing--40, 2rem );
}

.crafty-home-shop {
	padding-block: clamp( 3rem, 7vw, 5rem );
}

.crafty-home-shop h2,
.crafty-home-shop p {
	margin-block: 0;
}

/*
 * Editorial listings
 */

.crafty-listing .wp-block-post-template {
	gap: clamp( 2rem, 5vw, 4rem ) clamp( 1.25rem, 3vw, 2rem );
}

.crafty-listing .wp-block-post {
	min-width: 0;
}

.crafty-listing__image {
	margin: 0 0 var( --wp--preset--spacing--20, 0.75rem );
	overflow: hidden;
	border-radius: var( --crafty-radius-small );
	background: var( --wp--preset--color--secondary, #f0ede7 );
}

.crafty-listing__image img {
	transition: transform var( --crafty-image-transition );
}

.crafty-listing__image a:hover img {
	transform: scale( 1.015 );
}

.crafty-listing__terms {
	margin: 0 0 0.35rem;
	color: var( --wp--preset--color--primary, #8a2c4c );
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.035em;
	line-height: 1.4;
	text-transform: uppercase;
}

.crafty-listing__terms a {
	text-decoration: none;
}

.crafty-listing__terms a:hover {
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.crafty-listing .wp-block-post-title {
	margin-block: 0;
}

.crafty-listing .wp-block-post-title a {
	color: var( --wp--preset--color--contrast, #292724 );
	text-decoration: none;
}

.crafty-listing .wp-block-post-title a:hover {
	color: var( --wp--preset--color--primary, #8a2c4c );
	text-decoration: underline;
	text-decoration-thickness: 0.08em;
	text-underline-offset: 0.12em;
}

.crafty-listing .wp-block-post-excerpt {
	margin-block-start: 0.65rem;
}

.crafty-listing .wp-block-post-excerpt__excerpt {
	margin: 0;
	color: var( --wp--preset--color--muted, #625d57 );
}

.crafty-listing .wp-block-post-excerpt__more-text {
	margin-block-start: 0.75rem;
	font-size: var( --wp--preset--font-size--small, 0.9375rem );
	font-weight: 600;
}

.crafty-listing .wp-block-query-pagination {
	margin-block-start: clamp( 3rem, 7vw, 5rem );
	padding-block-start: var( --wp--preset--spacing--30, 1.25rem );
	border-top: 1px solid var( --wp--preset--color--border, #d8d2ca );
}

.crafty-listing .page-numbers,
.crafty-listing .wp-block-query-pagination-previous,
.crafty-listing .wp-block-query-pagination-next {
	padding: 0.25rem;
	font-size: var( --wp--preset--font-size--small, 0.9375rem );
	font-weight: 600;
}

.crafty-search-list .wp-block-post-template {
	margin: 0;
	padding: 0;
}

.crafty-search-list__item {
	padding-block: var( --wp--preset--spacing--30, 1.25rem );
	border-top: 1px solid var( --wp--preset--color--border, #d8d2ca );
}

.crafty-search-list__item:first-child {
	margin-block-start: var( --wp--preset--spacing--20, 0.75rem );
}

.crafty-search-list__item .wp-block-post-title {
	margin-block: 0;
}

.crafty-search-list__content-type {
	margin-block: 0 0 0.35rem;
}

.crafty-search-list__item .wc-block-components-product-price {
	margin-block: 0.5rem 0;
	color: var( --wp--preset--color--contrast, #292724 );
	font-weight: 600;
}

.crafty-search-list__item .wp-block-post-title a {
	color: var( --wp--preset--color--contrast, #292724 );
	text-decoration: none;
}

.crafty-search-list__item .wp-block-post-title a:hover {
	color: var( --wp--preset--color--primary, #8a2c4c );
	text-decoration: underline;
	text-underline-offset: 0.12em;
}

.crafty-search-list .wp-block-query-pagination {
	margin-block-start: var( --wp--preset--spacing--40, 2rem );
}

.crafty-listing--home .wp-block-post-template > li:first-child {
	grid-column: span 2;
}

.crafty-listing--home .wp-block-post-template > li:first-child .wp-block-post-title {
	font-size: var( --wp--preset--font-size--x-large, 2.125rem ) !important;
}

/*
 * Article
 */

.crafty-article {
	padding-block-start: clamp( 3.5rem, 8vw, 6.5rem );
}

.crafty-page > .wp-block-post-title,
.crafty-not-found > h1 {
	margin-block: 0 clamp( 2rem, 5vw, 3.5rem );
}

.crafty-not-found {
	min-height: 55vh;
}

.crafty-not-found > p {
	max-width: 52ch;
}

.crafty-article__header {
	margin-block-end: clamp( 2.5rem, 6vw, 4rem );
}

.crafty-article__topics {
	margin-block-end: 0.75rem;
	color: var( --wp--preset--color--primary, #8a2c4c );
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.035em;
	line-height: 1.4;
	text-transform: uppercase;
}

.crafty-article__topics a {
	text-decoration: none;
}

.crafty-article__header .wp-block-post-title {
	margin-block: 0;
}

.crafty-article__meta {
	gap: 0.35rem 0.6rem;
	margin-block-start: 1rem;
	color: var( --wp--preset--color--muted, #625d57 );
	font-size: var( --wp--preset--font-size--small, 0.9375rem );
}

.crafty-article__meta > * {
	margin: 0;
}

.crafty-article__meta .wp-block-post-date::before {
	content: "·";
	margin-inline-end: 0.6rem;
}

.crafty-article__content {
	--crafty-reading-flow: clamp( 1rem, 2.5vw, 1.5rem );
}

.crafty-article__content > * {
	margin-block-start: 0;
	margin-block-end: var( --crafty-reading-flow );
}

.crafty-article__content > :where(h2, h3, h4) {
	margin-block-start: clamp( 2.5rem, 6vw, 4.25rem );
	margin-block-end: 1rem;
}

.crafty-article__content > :where(figure, .wp-block-gallery, .crafty-gallery) {
	margin-block: clamp( 2rem, 5vw, 3.5rem );
}

.crafty-article__content .wp-block-image img {
	width: auto;
	max-width: 100%;
	height: auto;
}

.crafty-article__content .wp-block-image.aligncenter img {
	margin-inline: auto;
}

.crafty-article__content figcaption {
	margin-block-start: 0.65rem;
}

.crafty-article__content :where(ul, ol) {
	padding-inline-start: 1.4em;
}

.crafty-article__content li + li {
	margin-block-start: 0.5em;
}

.crafty-article__content blockquote,
.crafty-article__content .wp-block-quote {
	margin-inline: 0;
	padding-inline-start: var( --wp--preset--spacing--30, 1.25rem );
	border-inline-start: 3px solid var( --wp--preset--color--primary, #8a2c4c );
}

.crafty-article__after {
	margin-block-start: clamp( 4rem, 9vw, 7rem );
}

.crafty-article__tags {
	font-size: var( --wp--preset--font-size--small, 0.9375rem );
}

.crafty-article .wp-block-post-comments {
	margin-block-start: clamp( 3rem, 7vw, 5rem );
}

.crafty-article .comment-list {
	padding: 0;
	list-style: none;
}

.crafty-article .comment-list .children {
	padding-inline-start: clamp( 1rem, 4vw, 2.5rem );
	list-style: none;
}

.crafty-article .comment-body {
	padding-block: var( --wp--preset--spacing--30, 1.25rem );
	border-top: 1px solid var( --wp--preset--color--border, #d8d2ca );
}

/*
 * Forms and shared functional controls
 */

:where(.crafty-main, .crafty-site-footer) :where(input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]), select, textarea) {
	width: 100%;
	min-height: 44px;
	padding: 0.65rem 0.75rem;
	border: 1px solid var( --wp--preset--color--control-border, #827b73 );
	border-radius: 4px;
	background: var( --wp--preset--color--surface, #fff );
	color: var( --wp--preset--color--contrast, #292724 );
}

:where(.crafty-main, .crafty-site-footer) textarea {
	min-height: 8rem;
	resize: vertical;
}

:where(.crafty-main, .crafty-site-footer) label {
	font-weight: 600;
}

:where(.crafty-main, .crafty-site-footer) :where(button, input[type="submit"], input[type="button"]),
.crafty-dialog .crafty-dialog__trigger,
#show-word-list-button,
#show-results-button {
	min-height: 44px;
	padding: 0.7em 1.15em;
	border: 0;
	border-radius: 4px;
	appearance: none;
	background: var( --wp--preset--color--primary, #8a2c4c );
	background-image: none;
	color: var( --wp--preset--color--on-primary, #fff );
	font-family: inherit;
	font-size: var( --wp--preset--font-size--small, 0.9375rem );
	font-weight: 600;
	line-height: 1.4;
	cursor: pointer;
}

:where(.crafty-main, .crafty-site-footer) :where(button, input[type="submit"], input[type="button"]):hover,
.crafty-dialog .crafty-dialog__trigger:hover,
#show-word-list-button:hover,
#show-results-button:hover {
	background: var( --wp--preset--color--contrast, #292724 );
	color: var( --wp--preset--color--surface, #fff );
}

:where(.crafty-main, .crafty-site-footer) :where(button, input, select, textarea):disabled {
	cursor: not-allowed;
	filter: grayscale( 0.5 );
	opacity: 0.65;
}

/*
 * Existing Crafty blocks
 */

.crafty-post-grid__image-link,
.crafty-product-carousel__image-link {
	overflow: hidden;
	border-radius: var( --crafty-radius-small );
	background: var( --wp--preset--color--secondary, #f0ede7 );
}

.crafty-post-grid__image,
.crafty-product-carousel__image {
	transition: transform var( --crafty-image-transition );
}

.crafty-post-grid__image-link:hover .crafty-post-grid__image,
.crafty-product-carousel__image-link:hover .crafty-product-carousel__image {
	transform: scale( 1.015 );
}

.crafty-post-grid__title-link,
.crafty-product-carousel__title-link {
	color: var( --wp--preset--color--contrast, #292724 );
}

.crafty-post-grid__meta,
.crafty-download__meta,
.crafty-download__description {
	color: var( --wp--preset--color--muted, #625d57 );
}

.crafty-post-grid__excerpt {
	color: var( --wp--preset--color--muted, #625d57 );
}

.crafty-post-grid__category-link {
	color: var( --wp--preset--color--primary, #8a2c4c );
	font-weight: 600;
	text-decoration: none;
}

.crafty-post-grid__category-link:hover {
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.crafty-table-of-contents {
	padding: clamp( 1.25rem, 4vw, 2rem );
	border-inline-start: 3px solid var( --wp--preset--color--primary, #8a2c4c );
	border-radius: 0 var( --crafty-radius-medium ) var( --crafty-radius-medium ) 0;
	background: var( --wp--preset--color--secondary, #f0ede7 );
}

.crafty-dialog__dialog {
	width: min( calc( 100% - 2rem ), 44rem );
	max-height: calc( 100dvh - 2rem );
	border: 1px solid var( --wp--preset--color--border, #d8d2ca );
	border-radius: 6px;
	background: var( --wp--preset--color--surface, #fff );
	color: var( --wp--preset--color--contrast, #292724 );
}

.crafty-download--card .crafty-download__link {
	border-color: var( --wp--preset--color--border, #d8d2ca );
	border-radius: var( --crafty-radius-medium );
	background: var( --wp--preset--color--surface, #fff );
}

.crafty-download--card .crafty-download__link:hover {
	border-color: var( --wp--preset--color--primary, #8a2c4c );
	background: var( --wp--preset--color--primary-soft, #f6e7ec );
}

/*
 * Word game integration. Geometry remains plugin-owned.
 */

#game-container {
	color: var( --wp--preset--color--contrast, #292724 );
}

#grid td {
	border-color: var( --wp--preset--color--control-border, #827b73 );
	background: var( --wp--preset--color--surface, #fff );
	color: var( --wp--preset--color--contrast, #292724 );
	font-family: inherit;
	font-weight: 600;
}

#grid td.selected {
	background: var( --wp--preset--color--primary-soft, #f6e7ec );
}

#grid td:hover {
	background: var( --wp--preset--color--primary-soft, #f6e7ec );
}

#show-word-list-button,
#show-results-button {
	margin: 0.5rem 0.5rem 0.5rem 0;
}

.found-count {
	color: var( --wp--preset--color--muted, #625d57 );
}

/*
 * WooCommerce classic-template integration
 */

.crafty-product,
.crafty-shop {
	--woocommerce: var( --wp--preset--color--primary, #8a2c4c );
	--wc-primary: var( --wp--preset--color--primary, #8a2c4c );
	--wc-primary-text: var( --wp--preset--color--on-primary, #fff );
	--wc-secondary: var( --wp--preset--color--secondary, #f0ede7 );
	--wc-secondary-text: var( --wp--preset--color--contrast, #292724 );
	--wc-content-bg: var( --wp--preset--color--surface, #fff );
	--wc-subtext: var( --wp--preset--color--muted, #625d57 );
}

.woocommerce .woocommerce-breadcrumb {
	margin-block: 0 2rem;
	color: var( --wp--preset--color--muted, #625d57 );
	font-size: var( --wp--preset--font-size--small, 0.9375rem );
}

.woocommerce .woocommerce-breadcrumb a {
	color: var( --wp--preset--color--primary, #8a2c4c );
}

.woocommerce :where(.woocommerce-message, .woocommerce-info, .woocommerce-error) {
	padding: 1rem 1.25rem;
	border: 1px solid var( --wp--preset--color--border, #d8d2ca );
	border-top-width: 3px;
	border-radius: 4px;
	background: var( --wp--preset--color--surface, #fff );
	color: var( --wp--preset--color--contrast, #292724 );
}

.woocommerce .woocommerce-message {
	border-top-color: var( --wp--preset--color--success, #285f46 );
}

.woocommerce .woocommerce-info {
	border-top-color: var( --wp--preset--color--info, #245a81 );
}

.woocommerce .woocommerce-error {
	border-top-color: var( --wp--preset--color--error, #a12635 );
}

.woocommerce :where(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before {
	color: currentColor;
}

.woocommerce :where(a.button, button.button, input.button, #respond input#submit),
.woocommerce :where(a.button.alt, button.button.alt, input.button.alt, #respond input#submit.alt) {
	min-height: 44px;
	padding: 0.7em 1.15em;
	border: 0;
	border-radius: 4px;
	background: var( --wp--preset--color--primary, #8a2c4c );
	color: var( --wp--preset--color--on-primary, #fff );
	font-family: inherit;
	font-size: var( --wp--preset--font-size--small, 0.9375rem );
	font-weight: 600;
	line-height: 1.4;
}

.woocommerce :where(a.button, button.button, input.button, #respond input#submit):hover,
.woocommerce :where(a.button.alt, button.button.alt, input.button.alt, #respond input#submit.alt):hover {
	background: var( --wp--preset--color--contrast, #292724 );
	color: var( --wp--preset--color--surface, #fff );
}

.woocommerce :where(input.input-text, textarea, select) {
	min-height: 44px;
	padding: 0.65rem 0.75rem;
	border: 1px solid var( --wp--preset--color--control-border, #827b73 );
	border-radius: 4px;
	background: var( --wp--preset--color--surface, #fff );
	color: var( --wp--preset--color--contrast, #292724 );
}

.woocommerce form .form-row label {
	font-weight: 600;
}

.woocommerce span.onsale {
	min-width: 3rem;
	min-height: 3rem;
	padding: 0.75rem 0.4rem;
	background: var( --wp--preset--color--primary, #8a2c4c );
	color: var( --wp--preset--color--on-primary, #fff );
	font-size: var( --wp--preset--font-size--small, 0.9375rem );
}

.woocommerce div.product {
	display: flow-root;
}

.woocommerce div.product div.images,
.woocommerce div.product div.summary {
	margin-block-end: clamp( 3rem, 8vw, 5rem );
}

.woocommerce div.product div.images img {
	background: var( --wp--preset--color--surface, #fff );
	object-fit: contain;
}

.woocommerce div.product .product_title {
	margin-block: 0 1rem;
	font-size: var( --wp--preset--font-size--xx-large, 3rem );
	font-weight: 400;
	line-height: 1.12;
}

.woocommerce div.product p.price,
.woocommerce div.product span.price {
	color: var( --wp--preset--color--contrast, #292724 );
	font-size: var( --wp--preset--font-size--large, 1.375rem );
	font-weight: 600;
}

.woocommerce div.product .woocommerce-product-details__short-description {
	margin-block: 1.5rem;
}

.woocommerce div.product form.cart {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	align-items: flex-end;
	margin-block: 2rem;
}

.woocommerce div.product form.cart .variations,
.woocommerce div.product form.cart .variations tbody,
.woocommerce div.product form.cart .variations tr,
.woocommerce div.product form.cart .variations th,
.woocommerce div.product form.cart .variations td {
	display: block;
	width: 100%;
}

.woocommerce div.product form.cart .variations td,
.woocommerce div.product form.cart .variations th {
	padding: 0.35rem 0;
}

.woocommerce .quantity .qty {
	width: 5rem;
}

.woocommerce div.product .product_meta {
	padding-block-start: 1rem;
	border-top: 1px solid var( --wp--preset--color--border, #d8d2ca );
	color: var( --wp--preset--color--muted, #625d57 );
	font-size: var( --wp--preset--font-size--small, 0.9375rem );
	line-height: 1.6;
}

.woocommerce div.product .woocommerce-tabs {
	clear: both;
	margin-block: clamp( 3rem, 8vw, 6rem );
}

.woocommerce div.product .woocommerce-tabs ul.tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.5rem;
	margin: 0 0 2rem;
	padding: 0;
	border-bottom: 1px solid var( --wp--preset--color--border, #d8d2ca );
}

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

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

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	padding: 0.75rem 0;
	color: var( --wp--preset--color--muted, #625d57 );
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
	box-shadow: inset 0 -3px var( --wp--preset--color--primary, #8a2c4c );
	color: var( --wp--preset--color--contrast, #292724 );
}

.woocommerce :where(.related.products, .upsells.products) {
	clear: both;
	margin-block-start: clamp( 4rem, 9vw, 7rem );
}

.woocommerce ul.products {
	display: grid;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );
	gap: clamp( 2rem, 5vw, 4rem ) clamp( 1.25rem, 3vw, 2rem );
}

.woocommerce ul.products::before,
.woocommerce ul.products::after {
	display: none;
}

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
	display: flex;
	float: none;
	width: 100% !important;
	min-width: 0;
	flex-direction: column;
	margin: 0;
}

.woocommerce ul.products li.product .woocommerce-LoopProduct-link {
	display: flex;
	width: 100%;
	min-width: 0;
	flex-direction: column;
	color: inherit;
	text-decoration: none;
}

.woocommerce ul.products li.product a img {
	width: 100%;
	margin: 0 0 0.75rem;
	aspect-ratio: 4 / 5;
	border: 1px solid var( --wp--preset--color--border, #d8d2ca );
	border-radius: var( --crafty-radius-small );
	background: var( --wp--preset--color--secondary, #f0ede7 );
	object-fit: contain;
	transition: transform var( --crafty-image-transition );
}

.woocommerce ul.products li.product .woocommerce-LoopProduct-link:hover img {
	transform: scale( 1.015 );
}

.woocommerce ul.products li.product .woocommerce-loop-product__title {
	padding: 0;
	color: var( --wp--preset--color--contrast, #292724 );
	font-size: var( --wp--preset--font-size--large, 1.375rem );
	font-weight: 400;
	line-height: 1.3;
}

.woocommerce ul.products li.product .price {
	display: block;
	margin-block-start: 0.35rem;
	color: var( --wp--preset--color--contrast, #292724 );
	font-size: var( --wp--preset--font-size--small, 0.9375rem );
	font-weight: 600;
}

.woocommerce ul.products li.product .button {
	align-self: flex-start;
	margin-block-start: 0.75rem;
}

.woocommerce .woocommerce-ordering select {
	min-width: min( 100%, 18rem );
}

.woocommerce table.shop_table {
	border-color: var( --wp--preset--color--border, #d8d2ca );
	border-collapse: collapse;
	border-radius: 0;
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td {
	padding: 0.85rem;
	border-color: var( --wp--preset--color--border, #d8d2ca );
}

/* Classic WooCommerce shortcode pages need the wide canvas while ordinary
   editorial pages keep the narrower reading measure. */
:where(body.woocommerce-cart, body.woocommerce-checkout, body.woocommerce-account) .crafty-page > :where(.wp-block-post-title, .wp-block-post-content) {
	width: 100%;
	max-width: var( --wp--style--global--wide-size, 1140px );
}

body.woocommerce-account.logged-in .crafty-page .woocommerce {
	display: grid;
	grid-template-columns: minmax( 11rem, 14rem ) minmax( 0, 1fr );
	gap: clamp( 2rem, 6vw, 5rem );
}

body.woocommerce-account.logged-in .crafty-page .woocommerce::before,
body.woocommerce-account.logged-in .crafty-page .woocommerce::after {
	display: none;
}

body.woocommerce-account .woocommerce-MyAccount-navigation,
body.woocommerce-account .woocommerce-MyAccount-content {
	float: none;
	width: auto;
}

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

body.woocommerce-account .woocommerce-MyAccount-navigation li + li {
	margin-block-start: 0.6rem;
}

body.woocommerce-account .woocommerce-MyAccount-navigation .is-active a {
	font-weight: 700;
}

/*
 * Footer
 */

.crafty-site-footer {
	margin-block-start: 0;
	padding-block: clamp( 3.5rem, 8vw, 6rem ) var( --wp--preset--spacing--30, 1.25rem );
}

.crafty-site-footer__columns {
	gap: clamp( 2rem, 6vw, 5rem );
}

.crafty-site-footer .wp-block-site-title {
	margin-block-start: 0;
}

.crafty-site-footer h2 {
	margin-block-start: 0;
}

.crafty-site-footer__links {
	margin: 0;
	padding: 0;
	list-style: none;
}

.crafty-site-footer__links li + li {
	margin-block-start: 0.55rem;
}

.crafty-site-footer__links a {
	color: var( --wp--preset--color--contrast, #292724 );
}

/*
 * Responsive behaviour
 */

@media ( max-width: 900px ) {
	.crafty-listing .wp-block-post-template,
	.woocommerce ul.products {
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	}

	.crafty-listing--home .wp-block-post-template > li:first-child {
		grid-column: span 2;
	}
}

@media ( max-width: 700px ) {
	.crafty-site-header__identity-row {
		min-height: 5.5rem;
		gap: 1rem;
	}

	.crafty-site-header .wp-block-site-title {
		font-size: clamp( 1.65rem, 8vw, 2.125rem ) !important;
	}

	.crafty-header-search {
		min-width: 44px;
	}

	.crafty-header-search .wp-block-search__input {
		width: clamp( 5.5rem, 24vw, 8rem );
	}

	.crafty-site-header__utilities {
		gap: 0.35rem;
	}

	.crafty-header-cart {
		font-size: 0.875rem;
	}

	.crafty-site-header__navigation-row {
		min-height: 3.25rem;
	}

	.crafty-listing .wp-block-post-template,
	.woocommerce ul.products {
		grid-template-columns: minmax( 0, 1fr );
	}

	.crafty-listing--home .wp-block-post-template > li:first-child {
		grid-column: auto;
	}

	.crafty-listing--home .wp-block-post-template > li:first-child .wp-block-post-title {
		font-size: var( --wp--preset--font-size--large, 1.375rem ) !important;
	}

	.crafty-home-shop > .wp-block-group {
		align-items: flex-start;
	}

	.woocommerce div.product .product_title {
		font-size: clamp( 2rem, 10vw, 3rem );
	}

	.woocommerce div.product .woocommerce-product-gallery :is( .woocommerce-product-gallery__image, .woo-main-slide ) > a {
		display: flex;
		height: min( 20rem, 50svh );
		align-items: center;
		justify-content: center;
		background: var( --wp--preset--color--surface, #fff );
	}

	.woocommerce div.product .woocommerce-product-gallery :is( .woocommerce-product-gallery__image, .woo-main-slide ) > a > img {
		width: 100% !important;
		height: 100% !important;
		max-height: 100% !important;
		margin-inline: auto;
		object-fit: contain;
	}

	.woocommerce table.shop_table_responsive tr td::before,
	.woocommerce-page table.shop_table_responsive tr td::before {
		margin-inline-end: 1rem;
	}

	body.woocommerce-account.logged-in .crafty-page .woocommerce {
		grid-template-columns: minmax( 0, 1fr );
		gap: var( --wp--preset--spacing--40, 2rem );
	}

	.crafty-site-footer__columns {
		gap: 2rem;
	}
}

@media ( max-width: 600px ) {
	.crafty-site-header__identity-row {
		padding-inline-end: 4.5rem;
	}

	.crafty-site-header__navigation-row {
		position: absolute;
		top: 0.75rem;
		right: var( --wp--preset--spacing--30, 1.25rem );
		width: 44px;
		min-height: 44px;
		margin: 0 !important;
		padding: 0;
		border-top: 0;
	}

	.crafty-primary-navigation {
		width: 44px;
	}

	.crafty-primary-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu {
		margin-block-end: var( --wp--preset--spacing--20, 0.75rem );
	}

	.crafty-primary-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu > :is( .wp-block-navigation-item__content, .wp-block-navigation-submenu__toggle ) {
		color: var( --wp--preset--color--primary, #8a2c4c );
		font-weight: 700;
	}
}

@media ( max-width: 460px ) {
	.crafty-site-header__identity-row {
		flex-wrap: wrap;
		padding-block-end: 0.75rem;
	}

	.crafty-site-header__utilities {
		width: 100%;
		justify-content: space-between;
	}

	.crafty-home-intro {
		padding-block: 3rem;
	}

	.crafty-header-search {
		flex: 1 1 auto;
	}

	.crafty-header-search .wp-block-search__input {
		width: 100%;
	}

	.crafty-topic-links,
	.crafty-topic-links .wp-block-button {
		width: 100%;
	}

	.crafty-topic-links .wp-block-button__link {
		width: 100%;
	}
}

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