/*
Theme Name: Komorebi
Theme URI: https://ahalives.com
Description: Komorebi storefront, a Twenty Twenty-Five child theme for curated Japanese goods.
Author: Komorebi
Template: twentytwentyfive
Version: 1.0.0
Requires at least: 6.7
Tested up to: 7.1
Requires PHP: 8.1
License: GNU General Public License v2 or later
Text Domain: komorebi
*/

:root {
  --km-ease: cubic-bezier(.2,.7,.2,1);
  --km-shadow: 0 1px 2px rgba(31,29,26,.04), 0 12px 32px -16px rgba(31,29,26,.18);
}
html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
h1, h2, h3, h4, .wp-block-post-title, .wp-block-site-title { text-wrap: balance; }
.km-jp { font-family: var(--wp--preset--font-family--jp); color: var(--wp--preset--color--contrast-3); letter-spacing: .12em; font-size: .8125rem; }
.km-eyebrow { font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; color: var(--wp--preset--color--accent-1); font-weight: 500; }
.km-lead { font-size: 1.125rem; line-height: 1.7; color: var(--wp--preset--color--contrast-2); }
.km-muted { color: var(--wp--preset--color--contrast-2); }
.km-link { font-size: .8125rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 500; border-bottom: 1px solid currentColor; padding-bottom: 2px; }
.km-link:hover { color: var(--wp--preset--color--accent-1); }

/* ---------- Header ---------- */
.km-topbar p { margin: 0; }
.km-header { position: relative; z-index: 20; border-bottom: 1px solid var(--wp--preset--color--base-3); }
.km-header .wp-block-site-title a { text-decoration: none; }
.km-header .wp-block-site-title a:hover { color: var(--wp--preset--color--accent-1); }
.km-navbar { position: relative; }
.km-navrow { border-top: 1px solid var(--wp--preset--color--base-3); }
.km-navrow .wp-block-navigation { --km-nav-gap: 2.2rem; }
.km-navrow .wp-block-navigation .wp-block-navigation__container { gap: var(--km-nav-gap); }
.km-navrow .wp-block-navigation-item__content { padding: .85rem 0; position: relative; }
.km-navrow .wp-block-navigation-item__content::after { content: ""; position: absolute; left: 0; right: 0; bottom: .55rem; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform .35s var(--km-ease); }
.km-navrow .wp-block-navigation-item:hover > .wp-block-navigation-item__content::after { transform: scaleX(1); }
.km-navrow .wp-block-navigation .wp-block-navigation__submenu-container { border: 1px solid var(--wp--preset--color--base-3); background: var(--wp--preset--color--white); box-shadow: var(--km-shadow); padding: .5rem 0; min-width: 240px; }
.km-navrow .wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content { padding: .55rem 1.25rem; text-transform: none; letter-spacing: .02em; font-size: .9375rem; }
.km-navrow .wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content::after { display: none; }
.km-nav-icons { gap: 1.1rem; }
.km-nav-icons .wp-block-search__button { background: transparent; border: 0; padding: 0; color: var(--wp--preset--color--contrast); }
.km-nav-icons .wp-block-search__button svg { width: 22px; height: 22px; }
.km-nav-icons .wp-block-search.wp-block-search__button-behavior-expand .wp-block-search__inside-wrapper { border: 1px solid var(--wp--preset--color--base-3); border-radius: 2px; background: var(--wp--preset--color--white); }
.km-nav-icons .wp-block-search__input { font-size: .9375rem; }
.km-nav-icons .wc-block-mini-cart__button, .km-nav-icons .wc-block-customer-account__account-icon { color: var(--wp--preset--color--contrast); }
.km-nav-icons .wc-block-mini-cart__badge { background: var(--wp--preset--color--accent-1); color: #fff; border: 0; }
.wp-block-navigation__responsive-container.has-modal-open { background: var(--wp--preset--color--base); }
.wp-block-navigation__responsive-container.has-modal-open .wp-block-navigation-item__content { font-size: 1.25rem; text-transform: none; letter-spacing: 0; }

/* ---------- Hero ---------- */
.km-hero { overflow: hidden; }
.km-hero .wp-block-media-text__content { padding: clamp(2rem, 6vw, 5rem); }
.km-hero .wp-block-media-text__media img { height: 100%; width: 100%; object-fit: cover; min-height: 420px; }
.km-hero h1 { font-size: clamp(2.6rem, 5.2vw, 4.5rem); line-height: 1.02; letter-spacing: -.015em; font-weight: 500; }
.km-hero h1 em { font-style: italic; font-weight: 400; color: var(--wp--preset--color--accent-1); }
.km-hero .wp-block-buttons { margin-top: 2rem; }

/* ---------- Section rhythm ---------- */
.km-section { padding-top: clamp(3rem, 7vw, 6rem); padding-bottom: clamp(3rem, 7vw, 6rem); }
.km-section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1.5rem; margin-bottom: 2.25rem; flex-wrap: wrap; }
.km-section-head h2 { margin: 0; }
.km-section-head p { margin: 0; }

/* ---------- Category tiles ---------- */
.km-tiles { gap: 1rem; }
.km-tile.wp-block-cover { min-height: 340px; border-radius: 3px; overflow: hidden; }
.km-tile .wp-block-cover__image-background { transition: transform 1.2s var(--km-ease); }
.km-tile:hover .wp-block-cover__image-background { transform: scale(1.04); }
.km-tile .wp-block-cover__inner-container { display: flex; flex-direction: column; justify-content: flex-end; height: 100%; }
.km-tile h3 { margin: 0 0 .25rem; color: #fff; font-size: 1.6rem; }
.km-tile h3 a { color: #fff; }
.km-tile h3 a::after { content: ""; position: absolute; inset: 0; }
.km-tile .km-jp { color: rgba(255,255,255,.78); margin: 0; }
.km-tile .km-tile-cta { font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; color: #fff; margin: .9rem 0 0; opacity: .9; }

/* ---------- Product grids ---------- */
.wc-block-product-template, .wp-block-woocommerce-product-template { gap: 2.5rem 1.5rem !important; }
.wc-block-product, .wp-block-woocommerce-product-template .wc-block-product { text-align: left; }
.wc-block-components-product-image, .wc-block-components-product-image img { border-radius: 3px; }
.wc-block-components-product-image { position: relative; overflow: hidden; background: var(--wp--preset--color--base-2); margin-bottom: 1rem; }
.wc-block-components-product-image img { aspect-ratio: 1 / 1; object-fit: cover; width: 100%; transition: transform 1.1s var(--km-ease), opacity .4s; }
.wc-block-product:hover .wc-block-components-product-image img { transform: scale(1.035); }
.wc-block-product .wp-block-post-title, .wc-block-grid__product-title { font-family: var(--wp--preset--font-family--body); font-size: .9375rem !important; font-weight: 500; letter-spacing: 0; line-height: 1.4; margin: 0 0 .3rem; }
.wc-block-product .wp-block-post-title a { text-decoration: none; }
.wc-block-product .wp-block-post-title a:hover { color: var(--wp--preset--color--accent-1); }
.wc-block-components-product-price { font-size: .9375rem !important; color: var(--wp--preset--color--contrast-2); margin: 0 0 .75rem; }
.wc-block-components-product-price del { color: var(--wp--preset--color--contrast-3); margin-right: .4rem; }
.wc-block-components-product-price ins { text-decoration: none; color: var(--wp--preset--color--accent-1); }
.wc-block-components-product-sale-badge { background: var(--wp--preset--color--accent-1); color: #fff; border: 0; border-radius: 2px; font-size: .6875rem; letter-spacing: .12em; text-transform: uppercase; padding: .3rem .55rem; font-weight: 500; }
.wc-block-components-product-sale-badge--align-right { right: .75rem; top: .75rem; }
.wc-block-components-product-button { margin: 0; }
.wc-block-components-product-button .wp-block-button__link { font-size: .75rem !important; letter-spacing: .14em; text-transform: uppercase; padding: .7rem 1.2rem; border-radius: 2px; background: transparent; color: var(--wp--preset--color--contrast); border: 1px solid var(--wp--preset--color--contrast); }
.wc-block-components-product-button .wp-block-button__link:hover { background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base); }
.wc-block-components-product-button .wc-block-components-button__text { font-size: inherit; }
.wc-block-components-product-rating { display: none; }

/* ---------- USP band ---------- */
.km-usp { border-top: 1px solid var(--wp--preset--color--base-3); border-bottom: 1px solid var(--wp--preset--color--base-3); }
.km-usp .wp-block-column { display: flex; flex-direction: column; gap: .6rem; }
.km-usp svg { width: 32px; height: 32px; stroke: var(--wp--preset--color--accent-1); fill: none; stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
.km-usp h4 { margin: 0; font-family: var(--wp--preset--font-family--body); font-size: 1rem; font-weight: 600; letter-spacing: 0; }
.km-usp p { margin: 0; font-size: .9375rem; color: var(--wp--preset--color--contrast-2); }

/* ---------- Story ---------- */
.km-story .wp-block-media-text__media img { border-radius: 3px; }
.km-story .wp-block-media-text__content { padding: clamp(1.5rem, 5vw, 4.5rem); }

/* ---------- Journal cards ---------- */
.km-journal .wp-block-post-featured-image img { aspect-ratio: 3 / 2; object-fit: cover; border-radius: 3px; }
.km-journal .wp-block-post-title { font-size: 1.35rem; margin: 1rem 0 .4rem; }
.km-journal .wp-block-post-date { font-size: .75rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--contrast-3); }
.km-journal .wp-block-post-excerpt__excerpt { font-size: .9375rem; color: var(--wp--preset--color--contrast-2); }
.km-journal .wp-block-post-excerpt__more-link { display: none; }

/* ---------- Newsletter ---------- */
.km-newsletter .wpcf7 form { display: flex; gap: .5rem; max-width: 520px; margin: 1.5rem auto 0; flex-wrap: wrap; justify-content: center; }
.km-newsletter .wpcf7 form p { margin: 0; display: contents; }
.km-newsletter .wpcf7 input[type="email"] { flex: 1 1 260px; padding: .9rem 1rem; border: 1px solid var(--wp--preset--color--base-3); border-radius: 2px; background: var(--wp--preset--color--white); font: inherit; font-size: .9375rem; }
.km-newsletter .wpcf7 input[type="submit"] { background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base); border: 0; border-radius: 2px; padding: .95rem 1.75rem; font-size: .8125rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 500; cursor: pointer; }
.km-newsletter .wpcf7 input[type="submit"]:hover { background: var(--wp--preset--color--accent-1); }
.km-newsletter .wpcf7-spinner { display: none; }
.km-newsletter .wpcf7-response-output { border: 0 !important; margin: 1rem 0 0 !important; padding: 0 !important; font-size: .9375rem; color: var(--wp--preset--color--accent-2); width: 100%; text-align: center; }
.km-newsletter .wpcf7-not-valid-tip { font-size: .8125rem; color: var(--wp--preset--color--accent-1); width: 100%; text-align: center; }

/* ---------- Footer ---------- */
.km-footer { border-top: 1px solid var(--wp--preset--color--base-3); }
.km-footer .wp-block-site-title { margin-bottom: .75rem; }
.km-footer h4 { font-family: var(--wp--preset--font-family--body); font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; margin: 0 0 1rem; color: var(--wp--preset--color--contrast-3); }
.km-footer ul { list-style: none; padding: 0; margin: 0; }
.km-footer li { margin: 0 0 .6rem; font-size: .9375rem; }
.km-footer li a { color: var(--wp--preset--color--contrast-2); }
.km-footer li a:hover { color: var(--wp--preset--color--accent-1); }
.km-footer p { font-size: .9375rem; color: var(--wp--preset--color--contrast-2); }
.km-footer-bottom { border-top: 1px solid var(--wp--preset--color--base-3); margin-top: 3rem; padding-top: 1.5rem; }
.km-footer-bottom p { font-size: .8125rem; color: var(--wp--preset--color--contrast-3); margin: 0; }

/* ---------- Contact form (pages) ---------- */
.km-form .wpcf7 label { display: block; font-size: .8125rem; letter-spacing: .08em; text-transform: uppercase; color: var(--wp--preset--color--contrast-2); margin-bottom: .4rem; }
.km-form .wpcf7 input[type="text"], .km-form .wpcf7 input[type="email"], .km-form .wpcf7 textarea, .km-form .wpcf7 select { width: 100%; padding: .85rem 1rem; border: 1px solid var(--wp--preset--color--base-3); border-radius: 2px; background: var(--wp--preset--color--white); font: inherit; font-size: .9375rem; }
.km-form .wpcf7 p { margin: 0 0 1.1rem; }
.km-form .wpcf7 input[type="submit"] { background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base); border: 0; border-radius: 2px; padding: .95rem 1.75rem; font-size: .8125rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 500; cursor: pointer; }
.km-form .wpcf7 input[type="submit"]:hover { background: var(--wp--preset--color--accent-1); }
.km-form .wpcf7-response-output { border: 0 !important; padding: 0 !important; margin: .5rem 0 0 !important; color: var(--wp--preset--color--accent-2); }

/* ---------- Pages ---------- */
.km-page-hero { padding-top: clamp(2.5rem, 6vw, 5rem); padding-bottom: clamp(2rem, 5vw, 4rem); text-align: center; }
.km-page-hero h1 { margin: .5rem 0 .75rem; }
.km-page-hero p { max-width: 640px; margin: 0 auto; }
.km-policy h2 { font-size: 1.5rem; margin-top: 2.5rem; }
.km-policy h3 { font-size: 1.15rem; font-family: var(--wp--preset--font-family--body); font-weight: 600; margin-top: 1.75rem; }
.km-faq details { border-top: 1px solid var(--wp--preset--color--base-3); padding: 1.1rem 0; }
.km-faq details:last-child { border-bottom: 1px solid var(--wp--preset--color--base-3); }
.km-faq summary { cursor: pointer; font-weight: 500; font-size: 1.0625rem; list-style: none; display: flex; justify-content: space-between; align-items: center; }
.km-faq summary::-webkit-details-marker { display: none; }
.km-faq summary::after { content: "+"; font-family: var(--wp--preset--font-family--heading); font-size: 1.6rem; color: var(--wp--preset--color--contrast-3); line-height: 1; }
.km-faq details[open] summary::after { content: "–"; }
.km-faq details p { margin: .75rem 0 0; color: var(--wp--preset--color--contrast-2); font-size: .9375rem; }
.km-table table { border-collapse: collapse; width: 100%; font-size: .9375rem; }
.km-table th, .km-table td { border-bottom: 1px solid var(--wp--preset--color--base-3); padding: .75rem .5rem; text-align: left; vertical-align: top; }
.km-table th { font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--wp--preset--color--contrast-3); font-weight: 600; }

/* ---------- WooCommerce: shop archive ---------- */
.km-shop-head { padding-top: clamp(2rem, 5vw, 4rem); padding-bottom: 1.5rem; }
.wc-block-breadcrumbs, .woocommerce-breadcrumb { font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--wp--preset--color--contrast-3); }
.wc-block-breadcrumbs a, .woocommerce-breadcrumb a { color: var(--wp--preset--color--contrast-3); }
.wp-block-query-title, .woocommerce-products-header__title { margin: .5rem 0 0; }
.wc-block-product-results-count, .woocommerce-result-count { font-size: .8125rem; color: var(--wp--preset--color--contrast-3); margin: 0; }
.wc-block-catalog-sorting select, .woocommerce-ordering select { border: 1px solid var(--wp--preset--color--base-3); border-radius: 2px; padding: .55rem 2rem .55rem .85rem; font: inherit; font-size: .8125rem; background: var(--wp--preset--color--white); }
.km-shop-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; padding: 1rem 0; border-top: 1px solid var(--wp--preset--color--base-3); border-bottom: 1px solid var(--wp--preset--color--base-3); margin-bottom: 2.5rem; }
.wp-block-query-pagination { font-size: .875rem; letter-spacing: .08em; }
.wp-block-query-pagination .page-numbers { padding: .4rem .6rem; }
.wp-block-query-pagination .page-numbers.current { color: var(--wp--preset--color--accent-1); border-bottom: 1px solid currentColor; }
.km-cat-hero.wp-block-cover { min-height: 300px; border-radius: 3px; overflow: hidden; }
.km-cat-hero h1 { color: #fff; margin: 0; }
.km-cat-hero p { color: rgba(255,255,255,.85); max-width: 560px; margin: .5rem auto 0; }

/* ---------- WooCommerce: single product ---------- */
.km-single .wp-block-post-title { font-size: clamp(2rem, 3.4vw, 2.75rem); margin: .5rem 0 .75rem; }
.km-single .wc-block-components-product-price { font-size: 1.25rem !important; color: var(--wp--preset--color--contrast); margin: 0 0 1.25rem; }
.km-single .wp-block-post-excerpt__excerpt { font-size: 1rem; color: var(--wp--preset--color--contrast-2); line-height: 1.7; }
.km-single .wc-block-product-gallery__large-image img, .km-single .woocommerce-product-gallery__image img { border-radius: 3px; }
.km-single .wp-block-woocommerce-product-image-gallery img { border-radius: 3px; }
.km-single .wp-block-add-to-cart-form .cart { display: flex; gap: .75rem; align-items: stretch; flex-wrap: wrap; margin: 1.5rem 0; }
.km-single .wp-block-add-to-cart-form .quantity .qty, .km-single .quantity .qty { border: 1px solid var(--wp--preset--color--base-3); border-radius: 2px; padding: .9rem .5rem; width: 4.5rem; font: inherit; text-align: center; height: 100%; }
.km-single .single_add_to_cart_button, .km-single .wc-block-add-to-cart-form .wp-block-button__link { background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base); border: 0; border-radius: 2px; padding: .95rem 2rem; font-size: .8125rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 500; cursor: pointer; }
.km-single .single_add_to_cart_button:hover { background: var(--wp--preset--color--accent-1); color: #fff; }
.km-single table.variations { width: 100%; margin: 1rem 0; border-collapse: collapse; }
.km-single table.variations th, .km-single table.variations td { padding: .4rem 0; text-align: left; vertical-align: middle; }
.km-single table.variations th { font-size: .75rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--contrast-3); font-weight: 600; width: 6rem; }
.km-single table.variations select { border: 1px solid var(--wp--preset--color--base-3); border-radius: 2px; padding: .6rem 2rem .6rem .85rem; font: inherit; font-size: .9375rem; background: var(--wp--preset--color--white); min-width: 200px; }
.km-single .reset_variations { font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; margin-left: .75rem; }
.km-single .woocommerce-variation-price { margin: .5rem 0; }
.km-single .product_meta, .km-single .wc-block-components-product-sku, .km-single .wp-block-woocommerce-product-meta { font-size: .8125rem; color: var(--wp--preset--color--contrast-3); letter-spacing: .04em; }
.km-single .product_meta > span { display: block; margin: .25rem 0; }
.km-single .product_meta a, .km-single .wp-block-woocommerce-product-meta a { color: var(--wp--preset--color--contrast-2); }
.km-single .wc-tabs-wrapper, .km-single .woocommerce-tabs { margin-top: 3rem; }
.km-single .woocommerce-tabs ul.tabs { display: flex; gap: 2rem; padding: 0; margin: 0 0 1.5rem; list-style: none; border-bottom: 1px solid var(--wp--preset--color--base-3); }
.km-single .woocommerce-tabs ul.tabs li { margin: 0; }
.km-single .woocommerce-tabs ul.tabs li a { display: block; padding: .8rem 0; font-size: .8125rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--contrast-3); border-bottom: 1px solid transparent; margin-bottom: -1px; }
.km-single .woocommerce-tabs ul.tabs li.active a { color: var(--wp--preset--color--contrast); border-bottom-color: var(--wp--preset--color--contrast); }
.km-single .woocommerce-tabs .panel h2:first-child { display: none; }
.km-single .woocommerce-tabs .panel { font-size: 1rem; line-height: 1.7; color: var(--wp--preset--color--contrast-2); max-width: 760px; }
.km-single .woocommerce-tabs .panel h3 { font-family: var(--wp--preset--font-family--body); font-size: 1rem; font-weight: 600; color: var(--wp--preset--color--contrast); margin: 1.5rem 0 .5rem; }
.km-single table.woocommerce-product-attributes { width: 100%; max-width: 560px; border-collapse: collapse; font-size: .9375rem; }
.km-single table.woocommerce-product-attributes th, .km-single table.woocommerce-product-attributes td { border-bottom: 1px solid var(--wp--preset--color--base-3); padding: .6rem 0; text-align: left; }
.km-single table.woocommerce-product-attributes th { font-weight: 500; color: var(--wp--preset--color--contrast-3); width: 40%; }
.km-single table.woocommerce-product-attributes td p { margin: 0; }
.km-single .related.products > h2, .km-single .wp-block-woocommerce-related-products h2 { font-size: 1.75rem; margin-bottom: 1.75rem; }
.km-single .wp-block-woocommerce-product-details { margin-top: 2.5rem; }
.km-single #reviews .comment-reply-title { font-family: var(--wp--preset--font-family--body); font-size: 1rem; font-weight: 600; }
.km-single #reviews .comment-form input[type="text"], .km-single #reviews .comment-form input[type="email"], .km-single #reviews .comment-form textarea { width: 100%; padding: .8rem 1rem; border: 1px solid var(--wp--preset--color--base-3); border-radius: 2px; font: inherit; }
.km-single #reviews .comment-form .submit { background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base); border: 0; border-radius: 2px; padding: .9rem 1.75rem; font-size: .8125rem; letter-spacing: .12em; text-transform: uppercase; }
.km-single .woocommerce-noreviews, .km-single .woocommerce-Reviews p { font-size: .9375rem; color: var(--wp--preset--color--contrast-2); }
.wc-block-components-notice-banner { border-radius: 2px; }
.woocommerce-message, .woocommerce-info, .woocommerce-error { background: var(--wp--preset--color--base-2); border-top: 2px solid var(--wp--preset--color--accent-1); padding: 1rem 1.25rem; margin-bottom: 1.5rem; list-style: none; font-size: .9375rem; }

/* ---------- WooCommerce: cart / checkout / account ---------- */
.wc-block-cart, .wc-block-checkout, .woocommerce-account { font-size: .9375rem; }
.wc-block-components-button, .wc-block-components-checkout-place-order-button, .wc-block-cart__submit-button { background: var(--wp--preset--color--contrast) !important; color: var(--wp--preset--color--base) !important; border-radius: 2px !important; font-size: .8125rem !important; letter-spacing: .12em; text-transform: uppercase; font-weight: 500 !important; border: 0 !important; }
.wc-block-components-button:hover, .wc-block-components-checkout-place-order-button:hover { background: var(--wp--preset--color--accent-1) !important; }
.wc-block-components-text-input input, .wc-block-components-select .components-custom-select-control__button, .wc-block-components-country-input input, .wc-block-components-textarea textarea { border-radius: 2px !important; border-color: var(--wp--preset--color--base-3) !important; }
.wc-block-components-product-name { font-weight: 500; }
.wc-block-components-checkout-step__title { font-family: var(--wp--preset--font-family--heading); font-size: 1.35rem; font-weight: 500; }
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value { font-family: var(--wp--preset--font-family--heading); font-size: 1.4rem; }
.wc-block-components-sidebar .wc-block-components-panel__button, .wc-block-components-totals-item { font-size: .9375rem; }
.wc-block-components-order-summary-item__image img { border-radius: 2px; }
.woocommerce-MyAccount-navigation ul { list-style: none; padding: 0; margin: 0; }
.woocommerce-MyAccount-navigation li { border-bottom: 1px solid var(--wp--preset--color--base-3); }
.woocommerce-MyAccount-navigation li a { display: block; padding: .8rem 0; font-size: .8125rem; letter-spacing: .12em; text-transform: uppercase; color: var(--wp--preset--color--contrast-2); }
.woocommerce-MyAccount-navigation li.is-active a { color: var(--wp--preset--color--accent-1); }
.woocommerce-account .woocommerce { display: grid; grid-template-columns: 220px 1fr; gap: 3rem; }
.woocommerce-form-login, .woocommerce-form-register, .woocommerce-ResetPassword { max-width: 480px; }
.woocommerce-form-login h2, .woocommerce-form-register h2 { font-size: 1.5rem; }
.woocommerce form .form-row { margin-bottom: 1.1rem; }
.woocommerce form .form-row label { display: block; font-size: .8125rem; letter-spacing: .08em; text-transform: uppercase; color: var(--wp--preset--color--contrast-2); margin-bottom: .4rem; }
.woocommerce form .form-row .input-text, .woocommerce-Input--text, .woocommerce-Input--password { width: 100%; padding: .85rem 1rem; border: 1px solid var(--wp--preset--color--base-3); border-radius: 2px; background: var(--wp--preset--color--white); font: inherit; }
.woocommerce .button, .woocommerce button.button, .woocommerce-button { background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base); border: 0; border-radius: 2px; padding: .9rem 1.75rem; font-size: .8125rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 500; cursor: pointer; display: inline-block; }
.woocommerce .button:hover, .woocommerce-button:hover { background: var(--wp--preset--color--accent-1); color: #fff; }
.woocommerce-privacy-policy-text { font-size: .8125rem; color: var(--wp--preset--color--contrast-3); }
.woocommerce-account .woocommerce-MyAccount-content p { font-size: .9375rem; }
.woocommerce-password-strength, .woocommerce-password-hint { font-size: .8125rem; }
@media (max-width: 781px) {
  .woocommerce-account .woocommerce { grid-template-columns: 1fr; gap: 1.5rem; }
  .km-tile.wp-block-cover { min-height: 260px; }
  .km-section-head { flex-direction: column; align-items: flex-start; gap: .5rem; }
}

/* ---------- Classic WooCommerce loop (shop / category / related) ---------- */
.woocommerce ul.products, .woocommerce-page ul.products { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2.75rem 1.5rem; margin: 0 0 3rem; padding: 0; list-style: none; }
.woocommerce ul.products::before, .woocommerce ul.products::after { display: none; }
.woocommerce ul.products li.product, .woocommerce-page ul.products li.product { width: auto !important; margin: 0 !important; float: none !important; clear: none !important; text-align: left; }
.woocommerce ul.products li.product a.woocommerce-LoopProduct-link { display: block; text-decoration: none; }
.woocommerce ul.products li.product a img, .woocommerce ul.products li.product .attachment-woocommerce_thumbnail { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 3px; margin: 0 0 1rem !important; display: block; background: var(--wp--preset--color--base-2); transition: transform 1.1s var(--km-ease); }
.woocommerce ul.products li.product { position: relative; overflow: hidden; }
.woocommerce ul.products li.product:hover a img { transform: scale(1.035); }
.woocommerce ul.products li.product .woocommerce-loop-product__title { font-family: var(--wp--preset--font-family--body); font-size: .9375rem !important; font-weight: 500; line-height: 1.4; padding: 0 !important; margin: 0 0 .3rem !important; color: var(--wp--preset--color--contrast); }
.woocommerce ul.products li.product a:hover .woocommerce-loop-product__title { color: var(--wp--preset--color--accent-1); }
.woocommerce ul.products li.product .price { font-size: .9375rem !important; color: var(--wp--preset--color--contrast-2) !important; margin: 0 0 .85rem !important; display: block; font-weight: 400; }
.woocommerce ul.products li.product .price del { color: var(--wp--preset--color--contrast-3); opacity: 1; margin-right: .4rem; }
.woocommerce ul.products li.product .price ins { text-decoration: none; color: var(--wp--preset--color--accent-1); font-weight: 400; }
.woocommerce ul.products li.product .button, .woocommerce ul.products li.product .added_to_cart { display: inline-block; font-size: .75rem !important; letter-spacing: .14em; text-transform: uppercase; padding: .7rem 1.2rem !important; border-radius: 2px; background: transparent !important; color: var(--wp--preset--color--contrast) !important; border: 1px solid var(--wp--preset--color--contrast); margin: 0 !important; font-weight: 500; line-height: 1.2; }
.woocommerce ul.products li.product .button:hover { background: var(--wp--preset--color--contrast) !important; color: var(--wp--preset--color--base) !important; }
.woocommerce ul.products li.product .added_to_cart { margin-left: .5rem !important; border-color: var(--wp--preset--color--accent-1); color: var(--wp--preset--color--accent-1) !important; }
.woocommerce ul.products li.product .onsale, .woocommerce span.onsale { position: absolute; top: .75rem; right: .75rem; left: auto; min-height: 0; min-width: 0; line-height: 1; background: var(--wp--preset--color--accent-1); color: #fff; border-radius: 2px; font-size: .6875rem; letter-spacing: .12em; text-transform: uppercase; padding: .35rem .6rem; font-weight: 500; margin: 0; z-index: 2; }
.woocommerce ul.products li.product .button.loading { opacity: .6; }
.woocommerce ul.products li.product .button::after { display: none; }
@media (max-width: 1023px) { .woocommerce ul.products, .woocommerce-page ul.products { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 640px) { .woocommerce ul.products, .woocommerce-page ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem .9rem; } }

/* block product collections: fixed column counts */
.wp-block-woocommerce-product-template, .wc-block-product-template { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
@media (max-width: 1023px) { .wp-block-woocommerce-product-template, .wc-block-product-template { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } }
@media (max-width: 640px) { .wp-block-woocommerce-product-template, .wc-block-product-template { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 2rem .9rem !important; } }
.wc-block-components-product-button, .wc-block-product .wp-block-button { text-align: left; justify-content: flex-start; }
.wc-block-product .wp-block-post-title { text-align: left; }
.wc-block-components-product-price { text-align: left; display: block; }

/* ---------- Archive header ---------- */
.km-archive .wp-block-group.alignwide, .km-archive main.wp-block-group > .woocommerce { max-width: none; }
.km-archive .woocommerce-breadcrumb { margin: 1.5rem 0 1rem; }
.km-shop-head { padding: 1.5rem 0 2rem; }
.km-shop-head h1 { margin: .25rem 0 .75rem; }
.km-shop-head .km-cat-hero__desc, .km-cat-hero__desc { max-width: 620px; color: var(--wp--preset--color--contrast-2); margin: 0; font-size: 1.0625rem; line-height: 1.6; }
.km-cat-hero { position: relative; border-radius: 3px; overflow: hidden; margin: 0 0 2rem; padding: clamp(2.5rem, 6vw, 5rem) clamp(1.5rem, 4vw, 3.5rem); background-size: cover; background-position: center; background-color: var(--wp--preset--color--base-2); min-height: 300px; display: flex; align-items: flex-end; }
.km-cat-hero.has-image::before { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(31,29,26,.72), rgba(31,29,26,.15) 60%, rgba(31,29,26,0)); }
.km-cat-hero__inner { position: relative; max-width: 640px; }
.km-cat-hero.has-image h1, .km-cat-hero.has-image .km-cat-hero__desc { color: #fff; }
.km-cat-hero.has-image .km-jp { color: rgba(255,255,255,.75); }
.km-cat-hero h1 { margin: .25rem 0 .6rem; }
.km-cat-hero.has-image .km-cat-hero__desc { color: rgba(255,255,255,.88); }
.km-shop-toolbar .woocommerce-result-count { margin: 0; }
.km-shop-toolbar .woocommerce-ordering { margin: 0; }
.woocommerce nav.woocommerce-pagination ul { border: 0; display: flex; justify-content: center; gap: .25rem; margin: 0; }
.woocommerce nav.woocommerce-pagination ul li { border: 0; }
.woocommerce nav.woocommerce-pagination ul li a, .woocommerce nav.woocommerce-pagination ul li span { padding: .5rem .8rem; font-size: .875rem; letter-spacing: .08em; color: var(--wp--preset--color--contrast-2); background: transparent; }
.woocommerce nav.woocommerce-pagination ul li span.current { color: var(--wp--preset--color--accent-1); background: transparent; border-bottom: 1px solid currentColor; }
.woocommerce .woocommerce-breadcrumb a:hover { color: var(--wp--preset--color--accent-1); }

/* ---------- Classic single product layout ---------- */
.km-single .woocommerce div.product { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); column-gap: clamp(2rem, 5vw, 4.5rem); align-items: start; }
.km-single .woocommerce div.product > * { grid-column: 1 / -1; }
.km-single .woocommerce div.product div.images, .km-single .woocommerce div.product div.woocommerce-product-gallery { grid-column: 1; width: 100% !important; float: none !important; margin: 0 !important; }
.km-single .woocommerce div.product div.summary { grid-column: 2; width: 100% !important; float: none !important; margin: 0 !important; position: sticky; top: 2rem; }
.km-single .woocommerce div.product div.woocommerce-tabs, .km-single .woocommerce div.product section.related, .km-single .woocommerce div.product section.upsells { grid-column: 1 / -1; width: 100%; float: none; clear: both; }
.km-single .woocommerce div.product .woocommerce-product-gallery__wrapper { margin: 0; }
.km-single .woocommerce div.product .woocommerce-product-gallery__image img { border-radius: 3px; }
.km-single .woocommerce div.product .woocommerce-product-gallery__trigger { background: rgba(255,255,255,.9); border-radius: 2px; }
.km-single .woocommerce div.product .product_title { font-size: clamp(2rem, 3.4vw, 2.75rem); margin: .25rem 0 .5rem; line-height: 1.1; }
.km-single .woocommerce div.product p.price, .km-single .woocommerce div.product span.price { font-size: 1.25rem !important; color: var(--wp--preset--color--contrast) !important; margin: 0 0 .75rem; font-weight: 400; }
.km-single .woocommerce div.product p.price del, .km-single .woocommerce div.product span.price del { color: var(--wp--preset--color--contrast-3); opacity: 1; margin-right: .5rem; }
.km-single .woocommerce div.product p.price ins, .km-single .woocommerce div.product span.price ins { text-decoration: none; color: var(--wp--preset--color--accent-1); font-weight: 400; }
.km-single .km-single-jp { margin: 0 0 1.25rem; }
.km-single .woocommerce-product-details__short-description { font-size: 1rem; line-height: 1.7; color: var(--wp--preset--color--contrast-2); margin-bottom: 1.25rem; }
.km-single .woocommerce div.product p.stock { font-size: .8125rem; letter-spacing: .06em; text-transform: uppercase; color: var(--wp--preset--color--accent-3); margin: 0 0 1rem; }
.km-single .woocommerce div.product form.cart { margin: 0 0 1.75rem; }
.km-single .woocommerce div.product form.cart div.quantity { margin: 0 .75rem 0 0; float: none; }
.km-single .woocommerce div.product form.cart .button { float: none; }
.km-single .woocommerce div.product form.cart.variations_form { display: block; }
.km-single .woocommerce div.product form.cart .woocommerce-variation-add-to-cart { display: flex; gap: .75rem; align-items: stretch; }
.km-single .woocommerce div.product .product_meta { padding-top: 1.25rem; border-top: 1px solid var(--wp--preset--color--base-3); }
.km-single .woocommerce div.product .woocommerce-tabs { margin-top: clamp(2.5rem, 5vw, 4.5rem); }
.km-single .woocommerce div.product .woocommerce-tabs ul.tabs::before, .km-single .woocommerce div.product .woocommerce-tabs ul.tabs li::before, .km-single .woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none; }
.km-single .woocommerce div.product .woocommerce-tabs ul.tabs li { background: transparent; border: 0; border-radius: 0; padding: 0; }
.km-single .woocommerce div.product .woocommerce-tabs ul.tabs li a { font-weight: 500; }
.km-single .woocommerce div.product .woocommerce-tabs .panel { margin: 0; }
.km-single .woocommerce div.product section.related > h2 { font-size: 1.75rem; margin: clamp(2.5rem, 5vw, 4rem) 0 1.75rem; }
.km-single .woocommerce .woocommerce-message, .km-single .woocommerce .woocommerce-info { grid-column: 1 / -1; }
.woocommerce div.product .woocommerce-tabs .panel table.shop_attributes th { font-weight: 500; }
@media (max-width: 900px) {
  .km-single .woocommerce div.product { display: block; }
  .km-single .woocommerce div.product div.summary { position: static; margin-top: 1.5rem !important; }
}

/* ---------- Blockified archive / single ---------- */
.km-archive > .wc-block-breadcrumbs, .km-archive .wc-block-breadcrumbs { margin: 1.5rem 0 .5rem; }
.km-archive .km-shop-head { padding: .5rem 0 1.5rem; }
.km-archive .km-cat-hero { margin-top: .5rem; }
.km-archive .km-shop-toolbar { margin-bottom: 2.5rem; }
.km-archive .wc-block-product-results-count, .km-archive .wc-block-catalog-sorting { margin: 0; }
.km-archive .wp-block-woocommerce-product-collection { margin-bottom: 3rem; }
.km-archive .wp-block-query-pagination { margin-top: 2.5rem; font-size: .875rem; letter-spacing: .08em; text-transform: uppercase; }
.km-archive .wc-block-product-collection-no-results { padding: 3rem 0; text-align: center; }
.wc-block-product .wc-block-components-product-sale-badge { position: absolute; top: .75rem; right: .75rem; margin: 0; }
.km-single .wc-block-breadcrumbs { margin: 1.5rem 0 1.25rem; }
.km-single .km-single-cols { align-items: flex-start; }
.km-single .wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery, .km-single .woocommerce-product-gallery { width: 100% !important; float: none !important; margin: 0 !important; opacity: 1 !important; }
.km-single .wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__image img { width: 100%; border-radius: 3px; }
.km-single .wp-block-woocommerce-product-image-gallery .flex-control-thumbs { display: flex; gap: .5rem; margin: .75rem 0 0; padding: 0; list-style: none; }
.km-single .wp-block-woocommerce-product-image-gallery .flex-control-thumbs li { width: 72px; margin: 0; }
.km-single .wp-block-woocommerce-product-image-gallery .flex-control-thumbs img { border-radius: 2px; opacity: .6; cursor: pointer; }
.km-single .wp-block-woocommerce-product-image-gallery .flex-control-thumbs img.flex-active { opacity: 1; }
.km-single .wp-block-post-title { font-size: clamp(2rem, 3.4vw, 2.75rem); margin: 0 0 .75rem; line-height: 1.1; }
.km-single .km-single-jp { margin: 0 0 1.25rem; }
.km-single .wp-block-post-excerpt { margin-bottom: 1.25rem; }
.km-single .wp-block-add-to-cart-form .stock { font-size: .8125rem; letter-spacing: .06em; text-transform: uppercase; color: var(--wp--preset--color--accent-3); margin: 0 0 1rem; }
.km-single .wp-block-add-to-cart-form form.cart { display: flex; flex-wrap: wrap; align-items: stretch; gap: .75rem; margin: 0 0 1.75rem; }
.km-single .wp-block-add-to-cart-form form.cart.variations_form { display: block; }
.km-single .wp-block-add-to-cart-form form.cart .woocommerce-variation-add-to-cart { display: flex; gap: .75rem; align-items: stretch; }
.km-single .wp-block-add-to-cart-form .quantity { display: flex; }
.km-single .wp-block-add-to-cart-form .quantity .qty { border: 1px solid var(--wp--preset--color--base-3); border-radius: 2px; padding: .9rem .5rem; width: 4.5rem; font: inherit; text-align: center; background: var(--wp--preset--color--white); }
.km-single .wp-block-add-to-cart-form .single_add_to_cart_button { background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base); border: 0; border-radius: 2px; padding: .95rem 2rem; font-size: .8125rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 500; cursor: pointer; line-height: 1.2; }
.km-single .wp-block-add-to-cart-form .single_add_to_cart_button:hover { background: var(--wp--preset--color--accent-1); color: #fff; }
.km-single .wp-block-add-to-cart-form .single_add_to_cart_button.disabled { opacity: .5; }
.km-single .wp-block-woocommerce-product-meta { padding-top: 1.25rem; border-top: 1px solid var(--wp--preset--color--base-3); font-size: .8125rem; letter-spacing: .04em; color: var(--wp--preset--color--contrast-3); }
.km-single .wp-block-woocommerce-product-meta .wp-block-group { gap: .4rem 1.75rem; }
.km-single .wp-block-woocommerce-product-meta .wc-block-components-product-sku, .km-single .wp-block-woocommerce-product-meta .wp-block-post-terms { margin: 0; white-space: nowrap; }
.km-single .wp-block-woocommerce-product-meta a { color: var(--wp--preset--color--contrast-2); }
.km-single .wp-block-woocommerce-product-details { margin-top: clamp(2.5rem, 5vw, 4.5rem); }
.km-single .wc-block-product-details { max-width: none; }
.km-single .woocommerce-tabs ul.tabs { display: flex; gap: 2rem; padding: 0; margin: 0 0 1.5rem; list-style: none; border-bottom: 1px solid var(--wp--preset--color--base-3); }
.km-single .woocommerce-tabs ul.tabs::before, .km-single .woocommerce-tabs ul.tabs li::before, .km-single .woocommerce-tabs ul.tabs li::after { display: none !important; }
.km-single .woocommerce-tabs ul.tabs li { margin: 0; padding: 0; background: transparent; border: 0; border-radius: 0; }
.km-single .woocommerce-tabs ul.tabs li a { display: block; padding: .8rem 0; font-size: .8125rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--contrast-3); border-bottom: 1px solid transparent; margin-bottom: -1px; font-weight: 500; }
.km-single .woocommerce-tabs ul.tabs li.active a { color: var(--wp--preset--color--contrast); border-bottom-color: var(--wp--preset--color--contrast); }
.km-single .wp-block-woocommerce-related-products { margin-top: clamp(2.5rem, 5vw, 4.5rem); }
.km-single .wp-block-woocommerce-related-products h2 { font-size: 1.75rem; margin-bottom: 1.75rem; }
.km-single .wp-block-woocommerce-related-products .wp-block-post-template, .km-single .wp-block-woocommerce-related-products .wc-block-product-template { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; gap: 2.5rem 1.5rem; }
.km-single .wp-block-woocommerce-related-products .wp-block-post-title { font-family: var(--wp--preset--font-family--body); font-size: .9375rem; font-weight: 500; margin: 0 0 .3rem; text-align: left; }
.km-single .wp-block-woocommerce-related-products .wc-block-components-product-price { text-align: left; }
.km-single .wp-block-woocommerce-related-products .wc-block-components-product-button { text-align: left; }
.km-single .wp-block-woocommerce-related-products .wc-block-components-product-image img { border-radius: 3px; }
@media (max-width: 781px) {
  .km-single .wp-block-woocommerce-related-products .wp-block-post-template, .km-single .wp-block-woocommerce-related-products .wc-block-product-template { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
/* ---------- Journal ---------- */
.km-journal .wp-block-post-template { gap: 3rem 2rem; }
.km-journal .wp-block-post-title a { text-decoration: none; }
.km-journal .wp-block-query-pagination { margin-top: 3rem; justify-content: center; }
.single-post .wp-block-post-title { font-size: clamp(2.2rem, 4vw, 3.25rem); }
.km-single table.variations select, .km-single .wp-block-add-to-cart-form select { height: auto !important; min-height: 2.9rem; line-height: 1.3 !important; padding: .6rem 2.2rem .6rem .85rem !important; }
.km-single .wp-block-woocommerce-product-meta .wp-block-group > * { flex: 0 0 auto; }
.km-single .wc-block-components-product-sku, .km-single .wc-block-components-product-sku * { display: inline !important; white-space: nowrap; }

/* ---------- Language / currency switch ---------- */
.km-topbar-inner { font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; row-gap: .25rem; }
.km-topbar-inner p { margin: 0; }
.km-switch { display: inline-flex; gap: 1.4rem; white-space: nowrap; }
.km-switch a { color: inherit; text-decoration: none; opacity: .62; }
.km-switch a:hover, .km-switch a.is-active { opacity: 1; }
.km-switch a.is-active { text-decoration: underline; text-underline-offset: .32em; text-decoration-thickness: 1px; }
.km-switch-sep { opacity: .4; margin: 0 .4rem; }
@media (max-width: 781px) { .km-topbar-inner { justify-content: center !important; text-align: center; } }

/* ---------- Japanese typography ---------- */
html[lang="ja"] body { --wp--preset--font-family--heading: "Noto Serif JP", "Hiragino Mincho ProN", "Yu Mincho", serif; --wp--preset--font-family--body: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", sans-serif; font-feature-settings: "palt"; }
html[lang="ja"] h1, html[lang="ja"] h2, html[lang="ja"] h3, html[lang="ja"] h4, html[lang="ja"] .wp-block-post-title { letter-spacing: .03em; font-weight: 500; line-height: 1.35; }
html[lang="ja"] .km-hero h1 { font-size: clamp(2rem, 3.6vw, 3.1rem); line-height: 1.3; letter-spacing: .04em; }
html[lang="ja"] .km-hero h1 em { font-style: normal; font-weight: 500; white-space: nowrap; }
html[lang="ja"] .km-jp { font-family: var(--wp--preset--font-family--heading); letter-spacing: .14em; }
html[lang="ja"] .km-page-hero .km-jp, html[lang="ja"] .km-tile .km-jp, html[lang="ja"] .km-newsletter .km-jp, html[lang="ja"] .km-journal .km-jp, html[lang="ja"] .km-shop-head .km-jp, html[lang="ja"] .km-cat-hero .km-jp, html[lang="ja"] .km-single-jp { font-family: "Cormorant Garamond", Georgia, serif; text-transform: uppercase; letter-spacing: .2em; font-size: .78rem; font-weight: 500; }
html[lang="ja"] .km-eyebrow, html[lang="ja"] .km-link, html[lang="ja"] .km-tile-cta, html[lang="ja"] .wp-block-navigation-item__label { letter-spacing: .12em; }
html[lang="ja"] .km-lead { line-height: 1.9; font-size: 1.05rem; }
html[lang="ja"] p { line-height: 1.9; }
html[lang="ja"] .km-single .wp-block-post-title { font-size: clamp(1.6rem, 2.6vw, 2.1rem); }
html[lang="ja"] .km-tile h3 { font-size: 1.5rem; }
html[lang="ja"] .wc-block-components-product-price, html[lang="ja"] .wp-block-woocommerce-product-price { font-family: var(--wp--preset--font-family--body); }
