/* Nuvälsa site styles. Colors, type and spacing come from theme.json; this file covers layout the Styles panel can't. */
:root {
	/* The mark's three circles and where they overlap (sampled from the logo). */
	--nv-navy: #003399;
	--nv-navy-deep: #002475; /* primary button hover */
	--nv-blue: #3366ff;
	--nv-sky: #33ccff;
	--nv-aqua: #5ce0ff;
	--nv-azure: #00aeff;
	--nv-mid: #3385ff;
	--nv-text: #14213d;
	--nv-muted: #5b6478;
	--nv-line: #e3e7f0;
	--nv-surface: #f4f8ff;
	--nv-radius: 20px;
}
body { -webkit-font-smoothing: antialiased; }

/* Layout */
.wp-site-blocks { display: flex; flex-direction: column; min-height: 100vh; }
.wp-site-blocks > main, .wp-site-blocks > .nv-main { flex: 1; }
.wp-site-blocks > * + * { margin-block-start: 0; }
.nv-main { padding-block: var(--wp--preset--spacing--50); }

/* Header */
/* Sticky header, desktop and mobile. Sticky goes on the template-part wrapper: .nv-header fills it exactly, so it can't stick on its own. */
.wp-site-blocks > header.wp-block-template-part:has(.nv-header) { position: sticky; top: 0; z-index: 50; }
.admin-bar .wp-site-blocks > header.wp-block-template-part:has(.nv-header) { top: var(--wp-admin--admin-bar--height, 32px); }
.nv-header { border-bottom: 1px solid var(--wp--preset--color--line); background: var(--wp--preset--color--white); transition: box-shadow .2s; }
.nv-scrolled .nv-header { box-shadow: 0 6px 24px rgba(0, 51, 153, .07); }
html { scroll-padding-top: 88px; }
.nv-header-inner { padding-block: 14px; gap: 24px; }
.nv-header-tools { gap: 20px; }
.nv-logo img { display: block; height: auto; }
.nv-nav a { color: var(--wp--preset--color--text); text-decoration: none; }
.nv-nav a:hover, .nv-nav .current-menu-item > a { color: var(--nv-blue); }
@media (max-width: 600px) {
	.nv-header-tools { gap: 12px; }
	.nv-logo img { width: 120px; }
}

/* Footer */
.nv-footer a { color: var(--wp--preset--color--text); text-decoration: none; }
.nv-footer a:hover { color: var(--wp--preset--color--blue); }
.nv-foot-head { font-size: 14px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--wp--preset--color--muted); margin-block-end: 12px; }
.nv-foot-links { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; font-size: 15px; }
.nv-foot-base { border-top: 1px solid var(--wp--preset--color--line); padding-top: var(--wp--preset--spacing--40); margin-top: var(--wp--preset--spacing--50); }
/* Mobile footer: brand block on top, Shop and Help side by side, then the base row. */
@media (max-width: 781px) {
	.nv-foot.wp-block-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 36px 24px; }
	.nv-foot > .wp-block-column:first-child { grid-column: 1 / -1; padding-bottom: 28px; border-bottom: 1px solid var(--wp--preset--color--line); }
	.nv-foot > .wp-block-column:first-child > * + * { margin-top: 12px; }
	.nv-foot .nv-foot-head { margin-block: 0 14px; font-size: 12px; }
	.nv-foot .nv-foot-links { gap: 2px; }
	.nv-foot .nv-foot-links a { display: block; padding-block: 7px; }
	.nv-foot .nv-foot-links a[href^="mailto:"] { overflow-wrap: anywhere; }
	.nv-foot-base { margin-top: 32px; }
}

/* ---------- Hero: the mark's three circles, oversized and cropped by the panel ---------- */
html { scroll-behavior: smooth; }
.nv-hero { position: relative; isolation: isolate; overflow: hidden; margin-block-end: var(--wp--preset--spacing--60); min-height: 460px; display: flex; align-items: center; }
.nv-hero::before {
	/* The navy circle sits behind the product; the blue circle runs off the top, the sky one off the right.
	   --nv-s is pixels per unit of mark.svg (a circle's radius is 100 units). */
	--nv-s: clamp(2.2px, 0.24vw, 2.9px);
	content: ""; position: absolute; z-index: -1; pointer-events: none;
	width: calc(337.3 * var(--nv-s)); aspect-ratio: 337.3 / 268.6;
	left: calc(77% - 100 * var(--nv-s)); top: calc(66% - 168.6 * var(--nv-s));
	background: url(../images/mark.svg) center / contain no-repeat;
}
.nv-hero > .nv-hero-cols { width: 100%; gap: var(--wp--preset--spacing--50); margin: 0; }
.nv-hero-title { font-size: clamp(36px, 5.2vw, 60px); line-height: 1.04; letter-spacing: -0.025em; margin: 0; max-width: 11ch; }
.nv-hero-lead { color: var(--nv-text); max-width: 460px; margin-block: 20px 28px; text-wrap: balance; }
.nv-hero .wp-block-button__link { padding: 14px 26px; }
.nv-hero .is-style-outline .wp-block-button__link { background: rgba(255, 255, 255, .7); }
/* Buttons: primary hovers to a deeper navy; secondary keeps its navy outline and takes a soft blue fill. */
.wp-block-button.is-style-outline .wp-block-button__link { background: transparent; color: var(--nv-navy); border: 1.5px solid var(--nv-navy); }
.wp-block-button.is-style-outline .wp-block-button__link:hover { background: #e6edff !important; color: var(--nv-navy) !important; border-color: var(--nv-navy); }

.nv-hero-img { margin: 0; display: flex; justify-content: center; }
.nv-hero-img img { display: block; width: 100%; max-width: 380px; height: auto; filter: drop-shadow(0 30px 40px rgba(0, 24, 80, .28)); transform: rotate(-4deg); }
.nv-shop-title { margin-block-end: var(--wp--preset--spacing--40); scroll-margin-top: 90px; }
@media (max-width: 781px) {
	.nv-hero.nv-hero { padding: 32px 24px 0 !important; min-height: 0; display: block; }
	.nv-hero::before { --nv-s: 1.45px; left: calc(50% - 100 * var(--nv-s)); top: calc(100% - 120px - 168.6 * var(--nv-s)); }
	.nv-hero-img { margin-top: 48px !important; }
	.nv-hero-img img { max-width: 230px; margin-bottom: -24px; }
}

/* ---------- Product cards (shop grid and "Goes well with") ---------- */
.nv-grid .wc-block-product, .nv-cards > li {
	border: 1px solid var(--nv-line); border-radius: var(--nv-radius); padding: 14px 14px 18px; background: #fff;
	display: flex; flex-direction: column; transition: border-color .2s, box-shadow .2s;
}
/* Hover: border and shadow only. No movement, so the hover edge never jitters. */
.nv-grid .wc-block-product:hover, .nv-cards > li:hover { border-color: #c7d6f5; box-shadow: 0 10px 30px rgba(0, 51, 153, .09); }
:is(.nv-grid .wc-block-product, .nv-cards > li) .wp-block-post-title { line-height: 1.35; margin-block: 14px 6px; padding-inline: 4px; }
:is(.nv-grid .wc-block-product, .nv-cards > li) .wp-block-post-title a { color: var(--nv-text); text-decoration: none; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
:is(.nv-grid .wc-block-product, .nv-cards > li) .wp-block-woocommerce-product-price { padding-inline: 4px; }
.nv-grid .wc-block-product .wp-block-woocommerce-product-button { margin-top: auto; padding-top: 12px; }
:is(.nv-grid, .nv-cards) .wc-block-components-product-image { border-radius: 14px; overflow: hidden; background: var(--nv-surface); }
:is(.nv-grid, .nv-cards) .wc-block-components-product-image img { aspect-ratio: 1; object-fit: contain; mix-blend-mode: multiply; }
.wc-block-components-product-price del { color: var(--nv-muted); font-weight: 400; opacity: 1; }
.wc-block-components-product-price ins { text-decoration: none; }

/* Add to cart on a card: the button turns into "1 in cart" and the cart drawer opens (header mini-cart, addToCartBehaviour),
   so WooCommerce's extra "View cart" link under the button isn't needed. */
.wc-block-components-product-button :is(.added_to_cart, span:has(> .added_to_cart)) { display: none !important; }

/* Sale badge: "Save $40" (inc/sale.php), a sky pill in the image's top-left corner. */
.wc-block-components-product-sale-badge, .woocommerce span.onsale {
	position: absolute; z-index: 2; top: 12px; left: 12px; right: auto; margin: 0;
	padding: 6px 11px; border: 0; border-radius: 999px; min-height: 0; min-width: 0; line-height: 1;
	background: var(--nv-sky); color: var(--nv-navy); font-size: 13px; font-weight: 700; letter-spacing: 0; text-transform: none;
	box-shadow: 0 2px 8px rgba(0, 51, 153, .12);
}
.wc-block-components-product-image .wc-block-components-product-sale-badge { top: 12px; left: 12px; right: auto; }

/* ---------- Product page ---------- */
.nv-pdp { padding-block: 20px var(--wp--preset--spacing--60); }
.woocommerce-breadcrumb { font-size: 14px; color: var(--nv-muted); margin-block-end: var(--wp--preset--spacing--40); }
.woocommerce-breadcrumb a { color: var(--nv-muted); text-decoration: none; }
.woocommerce-breadcrumb a:hover { color: var(--nv-navy); }
.nv-pdp-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: clamp(32px, 5vw, 72px); align-items: start; }
.nv-pdp-grid > * { margin: 0 !important; }
.nv-pdp-media { position: sticky; top: 96px; }
.nv-pdp .woocommerce-product-gallery { width: 100% !important; float: none !important; margin: 0 !important; position: relative; }
.nv-pdp .woocommerce-product-gallery__wrapper { margin: 0; }
.nv-pdp .woocommerce-product-gallery__image a { cursor: zoom-in; }
.nv-pdp .woocommerce-product-gallery__image img, .nv-pdp .woocommerce-product-gallery .flex-viewport {
	border-radius: 24px; background: var(--nv-surface); width: 100%; aspect-ratio: 1; object-fit: contain;
}
.nv-pdp .woocommerce-product-gallery__image img { mix-blend-mode: multiply; }
.nv-pdp .woocommerce-product-gallery__trigger { top: 16px !important; right: 16px !important; background: #fff !important; border-radius: 999px; box-shadow: 0 2px 10px rgba(0, 51, 153, .14); }
.nv-pdp .flex-control-thumbs { display: flex; flex-wrap: wrap; gap: 10px; margin: 14px 0 0 !important; padding: 0; list-style: none; }
.nv-pdp .flex-control-thumbs li { width: 76px !important; float: none !important; margin: 0 !important; }
.nv-pdp .flex-control-thumbs img { border-radius: 14px; border: 2px solid transparent; background: var(--nv-surface); mix-blend-mode: multiply; opacity: .75; cursor: pointer; transition: opacity .15s, border-color .15s; }
.nv-pdp .flex-control-thumbs img:hover { opacity: 1; }
.nv-pdp .flex-control-thumbs img.flex-active { opacity: 1; border-color: var(--nv-navy); }

.nv-pdp-info { padding-top: 6px; }
.nv-pdp-info > * { margin-block: 0 !important; }
.nv-eyebrow { font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--nv-blue); margin-bottom: 12px !important; }
.nv-eyebrow a { color: inherit; text-decoration: none; }
.nv-pdp-title { font-size: clamp(28px, 3.2vw, 40px) !important; line-height: 1.12 !important; letter-spacing: -.02em; text-wrap: balance; margin-bottom: 18px !important; }
.nv-price-row { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin-bottom: 18px; }
.nv-pdp-price, .nv-price-row .wc-block-components-product-price { font-size: 28px !important; font-weight: 700; color: var(--nv-navy); letter-spacing: -.01em; }
.nv-pdp-price del { font-size: 20px; margin-right: 6px; }
.nv-save { display: inline-flex; align-items: center; padding: 6px 12px; border-radius: 999px; background: var(--nv-sky); color: var(--nv-navy); font-size: 14px; font-weight: 700; }
.nv-pdp-summary { color: var(--nv-muted); font-size: 17px; margin-bottom: 20px !important; }
.nv-pdp-summary:empty, .nv-pdp-summary:has(.wp-block-post-excerpt__excerpt:empty) { display: none; }

/* Buy box */
.nv-buy { padding: 20px; border: 1px solid var(--nv-line); border-radius: var(--nv-radius); background: #fff; margin-top: 4px !important; }
.nv-buy .stock { margin: 0 0 14px; font-size: 14px; font-weight: 600; color: #1a7f4b; display: flex; align-items: center; gap: 8px; }
.nv-buy .stock::before { content: ""; width: 8px; height: 8px; border-radius: 999px; background: currentColor; box-shadow: 0 0 0 4px rgba(26, 127, 75, .14); }
.nv-buy .stock.out-of-stock { color: #b42318; }
.nv-buy form.cart { display: flex; flex-wrap: wrap; gap: 12px; margin: 0 !important; }
.nv-buy form.cart::before, .nv-buy form.cart::after { display: none !important; }
.nv-buy .quantity { margin: 0 !important; }
.nv-buy .quantity:has(input[type=hidden]) { display: none; }
.nv-buy .quantity .qty { box-sizing: border-box; height: 54px; width: 76px; border: 1px solid var(--nv-line); border-radius: 999px; text-align: center; font: 600 16px/1 var(--wp--preset--font-family--body); color: var(--nv-text); }
.nv-buy .quantity .qty:focus { outline: none; border-color: var(--nv-navy); box-shadow: 0 0 0 3px rgba(0, 51, 153, .15); }
.nv-buy .single_add_to_cart_button {
	flex: 1 1 200px; min-height: 54px; margin: 0 !important; display: inline-flex !important; align-items: center; justify-content: center;
	border-radius: 999px !important; border: 0 !important; background: var(--nv-navy) !important; color: #fff !important;
	font-size: 16px !important; font-weight: 600 !important; padding: 0 28px !important;
	transition: background-color .15s, transform .15s cubic-bezier(.23, 1, .32, 1);
}
.nv-buy .single_add_to_cart_button:hover { background: var(--nv-navy-deep) !important; }
.nv-buy .single_add_to_cart_button:active { transform: scale(.98); }
.nv-buy :is(#wcpay-express-checkout-element, .wcpay-payment-request-wrapper, [id*="express-checkout"], .ppc-button-wrapper) { width: 100%; margin-top: 4px; }

/* Promise list: icons from assets/icons (Phosphor). */
.nv-promise { list-style: none; margin: 22px 0 0 !important; padding: 0; display: grid; gap: 12px; }
.nv-promise li { display: flex; align-items: center; gap: 12px; font-size: 15px; color: var(--nv-text); }
.nv-promise li::before {
	content: ""; flex: 0 0 34px; height: 34px; border-radius: 999px; background-color: var(--nv-surface);
	-webkit-mask: none; background-image: none;
}
.nv-promise li { position: relative; }
.nv-promise li::after {
	content: ""; position: absolute; left: 8px; top: 50%; width: 18px; height: 18px; margin-top: -9px; background: var(--nv-navy);
	-webkit-mask: var(--nv-icon) center / contain no-repeat; mask: var(--nv-icon) center / contain no-repeat;
}
.nv-promise li:nth-child(1) { --nv-icon: url(../icons/package.svg); }
.nv-promise li:nth-child(2) { --nv-icon: url(../icons/credit-card.svg); }
.nv-promise li:nth-child(3) { --nv-icon: url(../icons/envelope-simple.svg); }
.nv-promise a { color: var(--nv-navy); font-weight: 600; }
.nv-pdp .wp-block-woocommerce-product-meta { margin-top: 18px !important; font-size: 13px; color: var(--nv-muted); }
.nv-pdp .wp-block-woocommerce-product-sku { margin: 0; }

/* Details: Woo's tabs as a pill switcher over a clean reading column. */
.nv-pdp-details { margin-block-start: var(--wp--preset--spacing--60); padding-top: var(--wp--preset--spacing--50); border-top: 1px solid var(--nv-line); }
.nv-pdp-details .woocommerce-tabs ul.tabs { display: inline-flex; gap: 4px; padding: 4px !important; margin: 0 0 28px !important; border-radius: 999px; background: var(--nv-surface); border: 0; list-style: none; }
.nv-pdp-details .woocommerce-tabs ul.tabs::before, .nv-pdp-details .woocommerce-tabs ul.tabs::after { display: none !important; }
.nv-pdp-details .woocommerce-tabs ul.tabs li { margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; border-radius: 999px !important; }
.nv-pdp-details .woocommerce-tabs ul.tabs li::before, .nv-pdp-details .woocommerce-tabs ul.tabs li::after { display: none !important; }
.nv-pdp-details .woocommerce-tabs ul.tabs li a { display: block; padding: 9px 18px !important; border-radius: 999px; font-size: 15px; font-weight: 600; color: var(--nv-muted) !important; text-decoration: none; }
.nv-pdp-details .woocommerce-tabs ul.tabs li.active a { background: #fff; color: var(--nv-navy) !important; box-shadow: 0 1px 4px rgba(0, 51, 153, .12); }
.nv-pdp-details .woocommerce-Tabs-panel { color: #34405a; font-size: 17px; line-height: 1.7; }
.nv-pdp-details .woocommerce-Tabs-panel > h2:first-child { display: none; }
.nv-pdp-details .woocommerce-Tabs-panel :is(h1, h2, h3, h4) { font-size: 20px; margin: 28px 0 10px; color: var(--nv-navy); }
.nv-pdp-details .woocommerce-Tabs-panel ul { padding-left: 20px; }
.nv-pdp-details table.shop_attributes { border: 0; border-radius: 14px; overflow: hidden; background: var(--nv-surface); }
.nv-pdp-details table.shop_attributes :is(th, td) { border: 0 !important; border-bottom: 1px solid #fff !important; padding: 12px 18px !important; background: none !important; font-style: normal; }
.nv-pdp-details table.shop_attributes th { width: 160px; font-weight: 600; color: var(--nv-text); }
.nv-related { margin-block-start: var(--wp--preset--spacing--60); }
.nv-related h2 { margin-bottom: 24px; }
@media (max-width: 900px) {
	.nv-pdp-grid { grid-template-columns: minmax(0, 1fr); gap: 28px; }
	.nv-pdp-media { position: static; }
	.nv-cards { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* Classic cart, checkout and account (shortcode pages) */
.nv-wc .nv-page-title { margin-block-end: var(--wp--preset--spacing--40); }
.nv-wc .woocommerce .button, .nv-wc .woocommerce button.button, .nv-wc .woocommerce a.button { border-radius: 999px; background: var(--nv-navy); color: #fff; font-weight: 600; padding: 12px 24px; border: 0; }
.nv-wc .woocommerce .button:hover { background: var(--nv-navy-deep); color: #fff; }
.nv-wc .woocommerce input.input-text, .nv-wc .woocommerce select, .nv-wc .woocommerce textarea { border: 1px solid var(--nv-line); border-radius: 8px; padding: 10px 12px; font: inherit; }
.nv-wc .woocommerce table.shop_table { border-radius: 12px; border-color: var(--nv-line); }
.nv-wc .woocommerce-info, .nv-wc .woocommerce-message { border-top-color: var(--nv-navy); background: var(--nv-surface); }
.nv-wc .woocommerce-info::before, .nv-wc .woocommerce-message::before { color: var(--nv-navy); }

/* Header: account icon (Phosphor user) in place of WooCommerce's. */
.nv-account svg { display: none; }
.nv-account a { display: inline-flex; padding: 4px; color: var(--nv-navy); }
.nv-account a::before { content: ""; width: 24px; height: 24px; background: currentColor; -webkit-mask: url(../icons/user.svg) center / contain no-repeat; mask: url(../icons/user.svg) center / contain no-repeat; }
.nv-account a:hover { color: var(--nv-blue); }
.nv-cart .wc-block-mini-cart__button { color: var(--nv-navy); padding: 4px; }
/* Mobile menu button matches the account and cart icons. */
.nv-header .nv-nav .wp-block-navigation__responsive-container-open { color: var(--nv-navy); }
.nv-header .nv-nav .wp-block-navigation__responsive-container-open:hover { color: var(--nv-blue); }
.nv-cart .wc-block-mini-cart__button:hover { color: var(--nv-blue); }
.nv-nav .nv-nav-extra { display: none; }

/* ---------- Header icons and cart badge (from plethora7) ---------- */
/* Header icons: Phosphor (MIT), assets/icons */
.nv-header .wc-block-mini-cart__icon { visibility: hidden; }
/* Bag glyph: the header cart (WooCommerce's markup, with a count dot) and the empty cart (patterns/cart-empty.php).
   The dot is centered at (13/12, 1/12) of the bag, measured off handbag.svg so the gap cut around it
   clears the handle and straps at any size; it overlaps only the bag's top-right corner. */
:where(.nv-header .wc-block-mini-cart__quantity-badge, .nv-cart-empty__icon) {
	/* One unit: everything below is a fraction of the bag, so any size looks the same. :where, so each use can resize it. */
	--nv-bag: 24px; --nv-dot: calc(var(--nv-bag) * 2 / 3); --nv-dot-gap: calc(var(--nv-bag) / 12); --nv-dot-font: calc(var(--nv-bag) * 11 / 24);
	position: relative;
}
:is(.nv-header .wc-block-mini-cart__quantity-badge, .nv-cart-empty__icon)::before {
	content: ""; position: absolute; left: 50%; top: 50%; width: var(--nv-bag); height: var(--nv-bag); transform: translate(-50%, -50%);
	background: currentColor; -webkit-mask: url(../icons/handbag.svg) center / contain no-repeat; mask: url(../icons/handbag.svg) center / contain no-repeat;
}
/* While the dot shows, cut a gap around it out of the bag, so it reads on any background. */
.nv-header .wc-block-mini-cart__quantity-badge:has(.wc-block-mini-cart__badge:not([hidden]))::before {
	--nv-dot-hole: radial-gradient(circle at calc(var(--nv-bag) * 13 / 12) calc(var(--nv-bag) / 12), transparent calc(var(--nv-dot) / 2 + var(--nv-dot-gap)), #000 calc(var(--nv-dot) / 2 + var(--nv-dot-gap) + .5px));
	-webkit-mask: var(--nv-dot-hole), url(../icons/handbag.svg) center / contain no-repeat; -webkit-mask-composite: source-in;
	mask: var(--nv-dot-hole), url(../icons/handbag.svg) center / contain no-repeat; mask-composite: intersect;
}
/* No transform here: the pop animation scales the dot. WooCommerce sets the header dot's colors inline, hence !important. */
.nv-header .wc-block-mini-cart__badge {
	--nv-badge-bg: var(--nv-sky); --nv-badge-fg: var(--nv-navy);
	position: absolute; left: calc(50% + var(--nv-bag) * 7 / 12 - var(--nv-dot) / 2); top: calc(50% - var(--nv-bag) * 5 / 12 - var(--nv-dot) / 2);
	right: auto; transform: none;
	box-sizing: border-box; min-width: var(--nv-dot); height: var(--nv-dot); padding: 0 calc(var(--nv-dot) / 4); margin: 0;
	display: flex; align-items: center; justify-content: center; border-radius: 999px;
	background: var(--nv-badge-bg) !important; color: var(--nv-badge-fg) !important;
	font-family: var(--wp--preset--font-family--body); font-size: var(--nv-dot-font); font-weight: 600; line-height: 1;
	font-variant-numeric: tabular-nums; letter-spacing: 0;
}
.nv-header .wc-block-mini-cart__badge[hidden] { display: none; }
/* cart.js adds .nv-pop when the count changes. */
.nv-header .wc-block-mini-cart__badge.nv-pop { animation: nv-badge-pop .32s var(--nv-ease-out); }
@keyframes nv-badge-pop { 40% { transform: scale(1.25); } }
@media (prefers-reduced-motion: reduce) { .nv-header .wc-block-mini-cart__badge.nv-pop { animation: none; } }

/* ---------- Sheets: the mobile menu and the cart drawer ---------- */
/* Both float over the dimmed page as an inset card, with the same gap, corners, scrim and motion. */
:root {
	--nv-sheet-gap: 8px;
	/* Sheets float, so their corners follow the pills inside them rather than the flat page cards
	   (--nv-radius): pill radius plus the inset keeps the curves concentric (22 + 16 = 38px). */
	--nv-pill-h: 44px;
	--nv-sheet-pad: 16px;
	/* Text and square content sit further in than the pills, clear of the corner's bend. */
	--nv-sheet-content: 22px;
	--nv-sheet-radius: calc(var(--nv-pill-h) / 2 + var(--nv-sheet-pad));
	--nv-scrim: rgba(12, 18, 40, .45);
	--nv-sheet-ease: cubic-bezier(.32, .72, 0, 1);
	--nv-sheet-exit: cubic-bezier(.4, 0, 1, 1);
	--nv-sheet-in: .42s;
	--nv-sheet-out: .22s;
	--nv-ease-out: cubic-bezier(.23, 1, .32, 1);
}
@keyframes nv-fade-in { from { opacity: 0; } }
@keyframes nv-fade-out { to { opacity: 0; } }
/* Scrims fade by color only, so the sheet or card over them stays opaque while it moves. */
@keyframes nv-scrim-in { from { background-color: transparent; } }
@keyframes nv-scrim-out { to { background-color: transparent; } }

/* Mobile menu: core navigation overlay (under 600px) as a bottom sheet. */
/* A filter on the pinned header would trap the fixed overlay inside the 68px bar. Leave its slide-in
   animation alone: toggling it here replays the slide when the menu closes. */
.nv-nav .nv-nav-extra { display: none; }
.nv-header .nv-nav:not(.has-background) .wp-block-navigation__responsive-container.is-menu-open {
	background: var(--nv-scrim); color: var(--nv-text); padding: 0;
	/* Not a scroll container (core uses auto): Safari would scroll it to the link core focuses
	   while the sheet is still sliding in, and the sheet jumps. The sheet scrolls its own content. */
	overflow: hidden; overflow: clip;
	animation: nv-scrim-in .2s ease-out both;
}
.nv-header .nv-nav .is-menu-open .wp-block-navigation__responsive-close {
	position: absolute; width: auto; max-width: none; height: auto;
	left: var(--nv-sheet-gap); right: var(--nv-sheet-gap); bottom: calc(var(--nv-sheet-gap) + env(safe-area-inset-bottom));
}
.nv-header .nv-nav .is-menu-open .wp-block-navigation__responsive-dialog {
	position: relative; display: flex; flex-direction: column;
	max-height: calc(100dvh - 96px - env(safe-area-inset-bottom));
	background: #fff; border-radius: var(--nv-sheet-radius);
	box-shadow: 0 -8px 40px rgba(12, 18, 40, .18);
	animation: nv-sheet-up var(--nv-sheet-in) var(--nv-sheet-ease) both;
}
/* Close: a round button floating above the sheet, where Krate puts theirs. */
.nv-header .nv-nav .is-menu-open .wp-block-navigation__responsive-container-close {
	top: auto; right: auto; left: 50%; bottom: calc(100% + 14px);
	width: 48px; height: 48px; margin-left: -24px; display: grid; place-items: center;
	background: #fff; color: var(--nv-text); border-radius: 999px;
	box-shadow: 0 4px 16px rgba(12, 18, 40, .2); -webkit-tap-highlight-color: transparent;
	animation: nv-fade-in .2s .12s ease-out both;
	transition: transform .15s var(--nv-ease-out);
}
.nv-header .nv-nav .is-menu-open .wp-block-navigation__responsive-container-close:active { transform: scale(.92); }
.nv-header .nv-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain;
	padding: 14px 22px 20px; gap: 0; align-items: stretch;
}
.nv-nav .is-menu-open .wp-block-navigation__container { flex: 1; flex-direction: column; align-items: stretch; gap: 0; }
.nv-nav .is-menu-open .wp-block-navigation-item { width: 100%; animation: nv-menu-item .4s var(--nv-ease-out) both; }
.nv-nav .is-menu-open .wp-block-navigation-item:nth-child(1) { animation-delay: 70ms; }
.nv-nav .is-menu-open .wp-block-navigation-item:nth-child(2) { animation-delay: 100ms; }
.nv-nav .is-menu-open .wp-block-navigation-item:nth-child(3) { animation-delay: 130ms; }
.nv-nav .is-menu-open .wp-block-navigation-item:nth-child(4) { animation-delay: 160ms; }
.nv-nav .is-menu-open .wp-block-navigation-item:nth-child(n+5) { animation-delay: 190ms; }
.nv-header .nv-nav:not(.has-background) .is-menu-open .wp-block-navigation-item__content {
	display: flex; justify-content: space-between; align-items: center; width: 100%;
	padding: 11px 0; border: 0; opacity: 1; color: var(--nv-text); -webkit-tap-highlight-color: transparent;
	font-family: var(--wp--preset--font-family--body); font-size: 24px; font-weight: 600; letter-spacing: -.01em; line-height: 1.2;
	transition: color .15s;
}
.nv-header .nv-nav:not(.has-background) .is-menu-open .wp-block-navigation-item__content::after {
	content: "\2192"; font-family: var(--wp--preset--font-family--body); font-size: 20px; font-weight: 400; color: #9aa1b3;
	transition: transform .2s var(--nv-ease-out), color .15s;
}
.nv-header .nv-nav:not(.has-background) .is-menu-open .wp-block-navigation-item__content:is(:hover, :active) { color: var(--nv-navy); }
.nv-header .nv-nav:not(.has-background) .is-menu-open .wp-block-navigation-item__content:is(:hover, :active)::after { color: var(--nv-navy); transform: translateX(4px); }
/* Account and support details, at the foot of the sheet. */
.nv-nav .is-menu-open .nv-nav-extra { display: flex; }
.nv-nav .is-menu-open .wp-block-navigation-item.nv-nav-extra:not(.nv-nav-extra ~ .nv-nav-extra) { margin-top: auto; padding-top: 24px; }
.nv-header .nv-nav:not(.has-background) .is-menu-open .nv-nav-extra .wp-block-navigation-item__content {
	padding: 6px 0; font-family: var(--wp--preset--font-family--body); font-size: 16px; font-weight: 500; letter-spacing: 0; color: var(--nv-muted);
}
.nv-header .nv-nav:not(.has-background) .is-menu-open .nv-nav-extra .wp-block-navigation-item__content::after { content: none; }
/* Exit: header.js adds .nv-sheet-closing, waits for the sheet to leave, then lets core close the menu. */
.nv-header .nv-nav .wp-block-navigation__responsive-container.is-menu-open.nv-sheet-closing { animation: nv-scrim-out var(--nv-sheet-out) ease-in both; }
.nv-header .nv-nav .is-menu-open.nv-sheet-closing .wp-block-navigation__responsive-dialog { animation: nv-sheet-down var(--nv-sheet-out) var(--nv-sheet-exit) both; }
.nv-header .nv-nav .is-menu-open.nv-sheet-closing .wp-block-navigation__responsive-container-close { animation: nv-fade-out .12s ease-in both; }
/* Far enough to take the floating close button off screen with the sheet. */
@keyframes nv-sheet-up { from { transform: translateY(calc(100% + 96px)); } }
@keyframes nv-sheet-down { to { transform: translateY(calc(100% + 96px)); } }
@keyframes nv-menu-item { from { opacity: 0; transform: translateY(8px); } }

/* Cart: the WooCommerce mini-cart drawer as an inset card from the right. */
/* Fade only the scrim's color: WooCommerce fades the whole overlay, which turns the card see-through as it slides. */
.wc-block-components-drawer__screen-overlay { background-color: var(--nv-scrim); }
.wc-block-components-drawer__screen-overlay--with-slide-in { animation: nv-scrim-in .2s ease-out; }
.wc-block-components-drawer__screen-overlay--is-hidden {
	opacity: 1; visibility: hidden; background-color: transparent;
	transition: background-color var(--nv-sheet-out) ease-in, visibility 0s var(--nv-sheet-out);
}
.wc-block-components-drawer {
	top: var(--nv-sheet-gap); height: calc(100% - var(--nv-sheet-gap) * 2);
	inset-inline-start: calc(100% - var(--nv-sheet-gap));
	width: min(var(--drawer-width), calc(100vw - var(--nv-sheet-gap) * 2));
	/* clip, not hidden: a hidden box is still scrollable, and Safari scrolls it to whatever
	   WooCommerce focuses while the card is sliding in, which replays the slide. */
	border-radius: var(--nv-sheet-radius); overflow: hidden; overflow: clip;
	box-shadow: -8px 0 40px rgba(12, 18, 40, .18);
}
.wc-block-components-drawer__content { height: 100%; }
.wc-block-components-drawer__screen-overlay--with-slide-in .wc-block-components-drawer { animation-duration: var(--nv-sheet-in); animation-timing-function: var(--nv-sheet-ease); }
/* Transitions only on the way out. WooCommerce keeps --with-slide-out on while the drawer is open, and
   Safari runs that transition when the slide-in animation ends, so the card slides in a second time. */
.wc-block-components-drawer__screen-overlay--with-slide-in,
.wc-block-components-drawer__screen-overlay--with-slide-in .wc-block-components-drawer { transition: none; }
.wc-block-components-drawer__screen-overlay--is-hidden .wc-block-components-drawer { transition: transform var(--nv-sheet-out) var(--nv-sheet-exit); }
/* Hidden, the card would peek in by the gap; push it fully off screen. */
.wc-block-components-drawer__screen-overlay--is-hidden .wc-block-components-drawer { transform: translateX(calc(var(--nv-sheet-gap) + 40px)); }

/* Signed in, WooCommerce pushes the drawer content down by the admin bar and keeps it full height, which cut off the footer's
   bottom padding. Move the whole card below the admin bar instead. */
.admin-bar .wc-block-components-drawer {
	top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--nv-sheet-gap));
	height: calc(100% - var(--wp-admin--admin-bar--height, 0px) - var(--nv-sheet-gap) * 2);
}
.admin-bar .wc-block-components-drawer__content { height: 100%; margin-top: 0; }

/* Footer pills sit the same inset from the sides and bottom, so they nest in the card's corners. */
.wc-block-mini-cart__drawer .wc-block-mini-cart__footer { padding: var(--nv-sheet-pad); }
.wc-block-mini-cart__drawer .wc-block-mini-cart__footer-actions .wc-block-components-button { box-sizing: border-box; height: var(--nv-pill-h); min-height: 0; padding-block: 0; border-radius: 999px; }

/* "Save $40" on a cart line: the same sky pill as the product page (.nv-save). cart.js drops ".00". */
.wc-block-mini-cart__drawer .wc-block-components-sale-badge {
	display: inline-block; margin: 6px 0 0; padding: 4px 9px; border: 0; border-radius: 999px;
	background: var(--nv-sky); color: var(--nv-navy); font-size: 12px; font-weight: 700; line-height: 1.2; white-space: nowrap;
}
.wc-block-mini-cart__drawer .wc-block-components-sale-badge[hidden] { display: none; }

/* Cart contents: a quieter title, product names in text color, and a pill quantity stepper. */
.wc-block-mini-cart__drawer .wc-block-mini-cart__title {
	display: flex; align-items: baseline; gap: 8px; margin: 0; padding: 8px 60px 0 var(--nv-sheet-content);
	font-size: 20px; font-weight: 600; letter-spacing: -.01em; line-height: 1.3; mask-image: none;
}
/* The title reads "2 items in your cart": the count leads, the rest steps back. */
.wc-block-mini-cart__drawer :is(.wp-block-woocommerce-mini-cart-title-label-block, .wp-block-woocommerce-mini-cart-title-items-counter-block) { display: none; }
.wc-block-mini-cart__drawer .nv-cart-count { font-weight: 400; color: var(--nv-muted); }
.wc-block-mini-cart__drawer .nv-cart-count b { font-weight: 600; color: var(--nv-text); }
.wc-block-mini-cart__drawer .wc-block-components-drawer__close { top: 25px; inset-inline-end: 18px; } /* X centered on the title's cap height */
/* The item list is the scroll area between the pinned title and footer. Its edges fade, so rows
   don't crowd the title and a cut-off row reads as "more below". The padding keeps rows at rest clear of the fades. */
.wc-block-mini-cart__drawer .wc-block-mini-cart__items {
	padding: 22px var(--nv-sheet-content) 16px; overscroll-behavior: contain;
	-webkit-mask-image: linear-gradient(to bottom, transparent 6px, #000 22px, #000 calc(100% - 16px), transparent);
	mask-image: linear-gradient(to bottom, transparent 6px, #000 22px, #000 calc(100% - 16px), transparent);
}
.wc-block-mini-cart__drawer .wc-block-mini-cart__footer .wc-block-components-totals-item { padding-inline: calc(var(--nv-sheet-content) - var(--nv-sheet-pad)); }
.wc-block-mini-cart__drawer a.wc-block-components-product-name {
	color: var(--nv-text); font-size: 15px; font-weight: 600; line-height: 1.35; text-decoration: none;
}
.wc-block-mini-cart__drawer a.wc-block-components-product-name:hover { color: var(--nv-navy); }
.wc-block-mini-cart__drawer .wc-block-cart-item__image img { border-radius: 10px; }
/* One price per line: the line total on the right; the unit price only once there's more than one, as "$19.99 each" (cart.js marks those rows .nv-multi). */
.wc-block-mini-cart__drawer .wc-block-cart-items__row:not(.nv-multi) .wc-block-cart-item__prices { display: none; }
.wc-block-mini-cart__drawer .wc-block-cart-item__prices { font-size: 14px; color: var(--nv-muted); }
.wc-block-mini-cart__drawer .wc-block-cart-item__prices .wc-block-components-product-price::after { content: " each"; }

.wc-block-components-quantity-selector {
	display: inline-flex; align-items: stretch; width: auto; height: 36px;
	border: 1px solid var(--nv-line); border-radius: 999px; background: #fff; overflow: hidden;
}
.wc-block-components-quantity-selector::after { content: none; }
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button {
	flex: 0 0 36px; min-width: 36px; padding: 0; border: 0; background: none; color: var(--nv-text);
	font-size: 18px; line-height: 1; opacity: 1; cursor: pointer; -webkit-tap-highlight-color: transparent;
	transition: background-color .15s, color .15s;
}
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:hover:not(:disabled) { background: var(--nv-surface); }
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:active:not(:disabled) { background: var(--nv-line); }
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:disabled { color: #c3c8d4; cursor: default; }
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__input {
	width: 32px; min-width: 0; padding: 0; border: 0; background: none; box-shadow: none;
	font-size: 15px; font-weight: 600; text-align: center; color: var(--nv-text); -moz-appearance: textfield;
}
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__input::-webkit-inner-spin-button,
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.wc-block-components-quantity-selector:has(:focus-visible) { border-color: var(--nv-navy); box-shadow: 0 0 0 3px rgba(0, 51, 153, .15); }
.wc-block-components-quantity-selector :is(.wc-block-components-quantity-selector__input, .wc-block-components-quantity-selector__button):focus { outline: none; box-shadow: none; }
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:focus-visible { background: var(--nv-surface); }

/* Empty cart (patterns/cart-empty.php): the same block in the drawer and on /cart/. */
.nv-cart-empty { display: flex; flex-direction: column; align-items: center; text-align: center; max-width: 340px; margin: 0 auto; padding: 24px 0; }
.nv-cart-empty__icon {
	--nv-bag: 64px;
	width: var(--nv-bag); height: var(--nv-bag); margin-bottom: 20px; color: var(--nv-navy);
}
.nv-cart-empty .nv-cart-empty__title { margin: 0; font-size: 20px; font-weight: 600; letter-spacing: -.01em; line-height: 1.3; color: var(--nv-text); }
.nv-cart-empty .nv-cart-empty__text { margin: 8px 0 0; font-size: 15px; line-height: 1.55; color: var(--nv-muted); }
.nv-cart-empty__actions { display: flex; flex-direction: column; gap: 10px; width: 100%; margin-top: 24px; }
.nv-pill {
	display: flex; align-items: center; justify-content: center; min-height: var(--nv-pill-h); padding: 0 24px; border-radius: 999px;
	font-size: 15px; font-weight: 600; text-decoration: none; -webkit-tap-highlight-color: transparent;
	transition: background-color .15s, transform .15s var(--nv-ease-out);
}
.nv-pill:active { transform: scale(.98); }
.nv-pill--primary { background: var(--nv-navy); color: #fff; }
.nv-pill--primary:hover { background: var(--nv-navy-deep); color: #fff; }
/* In the drawer, center it in the card. */
.wc-block-mini-cart__drawer .wp-block-woocommerce-empty-mini-cart-contents-block { display: flex; align-items: center; justify-content: center; min-height: 100%; padding: 24px 20px; }
/* On /cart/, drop WooCommerce's own empty-cart icon and give the block room. */
.wp-block-woocommerce-empty-cart-block .nv-cart-empty { padding: 48px 0 64px; }

@media (prefers-reduced-motion: reduce) {
	.nv-header .nv-nav .is-menu-open .wp-block-navigation__responsive-dialog { animation-name: nv-fade-in; animation-duration: .18s; }
	.nv-header .nv-nav .is-menu-open.nv-sheet-closing .wp-block-navigation__responsive-dialog { animation-name: nv-fade-out; }
	.nv-nav .is-menu-open .wp-block-navigation-item { animation-name: nv-fade-in; animation-duration: .18s; }
	.wc-block-components-drawer__screen-overlay--with-slide-in .wc-block-components-drawer { animation-name: nv-fade-in; }
}

/* ---------- My Account and sign-in (.nv-acct) ---------- */
.nv-acct { padding-block: 48px 72px; }
.nv-acct-head { margin: 0 0 28px; }
.nv-acct-head h1 { margin: 0; font-size: clamp(28px, 4vw, 38px); letter-spacing: -0.02em; line-height: 1.15; }
.nv-acct-head p { margin: 8px 0 0; color: var(--nv-muted); }
.nv-acct-eyebrow { margin: 0 0 6px !important; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--nv-muted); }
.nv-acct .nv-acct-body > .woocommerce { max-width: none; width: 100%; }
.nv-acct-head--guest { text-align: center; max-width: 560px; margin-inline: auto; }
.nv-acct-head--guest p { text-wrap: balance; }

/* Fields and buttons, shared by every account form. */
.nv-acct .woocommerce form .form-row { margin: 0 0 16px; padding: 0; }
.nv-acct .woocommerce form .form-row label:not(.woocommerce-form__label-for-checkbox) { display: block; margin: 0 0 6px; font-size: 14px; font-weight: 600; color: var(--nv-text); line-height: 1.4; }
.nv-acct .woocommerce form .form-row .required { color: var(--nv-muted); text-decoration: none; }
.nv-acct .woocommerce :is(input.input-text, select, textarea),
.nv-acct .woocommerce .select2-container .select2-selection--single {
	width: 100%; box-sizing: border-box; min-height: 46px; padding: 11px 14px; font: inherit; font-size: 15px;
	color: var(--nv-text); background: #fff; border: 1px solid #d5dae6; border-radius: 12px;
	transition: border-color .15s, box-shadow .15s;
}
.nv-acct .woocommerce .select2-container .select2-selection--single { padding: 0 14px; display: flex; align-items: center; }
.nv-acct .woocommerce .select2-container .select2-selection__rendered { padding: 0; line-height: 44px; }
.nv-acct .woocommerce .select2-container .select2-selection__arrow { height: 44px; right: 8px; }
.nv-acct .woocommerce :is(input.input-text, select, textarea):focus { outline: none; border-color: var(--nv-navy); box-shadow: 0 0 0 4px rgba(0, 51, 153, .15); }
.nv-acct .woocommerce .password-input { display: block; position: relative; }
.nv-acct .woocommerce .show-password-input { top: 50%; transform: translateY(-50%); right: 12px; }
.nv-acct .woocommerce :is(button.button, a.button, input.button) {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 46px; padding: 11px 22px;
	border: 0; border-radius: 999px; background: var(--nv-navy); color: #fff; font: inherit; font-size: 15px; font-weight: 600;
	line-height: 1.3; text-decoration: none; cursor: pointer; transition: background .15s;
}
.nv-acct .woocommerce :is(button.button, a.button, input.button):hover { background: var(--nv-navy-deep); color: #fff; }
.nv-acct .woocommerce .woocommerce-form__label-for-checkbox { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--nv-muted); }
.nv-acct .woocommerce input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--nv-navy); margin: 0; }
.nv-acct .woocommerce fieldset { margin: 24px 0 16px; padding: 20px; border: 1px solid var(--nv-line); border-radius: 14px; }
.nv-acct .woocommerce legend { padding: 0 8px; font-weight: 600; }
.nv-acct .woocommerce em, .nv-acct .woocommerce .woocommerce-privacy-policy-text p { font-size: 13px; color: var(--nv-muted); font-style: normal; }
.nv-acct :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) {
	margin: 0 0 20px; padding: 14px 18px; border: 1px solid var(--nv-line);
	border-radius: 12px; background: var(--nv-surface); color: var(--nv-text); list-style: none; font-size: 15px;
}
.nv-acct .woocommerce-error { background: #fdf2f2; border-color: #f3caca; color: #8f2626; }
.nv-acct :is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before { display: none; }
.nv-acct :is(.woocommerce-message, .woocommerce-info) .button { float: right; min-height: 0 !important; padding: 6px 14px !important; font-size: 14px !important; }

/* Signed out: login and register side by side. */
.nv-acct #customer_login { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; max-width: 920px; margin: 0 auto; }
.nv-acct #customer_login::before, .nv-acct #customer_login::after { display: none; }
.nv-acct #customer_login > [class*="u-column"] { float: none; width: auto; max-width: none; padding: 32px; background: #fff; border: 1px solid var(--nv-line); border-radius: var(--nv-radius); }
.nv-acct #customer_login .u-column1 { box-shadow: 0 12px 40px rgba(0, 51, 153, .07); }
.nv-acct #customer_login .u-column2 { background: var(--nv-surface); }
.nv-acct #customer_login h2 { margin: 0 0 6px; font-size: 22px; letter-spacing: -0.01em; }
.nv-acct #customer_login form { margin: 20px 0 0; padding: 0; border: 0; }
.nv-acct .nv-acct-note { margin: 0 0 16px; color: var(--nv-muted); font-size: 15px; }
.nv-acct #customer_login .u-column2 form { margin-top: 0; }
.nv-acct #customer_login .u-column2 form > p:not(.form-row, .nv-acct-note) { margin: 0 0 12px; font-size: 14px; color: var(--nv-muted); }
.nv-acct .woocommerce-form-login__rememberme { margin: 0; }
/* Registration is off, so WooCommerce prints a lone "Welcome back" h2 above the form. The page head already says Sign in. */
.nv-acct .nv-acct-body > .woocommerce > h2 { display: none; }
.nv-acct #customer_login .u-column2 h2 + form .nv-acct-note { margin-top: 0; }
.nv-acct .woocommerce-form-login .form-row:has(.woocommerce-form-login__submit) { display: flex; flex-direction: column-reverse; gap: 14px; align-items: stretch; margin-top: 8px; }
.nv-acct .woocommerce-form-login__submit, .nv-acct .woocommerce-form-register__submit { width: 100%; }
.nv-acct .woocommerce-LostPassword { margin: 14px 0 0; text-align: center; font-size: 14px; }
.nv-acct .woocommerce-LostPassword a, .nv-acct .nv-acct-help a { color: var(--nv-navy); font-weight: 600; text-decoration: none; }
/* Sign-in only (registration off) and lost/reset password: one centered card. */
.nv-acct .woocommerce:has(> form:is(.woocommerce-form-login, .lost_reset_password, .woocommerce-ResetPassword)) > .woocommerce-notices-wrapper { max-width: 440px; margin-inline: auto; }
.nv-acct .woocommerce > form:is(.woocommerce-form-login, .lost_reset_password, .woocommerce-ResetPassword) {
	max-width: 440px; margin: 0 auto; padding: 32px; background: #fff; border: 1px solid var(--nv-line);
	border-radius: var(--nv-radius); box-shadow: 0 12px 40px rgba(0, 51, 153, .07);
}
.nv-acct .lost_reset_password > p:first-child { margin-top: 0; color: var(--nv-muted); }
.nv-acct .lost_reset_password:has(#user_login) > p:first-child { display: none; }
.nv-acct .lost_reset_password :is(.form-row-first, .form-row-last) { float: none; width: 100%; }
.nv-acct .lost_reset_password button { width: 100%; }

/* Signed in: nav card + content. */
.nv-acct .woocommerce:has(> .woocommerce-MyAccount-navigation) { display: grid; grid-template-columns: 248px minmax(0, 1fr); gap: 40px; align-items: start; }
.nv-acct .woocommerce:has(> .woocommerce-MyAccount-navigation)::before,
.nv-acct .woocommerce:has(> .woocommerce-MyAccount-navigation)::after { display: none; }
.nv-acct .woocommerce-MyAccount-navigation { float: none; width: auto; position: sticky; top: calc(var(--wp-admin--admin-bar--height, 0px) + 96px); padding: 8px; background: var(--nv-surface); border: 1px solid var(--nv-line); border-radius: 16px; }
.nv-acct .woocommerce-MyAccount-navigation ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 2px; }
.nv-acct .woocommerce-MyAccount-navigation li { margin: 0; padding: 0; border: 0; }
.nv-acct .woocommerce-MyAccount-navigation a {
	display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 10px;
	color: var(--nv-text); font-size: 15px; font-weight: 500; text-decoration: none !important; transition: background .15s, color .15s;
}
.nv-acct .woocommerce-MyAccount-navigation a:hover { background: #fff; color: var(--nv-navy); }
.nv-acct .woocommerce-MyAccount-navigation .is-active a { background: #fff; color: var(--nv-navy); font-weight: 600; box-shadow: 0 1px 2px rgba(0, 51, 153, .08), 0 0 0 1px var(--nv-line); }
.nv-acct .woocommerce-MyAccount-navigation-link--customer-logout { margin-top: 6px !important; padding-top: 6px !important; border-top: 1px solid var(--nv-line) !important; }
.nv-acct .woocommerce-MyAccount-navigation-link--customer-logout a { color: var(--nv-muted); }
.nv-acct .woocommerce-MyAccount-navigation a::before, .nv-acct-ico {
	content: ""; flex: none; width: 20px; height: 20px; background: currentColor;
	-webkit-mask: var(--nv-ico) center / contain no-repeat; mask: var(--nv-ico) center / contain no-repeat;
}
.nv-acct :is(.woocommerce-MyAccount-navigation-link--dashboard) { --nv-ico: url(../icons/squares-four.svg); }
.nv-acct :is(.woocommerce-MyAccount-navigation-link--orders, .nv-acct-tile--orders) { --nv-ico: url(../icons/package.svg); }
.nv-acct :is(.woocommerce-MyAccount-navigation-link--downloads, .nv-acct-tile--downloads) { --nv-ico: url(../icons/download-simple.svg); }
.nv-acct :is(.woocommerce-MyAccount-navigation-link--edit-address, .nv-acct-tile--edit-address) { --nv-ico: url(../icons/map-pin.svg); }
.nv-acct :is(.woocommerce-MyAccount-navigation-link--payment-methods) { --nv-ico: url(../icons/credit-card.svg); }
.nv-acct :is(.woocommerce-MyAccount-navigation-link--edit-account, .nv-acct-tile--edit-account) { --nv-ico: url(../icons/user-circle.svg); }
.nv-acct .woocommerce-MyAccount-navigation-link--customer-logout { --nv-ico: url(../icons/sign-out.svg); }
.nv-acct .woocommerce-MyAccount-content { float: none; width: auto; min-width: 0; }
.nv-acct .woocommerce-MyAccount-content > :first-child { margin-top: 0; }
.nv-acct .woocommerce-MyAccount-content :is(h2, h3) { font-size: 20px; letter-spacing: -0.01em; }

/* Dashboard. */
.nv-acct-latest { display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin: 0 0 20px; padding: 22px 24px; background: #fff; border: 1px solid var(--nv-line); border-radius: 16px; box-shadow: 0 12px 40px rgba(0, 51, 153, .06); }
.nv-acct-latest p { margin: 0; }
.nv-acct .wc-block-components-notice-banner .button { color: var(--nv-navy) !important; background: none !important; font-weight: 600; }
.nv-acct-latest-title { font-size: 18px; font-weight: 600; letter-spacing: -0.01em; }
.nv-acct-latest-meta { display: flex; align-items: center; gap: 12px; margin-top: 6px !important; color: var(--nv-muted); font-size: 15px; }
.nv-acct-status { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; font-size: 13px; font-weight: 600; background: #eaf3ff; color: var(--nv-blue); }
.nv-acct-status--completed { background: #e8f6ee; color: #1d7a45; }
.nv-acct-status--on-hold, .nv-acct-status--pending { background: #fff4e0; color: #8a5a00; }
.nv-acct-status--cancelled, .nv-acct-status--failed, .nv-acct-status--refunded { background: #fdecec; color: #a83232; }
.nv-acct-tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.nv-acct-tile {
	display: grid; grid-template-columns: 44px minmax(0, 1fr); grid-template-rows: auto auto; column-gap: 14px; align-items: center;
	padding: 20px; background: #fff; border: 1px solid var(--nv-line); border-radius: var(--nv-radius); color: var(--nv-text); text-decoration: none;
	transition: border-color .15s, box-shadow .15s;
}
.nv-acct-tile:hover { border-color: #c7d6f5; box-shadow: 0 10px 30px rgba(0, 51, 153, .08); color: var(--nv-text); }
.nv-acct-tile .nv-acct-ico { grid-row: 1 / 3; width: 44px; height: 44px; border-radius: 12px; background: #eaf3ff; -webkit-mask: none; mask: none; position: relative; }
.nv-acct-tile .nv-acct-ico::after { content: ""; position: absolute; inset: 11px; background: var(--nv-navy); -webkit-mask: var(--nv-ico) center / contain no-repeat; mask: var(--nv-ico) center / contain no-repeat; }
.nv-acct-tile-title { font-weight: 600; font-size: 16px; align-self: end; }
.nv-acct-tile-meta { font-size: 14px; color: var(--nv-muted); align-self: start; }
.nv-acct .woocommerce-MyAccount-content .nv-acct-help { margin: 28px 0 0; color: var(--nv-muted); font-size: 15px; }

/* Orders and downloads tables. */
.nv-acct .woocommerce-MyAccount-content table.shop_table { width: 100%; border-collapse: separate; border-spacing: 0; margin: 0 0 24px; border: 1px solid var(--nv-line); border-radius: 16px; overflow: hidden; background: #fff; font-size: 15px; }
.nv-acct .woocommerce-MyAccount-content table.shop_table :is(th, td) { padding: 14px 18px; border: 0; border-top: 1px solid var(--nv-line); text-align: left; vertical-align: middle; }
.nv-acct .woocommerce-MyAccount-content table.shop_table thead th { border-top: 0; background: var(--nv-surface); font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--nv-muted); }
.nv-acct .woocommerce-MyAccount-content table.shop_table a:not(.button) { color: var(--nv-navy); font-weight: 600; text-decoration: none; }
.nv-acct .woocommerce-MyAccount-content table.shop_table .button { min-height: 0; padding: 7px 16px; font-size: 14px; margin: 2px 0 2px 6px; }
.nv-acct .woocommerce-MyAccount-content table.shop_table td:last-child { text-align: right; }
.nv-acct .woocommerce-MyAccount-content table.shop_table tfoot th { color: var(--nv-muted); font-weight: 500; }
.nv-acct .woocommerce-MyAccount-content mark { background: none; color: var(--nv-text); font-weight: 600; }

/* Addresses and account details. */
.nv-acct .woocommerce-Addresses { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 16px; }
.nv-acct .woocommerce-Addresses::before, .nv-acct .woocommerce-Addresses::after { display: none; }
.nv-acct .woocommerce-Addresses .woocommerce-Address { float: none; width: auto; max-width: none; padding: 22px; background: #fff; border: 1px solid var(--nv-line); border-radius: 16px; }
.nv-acct .woocommerce-Address-title { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.nv-acct .woocommerce-Address-title::before, .nv-acct .woocommerce-Address-title::after { display: none !important; }
.nv-acct .woocommerce-Address-title h2 { margin: 0; font-size: 17px; }
.nv-acct .woocommerce-Address-title a { float: none; margin: 0; font-size: 14px; font-weight: 600; color: var(--nv-navy); text-decoration: none; }
.nv-acct .woocommerce-Address address { font-style: normal; color: var(--nv-muted); line-height: 1.6; }
.nv-acct .woocommerce-MyAccount-content > form { max-width: 640px; }
.nv-acct .woocommerce-MyAccount-content :is(.form-row-first, .form-row-last) { float: none; width: 100%; }
.nv-acct .woocommerce-MyAccount-content .woocommerce-address-fields__field-wrapper,
.nv-acct .woocommerce-EditAccountForm:has(.form-row-first) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 16px; }
.nv-acct .woocommerce-EditAccountForm > :not(.form-row-first, .form-row-last),
.nv-acct .woocommerce-address-fields__field-wrapper > .form-row-wide { grid-column: 1 / -1; }
.nv-acct .woocommerce-EditAccountForm > .clear { display: none; }

@media (max-width: 860px) {
	.nv-acct { padding-block: 28px 56px; }
	.nv-acct #customer_login { grid-template-columns: minmax(0, 1fr); }
	.nv-acct #customer_login > [class*="u-column"] { padding: 24px; }
	.nv-acct .woocommerce:has(> .woocommerce-MyAccount-navigation) { grid-template-columns: minmax(0, 1fr); gap: 20px; }
	.nv-acct .woocommerce-MyAccount-navigation { position: static; padding: 6px; overflow-x: auto; }
	.nv-acct .woocommerce-MyAccount-navigation ul { flex-direction: row; gap: 4px; width: max-content; }
	.nv-acct .woocommerce-MyAccount-navigation a { padding: 8px 12px; font-size: 14px; white-space: nowrap; gap: 8px; }
	.nv-acct .woocommerce-MyAccount-navigation a::before { width: 18px; height: 18px; }
	.nv-acct .woocommerce-MyAccount-navigation-link--customer-logout { margin: 0 0 0 4px !important; padding: 0 0 0 4px !important; border-top: 0 !important; border-left: 1px solid var(--nv-line) !important; }
	.nv-acct-tiles, .nv-acct .woocommerce-Addresses { grid-template-columns: minmax(0, 1fr); }
	.nv-acct .woocommerce-MyAccount-content .woocommerce-address-fields__field-wrapper,
	.nv-acct .woocommerce-EditAccountForm:has(.form-row-first) { grid-template-columns: minmax(0, 1fr); }
	/* Woo's responsive table turns rows into label/value stacks. */
	.nv-acct .woocommerce-MyAccount-content table.shop_table_responsive tr { display: block; padding: 8px 0; border-top: 1px solid var(--nv-line); }
	.nv-acct .woocommerce-MyAccount-content table.shop_table_responsive tr:first-child { border-top: 0; }
	.nv-acct .woocommerce-MyAccount-content table.shop_table_responsive tbody th { display: flex; justify-content: space-between; padding: 6px 18px; border-top: 0; font-weight: 600; }
	.nv-acct .woocommerce-MyAccount-content table.shop_table_responsive tbody th::before { content: attr(data-title) ": "; font-weight: 700; }
	.nv-acct .woocommerce-MyAccount-content table.shop_table_responsive td { border-top: 0; padding: 6px 18px; text-align: right !important; }
}


/* ---------- Cart page (classic [woocommerce_cart]) ---------- */
/* Empty: the drawer's empty state, centered, with no page title above it. */
.nv-cart-page > .nv-page-title, .nv-cart-page .woocommerce { box-sizing: border-box; width: 100%; max-width: 1200px !important; margin-inline: auto !important; }
.nv-cart-page:has(.nv-cart-empty) .nv-page-title { display: none; }
.nv-cart-page .nv-cart-empty { padding: 56px 0 72px; }
.nv-cart-page .woocommerce:has(.nv-cart-empty) .return-to-shop { display: none; }

/* Filled: items on the left, totals card on the right. */
.nv-cart-page .woocommerce:has(.woocommerce-cart-form) { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 32px; align-items: start; }
.nv-cart-page .woocommerce:has(.woocommerce-cart-form) > .woocommerce-notices-wrapper { grid-column: 1 / -1; }
.nv-cart-page .woocommerce:has(.woocommerce-cart-form) > .woocommerce-notices-wrapper:empty { display: none; }
.nv-cart-page .woocommerce::before, .nv-cart-page .woocommerce::after { display: none; }
.nv-cart-page .woocommerce-cart-form { margin: 0; }
.nv-cart-page table.shop_table.cart { width: 100%; margin: 0; border: 1px solid var(--nv-line); border-radius: var(--nv-radius); border-collapse: separate; border-spacing: 0; overflow: hidden; background: #fff; }
.nv-cart-page table.shop_table.cart thead th { padding: 14px 16px; background: var(--nv-surface); border: 0; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--nv-muted); }
.nv-cart-page table.shop_table.cart td { padding: 16px; border: 0; border-top: 1px solid var(--nv-line); vertical-align: middle; }
.nv-cart-page table.shop_table.cart tbody tr:first-child td { border-top: 0; }
.nv-cart-page td.product-thumbnail { width: 88px; }
.nv-cart-page td.product-thumbnail img { width: 72px !important; height: 72px; object-fit: contain; border-radius: 12px; background: var(--nv-surface); mix-blend-mode: multiply; }
.nv-cart-page td.product-name a { color: var(--nv-text); font-weight: 600; text-decoration: none; line-height: 1.4; }
.nv-cart-page td.product-name a:hover { color: var(--nv-navy); }
.nv-cart-page td.product-price { color: var(--nv-muted); }
.nv-cart-page td.product-subtotal { font-weight: 700; color: var(--nv-navy); }
.nv-cart-page td.product-remove { width: 44px; padding-right: 0; }
.nv-cart-page a.remove {
	display: grid; place-items: center; width: 32px; height: 32px; border-radius: 999px; font-size: 0 !important;
	background: var(--nv-surface); color: var(--nv-muted) !important; transition: background .15s, color .15s;
}
.nv-cart-page a.remove::before { content: "\00d7"; font-size: 20px; line-height: 1; }
.nv-cart-page a.remove:hover { background: #fdecec; color: #b42318 !important; }
.nv-cart-page .quantity .qty { box-sizing: border-box; height: 42px; width: 68px; border: 1px solid var(--nv-line); border-radius: 999px; text-align: center; font: 600 15px/1 var(--wp--preset--font-family--body); color: var(--nv-text); }
.nv-cart-page td.actions { background: var(--nv-surface); padding: 14px 16px !important; }
.nv-cart-page td.actions .coupon { display: flex; gap: 10px; align-items: center; }
.nv-cart-page td.actions .coupon .input-text { width: 180px !important; min-height: 42px; border-radius: 999px !important; padding: 0 16px !important; border: 1px solid var(--nv-line); background: #fff; }
.nv-cart-page td.actions .button { min-height: 42px; padding: 0 20px !important; }
.nv-cart-page td.actions button[name="update_cart"] { background: transparent !important; color: var(--nv-navy) !important; border: 1.5px solid var(--nv-line) !important; }
.nv-cart-page td.actions button[name="update_cart"]:disabled { opacity: .5; }
.nv-cart-page .cart-collaterals { width: auto; position: sticky; top: 96px; }
.nv-cart-page .cart-collaterals .cart_totals { float: none; width: 100%; padding: 24px; border: 1px solid var(--nv-line); border-radius: var(--nv-radius); background: #fff; box-shadow: 0 12px 40px rgba(0, 51, 153, .07); box-sizing: border-box; }
.nv-cart-page .cart_totals h2 { margin: 0 0 12px; font-size: 20px; }
.nv-cart-page .cart_totals table.shop_table { border: 0; margin: 0; }
.nv-cart-page .cart_totals table.shop_table :is(th, td) { padding: 12px 0; border: 0; border-top: 1px solid var(--nv-line); background: none !important; font-size: 15px; vertical-align: top; }
.nv-cart-page .cart_totals table.shop_table tr:first-child :is(th, td) { border-top: 0; }
.nv-cart-page .cart_totals table.shop_table th { font-weight: 500; color: var(--nv-muted); width: 40%; }
.nv-cart-page .cart_totals table.shop_table td { text-align: right; }
.nv-cart-page .cart_totals .order-total :is(th, td) { font-size: 18px; font-weight: 700; color: var(--nv-navy); }
.nv-cart-page .woocommerce-shipping-methods { margin: 0; padding: 0; list-style: none; }
.nv-cart-page .woocommerce-shipping-destination { font-size: 14px; color: var(--nv-muted); margin: 6px 0; }
.nv-cart-page .shipping-calculator-button { font-size: 14px; color: var(--nv-navy); font-weight: 600; }
.nv-cart-page .wc-proceed-to-checkout { padding: 16px 0 0; }
.nv-cart-page .wc-proceed-to-checkout a.checkout-button { display: flex; align-items: center; justify-content: center; min-height: 54px; margin: 0; padding: 0 24px !important; font-size: 16px !important; }
.nv-cart-page .cross-sells { grid-column: 1 / -1; }
@media (max-width: 900px) {
	.nv-cart-page .woocommerce:has(.woocommerce-cart-form) { grid-template-columns: minmax(0, 1fr); }
	.nv-cart-page .cart-collaterals { position: static; }
	.nv-cart-page table.shop_table_responsive.cart tr { display: grid; grid-template-columns: 72px minmax(0, 1fr) 36px; column-gap: 14px; padding: 14px 16px; border-top: 1px solid var(--nv-line); }
	.nv-cart-page table.shop_table_responsive.cart tbody tr:first-child { border-top: 0; }
	.nv-cart-page table.shop_table_responsive.cart tr td { display: block; padding: 0; border: 0; text-align: left !important; background: none; }
	.nv-cart-page table.shop_table_responsive.cart tr td::before { display: none; }
	.nv-cart-page table.shop_table_responsive.cart td.product-thumbnail { display: block !important; grid-row: 1 / 4; grid-column: 1; width: auto; }
	.nv-cart-page table.shop_table_responsive.cart td.product-remove { grid-column: 3; grid-row: 1; }
	.nv-cart-page table.shop_table_responsive.cart td.product-name { grid-column: 2; grid-row: 1; }
	.nv-cart-page table.shop_table_responsive.cart td.product-price { display: none; }
	.nv-cart-page table.shop_table_responsive.cart td.product-quantity { grid-column: 2; grid-row: 2; margin-top: 10px; }
	.nv-cart-page table.shop_table_responsive.cart td.product-subtotal { grid-column: 2 / 4; grid-row: 3; margin-top: 8px; }
	.nv-cart-page table.shop_table_responsive.cart tr:has(td.actions) { display: block; background: var(--nv-surface); }
	.nv-cart-page td.actions { padding: 0 !important; background: none !important; }
	.nv-cart-page td.actions .coupon { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; margin: 0 0 10px; padding: 0; float: none; }
	.nv-cart-page td.actions .coupon .input-text, .nv-cart-page td.actions .coupon .button { float: none !important; width: auto !important; margin: 0 !important; }
	.nv-cart-page td.actions .coupon .button { white-space: nowrap; }
	.nv-cart-page td.actions .coupon::before, .nv-cart-page td.actions .coupon::after { display: none !important; }
	.nv-cart-page td.actions button[name="update_cart"] { float: none !important; width: 100% !important; margin: 0 !important; }
}

/* Account page: no page title; the [nv_account_head] heading replaces it. */
.nv-acct.nv-main { padding-block: 48px 72px; }
.nv-nowrap { white-space: nowrap; }

/* No results (search, empty category): the cart's empty state with a search icon. */
.nv-cart-empty .nv-cart-empty__icon--search::before { -webkit-mask-image: url(../icons/magnifying-glass.svg); mask-image: url(../icons/magnifying-glass.svg); }
.nv-no-results { padding: 40px 0 64px; }
