/*
 * Custom Irish — button standard
 * ==============================
 * Client spec of 2026-08-11. ONE treatment for every main CTA and WooCommerce
 * button on the site: Personalize Your Gift, Add to Cart, Proceed to Checkout,
 * Place Order, Apply Coupon, Send, Log In, Sign Up Now — all of them.
 *
 *   default   off-white #F2EFE8 fill · deep-teal #0D3739 label · 1px gold #C7A550
 *   hover     gold #C7A550 fill      · deep-teal label          · 1px gold
 *   active    pressed gold #B79542   · deep-teal label          · 1px pressed gold · nudged down 1px
 *   focus     current state's colours + 2px deep-teal outline with a 2px gap
 *   disabled  warm neutral #E8E2D6   · muted grey #77736C       · 1px #C9C2B7
 *
 *   46px min height desktop / 48px mobile · 11px x 22px padding · 4px radius
 *   EB Garamond 16px 600 · 0.2px tracking · title case · no shadow
 *
 * THE POINT OF THE SPEC: the label is deep teal in EVERY active state. Gold is
 * the default outline and the hover fill, never the text.
 *
 * ---------------------------------------------------------------------------
 * WHY THIS IS ITS OWN FILE
 *
 * theme-brand.css carries three overlapping button layers that grew one on top
 * of the next — the original gold system (l.231), the BUTTON OVERRIDE TIER
 * (l.507) that flipped everything to solid teal, and the PRIMARY BUTTON TIER
 * (l.2629) that did the purchase path again. theme-type.css then restates
 * font-size and letter-spacing at !important on top of all three.
 *
 * Unpicking those in place would mean touching four blocks in two 3,000-line
 * files with no way to tell, afterwards, which rule was actually in force.
 * This file loads LAST and is the last word on button appearance instead.
 *
 * REVERT PATH: delete this file, or comment out the two lines that enqueue it
 * in functions.php. The previous teal button system is untouched underneath and
 * comes straight back. Nothing else depends on the handle.
 *
 * ONE COUPLING TO KNOW ABOUT, added later by separate work: the coupon input
 * rule at the end of theme-brand.css sizes itself from `var(--btn-min-h, 46px)`
 * — a token defined in THIS file — so the field tracks the button height
 * automatically, mobile step-up included. It carries a 46px fallback, so
 * reverting this file does not break it, but the field will then sit at 46px
 * while the buttons beside it go back to 60px. If you revert, revert that block
 * with it.
 *
 * WHAT THIS SUPERSEDES: the two-tier primary/secondary split. There is no
 * longer a solid-teal "primary" button marking the main action on a screen —
 * Add to Cart, Proceed to Checkout and Place Order now look exactly like Apply
 * Coupon and Send. That is what "standardized" was asked for, and it is flagged
 * here so the loss of that hierarchy is a decision on the record rather than a
 * side effect. Restoring it later means giving the purchase path a gold FILL at
 * rest, which keeps the palette and reinstates the emphasis.
 * ---------------------------------------------------------------------------
 */

/* Declared on body as well as :root for the same reason as theme-brand.css:
   the palette tokens read Elementor's kit variables, which live on <body>. */
:root,
body {
	/*
	 * --c-btn-bg is #F2EFE8, which is NOT --c-offwhite (#F1F1EF). The spec's
	 * off-white is warmer. --c-offwhite paints page surfaces site-wide, so it is
	 * deliberately left alone — repointing it would repaint the shop, cart and
	 * checkout backgrounds as a side effect of a button change.
	 */
	--c-btn-bg:        #F2EFE8;  /* off-white fill, default state   */
	--c-btn-ink:       var(--c-teal, #0D3739);  /* deep teal label, every active state — follows Site Settings */
	--c-btn-line:      var(--c-gold, #C7A550);  /* gold outline — follows Site Settings */
	--c-btn-hover:     var(--c-gold, #C7A550);  /* gold fill on hover — follows Site Settings */
	--c-btn-press:     #B79542;  /* darker gold, pressed            */
	--c-btn-off-bg:    #E8E2D6;  /* warm neutral, disabled          */
	--c-btn-off-ink:   #77736C;  /* muted grey, disabled            */
	--c-btn-off-line:  #C9C2B7;  /* disabled outline                */

	--btn-radius:      4px;
	--btn-min-h:       46px;
	--btn-pad-y:       11px;
	--btn-pad-x:       22px;
}

/*
 * MEASURED CONTRAST (sRGB, WCAG 2.1 ratios)
 *
 *   teal on off-white  #0D3739 / #F2EFE8   11.27:1   AA + AAA
 *   teal on gold       #0D3739 / #C7A550    5.52:1   AA
 *   teal on pressed    #0D3739 / #B79542    4.56:1   AA (clears 4.5 with little room)
 *   grey on neutral    #77736C / #E8E2D6    3.66:1   disabled controls are exempt
 *                                                    from 1.4.3, so this is fine
 *
 * The one number worth knowing: the gold OUTLINE against a white page measures
 * 2.04:1, below the 3:1 that WCAG 1.4.11 asks of a control boundary. It is not
 * a failure in practice — the label itself carries 11:1 and the fill is a
 * distinct tone — but if the button edge ever needs to stand on its own, the
 * fix is a darker gold on the border only, not on the text.
 */

/* ==========================================================================
   THE BUTTON SET
   --------------------------------------------------------------------------
   The :not() list keeps this off <button> elements that are CONTROLS rather
   than buttons. Every one of these has its own styling elsewhere that this file
   would otherwise flatten:

     .cgkit-swatch              frame-colour swatches — they show a real colour
     .close-drawer / .filters   drawer chrome
     .plus .minus .qty-btn      quantity steppers
     .pswp__button              gallery lightbox controls
     .commercekit-wishlist-btn  the heart
     .ci-reviews-nav            the round arrow on the reviews carousel
     .elementor-search-form__submit   the magnifier inside the search field
     .show-password-input       the eye toggle INSIDE the password field —
                                WooCommerce renders it as a bare <button>, and
                                without this it grew a 21x46px gold box sitting
                                on top of the field on My Account

   Written as a single :not( a, b, c ) rather than :not(a):not(b):not(c) on
   purpose — the chained form adds each class to the specificity total, which
   would push this block above the state rules that are supposed to follow it.
   A comma list scores as its most specific argument, so it stays at (0,1,2).
   ========================================================================== */

body .button,
body button:not(.cgkit-swatch, .close-drawer, .filters, .plus, .minus, .qty-btn, .pswp__button, .commercekit-wishlist-btn, .ci-reviews-nav, .show-password-input, .elementor-search-form__submit, .ci-select__button),
body input[type="submit"],
body button[type="submit"],
body .wp-element-button,
body .elementor-button,
body .elementor-form .elementor-button,
body .elementor-field-type-submit button,
body ul.products li.product .button,
body .product .cart .single_add_to_cart_button,
body.single-product form.cart .single_add_to_cart_button,
body .woocommerce #respond input#submit,
body .widget_shopping_cart a.button,
body.woocommerce-cart p.return-to-shop a,
body .cart-collaterals .checkout-button,
body .checkout-button,
body .wc-block-cart__submit-button,
body .wc-block-components-checkout-place-order-button,
body #payment .place-order .button,
body #place_order,
body .added_to_cart,
body .coupon .button,
body .checkout_coupon .button,
body .woocommerce-form-login__submit,
body .woocommerce-form-register__submit,
body .woocommerce-Button,
body .elementor-menu-cart__footer-buttons .elementor-button,
body .elementor-button.elementor-button--view-cart,
body .elementor-button.elementor-button--checkout {
	background-color: var(--c-btn-bg) !important;
	color: var(--c-btn-ink) !important;
	border: 1px solid var(--c-btn-line) !important;
	border-radius: var(--btn-radius) !important;
	box-shadow: none !important;

	font-family: var(--font-body) !important;
	font-size: var(--fs-button, 16px) !important;
	font-weight: 600 !important;
	letter-spacing: 0.2px !important;
	text-transform: none !important;
	line-height: 1.3 !important;

	/*
	 * height:auto is load-bearing, not tidying.
	 *
	 * The site's inline customizer CSS carries
	 *   button[type="submit"], .checkout-button, #payment .place-order .button
	 *     { height: 60px }
	 * — a FIXED height, so every submit button rendered 60px tall while
	 * everything else answered to min-height and came out at 46px. Add to Cart
	 * and Apply Coupon sat 14px apart in height for no reason a customer could
	 * see. Releasing the height lets the 46/48px floor actually govern.
	 */
	height: auto !important;
	min-height: var(--btn-min-h) !important;
	padding: var(--btn-pad-y) var(--btn-pad-x) !important;
	text-align: center;

	transition: background-color 0.18s ease, border-color 0.18s ease, transform 0.06s ease !important;
}

/*
 * Vertical centring.
 *
 * min-height alone leaves the label sitting at the top of the box with the
 * slack falling underneath — a ~2px optical offset once the 46px floor is
 * taller than 11px + 20.8px + 11px of content. Flex centring removes it.
 *
 * input[type="submit"] is deliberately NOT in this list: an input has no child
 * box to lay out, and the browser already centres its value against the padding
 * box. Making it a flex container does nothing useful and confuses Safari.
 */
body a.button,
body button:not(.cgkit-swatch, .close-drawer, .filters, .plus, .minus, .qty-btn, .pswp__button, .commercekit-wishlist-btn, .ci-reviews-nav, .show-password-input, .elementor-search-form__submit, .ci-select__button),
body .elementor-button,
body .added_to_cart {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5em;
}

/*
 * Buttons that are full width by design keep their width and centre the same
 * way. Selectors match the existing declarations one for one so equal
 * specificity plus later source order wins — see the note at the top of the
 * file about why this is not edited in place.
 */
body.single-product form.cart .single_add_to_cart_button,
body.single-product .woocommerce-variation-add-to-cart .single_add_to_cart_button,
body .elementor-menu-cart__footer-buttons .elementor-button {
	display: flex !important;
	width: 100% !important;
	align-items: center;
	justify-content: center;
}

/* --------------------------------------------------------------------------
   LEGACY FIXED HEIGHTS
   --------------------------------------------------------------------------
   The site's inline customizer CSS pins two more button groups to a fixed 60px
   with !important, and pairs it with line-height: 1:

     table.cart td.actions button, table.cart td.actions input   (0,2,3)
     .checkout_coupon .form-row button, .checkout_coupon input   (0,2,2)

   These outscore the general tier above, so Update Cart and Apply Coupon stayed
   60px while Place Order beside them came out at 46px — the single most visible
   inconsistency left after the standard went in. Each is restated here at a
   specificity that clears it, and line-height with it, since 1 would otherwise
   ride along on the same declaration and crop the descenders in Garamond.

   Delete this block once those inline declarations are removed.
   -------------------------------------------------------------------------- */

body table.cart td.actions button.button,
body table.cart td.actions input[type="submit"],
body table.cart td.actions button[name="update_cart"],
body .checkout_coupon .form-row button.button,
body .checkout_coupon .form-row button[type="submit"],
body form.checkout_coupon .form-row button,
body .coupon .form-row button.button {
	height: auto !important;
	min-height: var(--btn-min-h) !important;
	line-height: 1.3 !important;
	padding: var(--btn-pad-y) var(--btn-pad-x) !important;
}

/* ==========================================================================
   HOVER — gold fill, teal label
   ========================================================================== */

body .button:hover,
body button:not(.cgkit-swatch, .close-drawer, .filters, .plus, .minus, .qty-btn, .pswp__button, .commercekit-wishlist-btn, .ci-reviews-nav, .show-password-input, .elementor-search-form__submit, .ci-select__button):hover,
body input[type="submit"]:hover,
body button[type="submit"]:hover,
body .wp-element-button:hover,
body .elementor-button:hover,
body .elementor-form .elementor-button:hover,
body ul.products li.product .button:hover,
body .product .cart .single_add_to_cart_button:hover,
body.single-product form.cart .single_add_to_cart_button:hover,
body .woocommerce #respond input#submit:hover,
body .widget_shopping_cart a.button:hover,
body.woocommerce-cart p.return-to-shop a:hover,
body .cart-collaterals .checkout-button:hover,
body .checkout-button:hover,
body .wc-block-cart__submit-button:hover,
body .wc-block-components-checkout-place-order-button:hover,
body #payment .place-order .button:hover,
body #place_order:hover,
body .added_to_cart:hover,
body .coupon .button:hover,
body .checkout_coupon .button:hover,
body .woocommerce-form-login__submit:hover,
body .woocommerce-Button:hover,
body .elementor-menu-cart__footer-buttons .elementor-button:hover,
body .elementor-button.elementor-button--view-cart:hover,
body .elementor-button.elementor-button--checkout:hover {
	background-color: var(--c-btn-hover) !important;
	color: var(--c-btn-ink) !important;
	border-color: var(--c-btn-hover) !important;
}

/* --------------------------------------------------------------------------
   HOVER — the four selectors that outrank the block above
   --------------------------------------------------------------------------
   Three older rules carry a :not() or an extra class and so score higher than
   the general hover tier, which left them on the previous solid-teal hover:

     theme-brand l.1366  body.single-product form.cart
                           .single_add_to_cart_button:hover:not(.disabled)  (0,5,2)
     theme-brand l.2655  body .elementor-menu-cart__footer-buttons
                           .elementor-button--checkout:hover                (0,3,1)
     theme-brand l.2728  body .widget_shopping_cart
                           a.button:not(.checkout):hover                    (0,3,2)

   Add to Cart was the visible one: at rest it was correctly off-white with a
   gold outline, and on hover it went solid teal with a white label — the exact
   thing the spec's "deep teal text in every active state" correction rules out.

   Each is matched selector for selector so equal specificity plus later source
   order decides. Do not simplify these to their shorter forms.
   -------------------------------------------------------------------------- */

body.single-product .single_add_to_cart_button:hover:not(.disabled),
body.single-product form.cart .single_add_to_cart_button:hover:not(.disabled),
body.single-product .woocommerce-variation-add-to-cart .single_add_to_cart_button:hover:not(.disabled),
body .elementor-menu-cart__footer-buttons .elementor-button--checkout:hover,
body .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover,
body .widget_shopping_cart a.button:not(.checkout):hover,
body .cart-collaterals .checkout-button:hover {
	background-color: var(--c-btn-hover) !important;
	color: var(--c-btn-ink) !important;
	border-color: var(--c-btn-hover) !important;
}

body.single-product .single_add_to_cart_button:active:not(.disabled),
body.single-product form.cart .single_add_to_cart_button:active:not(.disabled),
body .elementor-menu-cart__footer-buttons .elementor-button--checkout:active,
body .elementor-menu-cart__footer-buttons .elementor-button--view-cart:active {
	background-color: var(--c-btn-press) !important;
	color: var(--c-btn-ink) !important;
	border-color: var(--c-btn-press) !important;
	transform: translateY(1px) !important;
}

/* ==========================================================================
   ACTIVE / PRESSED — darker gold, teal label, down 1px
   ========================================================================== */

body .button:active,
body button:not(.cgkit-swatch, .close-drawer, .filters, .plus, .minus, .qty-btn, .pswp__button, .commercekit-wishlist-btn, .ci-reviews-nav, .show-password-input, .elementor-search-form__submit, .ci-select__button):active,
body input[type="submit"]:active,
body button[type="submit"]:active,
body .wp-element-button:active,
body .elementor-button:active,
body .elementor-form .elementor-button:active,
body .product .cart .single_add_to_cart_button:active,
body.single-product form.cart .single_add_to_cart_button:active,
body .cart-collaterals .checkout-button:active,
body .checkout-button:active,
body .wc-block-cart__submit-button:active,
body .wc-block-components-checkout-place-order-button:active,
body #payment .place-order .button:active,
body #place_order:active,
body .coupon .button:active,
body .checkout_coupon .button:active,
body .woocommerce-form-login__submit:active,
body .woocommerce-Button:active,
body .elementor-menu-cart__footer-buttons .elementor-button:active,
body .elementor-button.elementor-button--view-cart:active,
body .elementor-button.elementor-button--checkout:active {
	background-color: var(--c-btn-press) !important;
	color: var(--c-btn-ink) !important;
	border-color: var(--c-btn-press) !important;
	transform: translateY(1px) !important;
}

/* ==========================================================================
   KEYBOARD FOCUS — 2px deep-teal ring, 2px gap, colours unchanged
   --------------------------------------------------------------------------
   :focus-visible so the ring appears for keyboard users without firing on every
   mouse click. The plain :focus rule underneath is the fallback for browsers
   without support; it is listed second so :focus-visible wins where both apply.

   No background or colour is set here on purpose — the spec says focus keeps
   whichever state the button is already in, so hovering a focused button still
   shows the gold fill with the ring around it.
   ========================================================================== */

body .button:focus-visible,
body button:not(.cgkit-swatch, .close-drawer, .filters, .plus, .minus, .qty-btn, .pswp__button, .commercekit-wishlist-btn, .ci-reviews-nav, .show-password-input, .ci-select__button):focus-visible,
body input[type="submit"]:focus-visible,
body button[type="submit"]:focus-visible,
body .wp-element-button:focus-visible,
body .elementor-button:focus-visible,
body .checkout-button:focus-visible,
body #place_order:focus-visible,
body .wc-block-components-checkout-place-order-button:focus-visible,
body .added_to_cart:focus-visible {
	outline: 2px solid var(--c-btn-ink) !important;
	outline-offset: 2px !important;
	box-shadow: none !important;
}

/* ==========================================================================
   DISABLED
   --------------------------------------------------------------------------
   WooCommerce marks Add to Cart .disabled until every variation is chosen, so
   on a configurable product this is the state the customer sees FIRST. It has
   to read as "not yet", not as "broken".

   The single_add_to_cart_button selectors are spelled out at full specificity
   because theme-brand.css l.1378 sets a grey #A9B6B2 fill at (0,3,1) — matching
   it is what lets source order decide.
   ========================================================================== */

body .button:disabled,
body .button.disabled,
body button:disabled,
body button[disabled],
body input[type="submit"]:disabled,
body .elementor-button:disabled,
body .wc-block-components-checkout-place-order-button:disabled,
body .wc-block-cart__submit-button:disabled,
body.single-product .single_add_to_cart_button.disabled,
body.single-product .single_add_to_cart_button:disabled,
body.single-product form.cart .single_add_to_cart_button.disabled,
body.single-product form.cart .single_add_to_cart_button:disabled {
	background-color: var(--c-btn-off-bg) !important;
	color: var(--c-btn-off-ink) !important;
	border: 1px solid var(--c-btn-off-line) !important;
	cursor: not-allowed !important;
	opacity: 1 !important;
	transform: none !important;
}

/* A disabled button must not react to the pointer. */
body .button:disabled:hover,
body .button.disabled:hover,
body button:disabled:hover,
body button[disabled]:hover,
body input[type="submit"]:disabled:hover,
body .wc-block-components-checkout-place-order-button:disabled:hover,
body.single-product .single_add_to_cart_button.disabled:hover,
body.single-product .single_add_to_cart_button:disabled:hover,
body.single-product form.cart .single_add_to_cart_button.disabled:hover,
body.single-product form.cart .single_add_to_cart_button:disabled:hover {
	background-color: var(--c-btn-off-bg) !important;
	color: var(--c-btn-off-ink) !important;
	border-color: var(--c-btn-off-line) !important;
	transform: none !important;
}

/* ==========================================================================
   NESTED LABELS AND PAINTED GLYPHS
   ========================================================================== */

/*
 * Elementor wraps its label in <span class="elementor-button-text">, and the
 * previous teal system coloured that span white. Colour on the anchor alone
 * leaves the span holding the old value.
 */
body .elementor-button .elementor-button-text,
body .elementor-button .elementor-button-content-wrapper,
body .elementor-button--view-cart .elementor-button-text,
body .elementor-button--checkout .elementor-button-text,
body .elementor-menu-cart__footer-buttons .elementor-button .elementor-button-text {
	color: var(--c-btn-ink) !important;
}

body .elementor-button:hover .elementor-button-text,
body .elementor-button:active .elementor-button-text,
body .elementor-button--view-cart:hover .elementor-button-text,
body .elementor-button--checkout:hover .elementor-button-text {
	color: var(--c-btn-ink) !important;
}

/*
 * The padlock on Place Order / Proceed to Checkout is a CSS mask-image painted
 * by background-color, NOT a font glyph — setting `color` does nothing to it.
 * It has been white (invisible on off-white) since the teal system went in.
 *
 * Teal in every state: the label is teal at rest, on hover and when pressed, so
 * the padlock never needs to change with it.
 *
 * `body #payment .place-order .button::before` must stay in this list. The gold
 * rule at theme-brand.css l.889 carries that selector at (1,2,2); later source
 * order alone does not beat it without the matching selector.
 */
body #place_order:before,
body #place_order:hover:before,
body #place_order:active:before,
body #payment .place-order .button:before,
body #payment .place-order .button:hover:before,
body #payment .place-order .button:active:before,
body .checkout-button:before,
body .checkout-button:hover:before,
body .checkout-button:active:before,
body .cart-collaterals .checkout-button:before,
body .cart-collaterals .checkout-button:hover:before,
body .wc-block-cart__submit-button:before,
body .wc-block-components-checkout-place-order-button:before {
	background-color: var(--c-btn-ink) !important;
}

/* ==========================================================================
   CONTROLS THAT ARE NOT BUTTONS — restated after the tier above
   --------------------------------------------------------------------------
   These carry .elementor-button or are bare <button> elements, so they read as
   buttons to a selector but are icons to a customer. theme-brand.css already
   strips their chrome; this file loads later, so it has to say so again or the
   cart toggle grows a 46px gold box around a 24px icon.
   ========================================================================== */

body .elementor-menu-cart__toggle_button,
body .elementor-menu-cart__toggle .elementor-button,
body .commercekit-wishlist-icon,
body .commercekit-wishlist-icon a,
body a.cart-contents,
body .shoptimizer-cart a,
body .site-header-cart a,
body .show-password-input,
body .password-input .show-password-input {
	background-color: transparent !important;
	border: 0 !important;
	padding: 0 !important;
	min-height: 0 !important;
	color: var(--c-teal) !important;
}

body .elementor-menu-cart__toggle_button:hover,
body .elementor-menu-cart__toggle .elementor-button:hover,
body .commercekit-wishlist-icon a:hover,
body a.cart-contents:hover {
	background-color: transparent !important;
	border-color: transparent !important;
	color: var(--c-gold-ink) !important;
	transform: none !important;
}

/* ==========================================================================
   SIZE SWATCHES — same palette, their own geometry
   --------------------------------------------------------------------------
   The size options on a product page are <button> elements the customer reads
   as a row of small choices, so they join the colour system but keep the
   compact height they were given deliberately — a 46px floor and 22px side
   padding would turn five sizes into a block three rows deep.

   .cgkit-color and .cgkit-image are deliberately absent: those render the
   actual frame colour and must keep whatever fill the plugin gives them.

   Selected stays gold-filled with a teal label, which is now identical to the
   hover state — the same relationship the spec sets up everywhere else.
   ========================================================================== */

body .cgkit-attribute-swatch.cgkit-button button:not(.cgkit-swatch-selected),
body .cgkit-attribute-swatch.cgkit-button a:not(.cgkit-swatch-selected),
body .cgkit-as-wrap .cgkit-attribute-swatches .cgkit-attribute-swatch.cgkit-button button:not(.cgkit-swatch-selected) {
	background-color: var(--c-btn-bg) !important;
	color: var(--c-btn-ink) !important;
	border: 1px solid var(--c-btn-line) !important;
	border-radius: var(--btn-radius) !important;
}

body .cgkit-attribute-swatch.cgkit-button button:not(.cgkit-swatch-selected):hover,
body .cgkit-attribute-swatch.cgkit-button a:not(.cgkit-swatch-selected):hover {
	background-color: var(--c-btn-hover) !important;
	color: var(--c-btn-ink) !important;
	border-color: var(--c-btn-hover) !important;
}

body .cgkit-as-wrap .cgkit-attribute-swatches .cgkit-attribute-swatch button.cgkit-swatch-selected,
body .cgkit-as-wrap .cgkit-attribute-swatches .cgkit-attribute-swatch a.cgkit-swatch-selected,
body .cgkit-attribute-swatch button.cgkit-swatch-selected,
body .cgkit-attribute-swatch a.cgkit-swatch-selected,
body .cgkit-attribute-swatch button.cgkit-swatch-selected:hover,
body .cgkit-attribute-swatch a.cgkit-swatch-selected:hover {
	background-color: var(--c-btn-hover) !important;
	color: var(--c-btn-ink) !important;
	border: 1px solid var(--c-btn-hover) !important;
	border-radius: var(--btn-radius) !important;
}

/* ==========================================================================
   SEARCH FIELD
   --------------------------------------------------------------------------
   Included because it is on the spec sheet alongside the button states, and it
   sits beside them in the header: 44px desktop / 48px mobile, off-white fill,
   deep-teal icon and text, 1px gold, 4px radius, no shadow.

   NOTE — this reverses an earlier decision. The search field had a gold focus
   glow rather than the teal ring, because the old 3px teal ring read as a hard
   black rectangle and, since a text input always matches :focus-visible, it
   fired on every click and not only on keyboard use. The spec sheet shows the
   teal ring on the search field explicitly, so the ring is back — at 2px with a
   2px gap, which is lighter than the 3px version that caused the complaint.
   Say the word and the gold glow returns; it is the one block below.

   UPDATE 11 Aug — Gerald said the word. The ring is off: he saw the black
   rectangle again on click and asked for it gone, to be revisited later.

   SOLVED 12 Aug. The 11 Aug note below this line was wrong and is kept only so
   the dead end is not walked again:

       "Something outside the enumerable stylesheets is forcing outline-color,
        outline-width, border and box-shadow... outline-style is the one
        property that still answers to us."

   Nothing was being forced. **The rules were aimed at the wrong element.** The
   black rectangle is painted by Elementor Pro's own widget stylesheet,
   `elementor-pro/assets/css/widget-search-form.min.css`:

       .elementor-search-form--skin-minimal:focus-within {
           outline-style: solid;
           outline-width: 2px;
       }

   Two things made it hard to see. It declares no `outline-color`, so the colour
   falls out of `currentColor` — which here is the Elementor kit's Text global,
   #030303, i.e. black. And that skin class sits on the WIDGET WRAPPER
   (`.elementor-element-1d941924`), not on `__container`, `__input` or the
   `<form>`, which is what every previous attempt targeted. Setting
   `outline-style: none` on the container was therefore suppressing an outline
   that was never the visible one; the wrapper's ring was untouched and kept
   painting. Confirmed on staging by walking the ancestor chain while the field
   held real (mouse-click) focus: the wrapper computed
   `outline: rgb(3,3,3) solid 2px`, everything below it was clean.

   The fix is now a colour change, not a suppression: the same 2px ring, in
   brand gold with a 2px gap. That also closes the accessibility item the old
   note left open — keyboard users get a visible focus state again, which the
   brief requires, instead of the nothing that `outline-style: none` left behind.

   Diagnosing this from the browser alone will fail: a scan of document
   .styleSheets reports zero `outline` declarations across all 74 sheets, so the
   rule is invisible from the console. Grep the SERVED css files instead:
       curl -s <page> | grep -oE "href='[^']+\.css[^']*'"   # then grep each
   ========================================================================== */

body .elementor-search-form__container {
	background-color: var(--c-btn-bg) !important;
	border: 1px solid var(--c-btn-line) !important;
	border-radius: var(--btn-radius) !important;
	box-shadow: none !important;
	min-height: 44px !important;
}

body .elementor-search-form__input,
body .elementor-search-form__input::placeholder,
body .elementor-search-form__submit,
body .elementor-search-form .elementor-search-form__icon {
	color: var(--c-btn-ink) !important;
	font-family: var(--font-body) !important;
}

body .elementor-search-form__input {
	background-color: transparent !important;
	padding-left: 14px !important;
	padding-right: 14px !important;
}

body .elementor-search-form .elementor-search-form__icon svg,
body .elementor-search-form .elementor-search-form__icon i {
	width: 18px;
	height: 18px;
	font-size: 18px;
}

/*
 * THE focus ring — off, on Gerald's call (12 Aug).
 *
 * This is the element that paints it: the widget wrapper carrying Elementor's
 * skin class, not the container or the input. It was briefly recoloured to gold
 * (which did work — the black was gone) but the ring itself was not wanted.
 *
 * `outline-style: none` is the correct off switch here: with no style, nothing
 * is painted whatever colour and width Elementor sets underneath. Keep the
 * selector — deleting the block does not remove the ring, it restores
 * Elementor's black one.
 *
 * Focus state is NOT gone with the ring off. theme-brand.css (~line 730) puts a
 * soft gold glow on the field itself — `box-shadow: 0 0 0 3px rgba(199,165,80,
 * .35)` — and that still fires, verified on the deployed file. So the keyboard
 * requirement is met rather than dropped.
 *
 * SIGNED OFF 12 Aug — and it is asymmetric on purpose, so do not "fix" it.
 * The glow is on the INPUT, and `.elementor-search-form__container` is
 * `overflow: hidden`, so the glow is clipped wherever the input sits flush to
 * the container. Measured while focused:
 *
 *     input top    117.7  vs container top    116.7   flush -> clipped
 *     input right  1537   vs container right  1538    flush -> clipped
 *     input bottom 157.7  vs container bottom 160.7   3px   -> glow shows
 *     input left   1343.7 vs container left   1302.4  41px  -> glow shows
 *                                                     (the magnifier's space)
 *
 * The result is a soft gold edge along the bottom and left only. Gerald was
 * shown the cause and the even-on-all-sides alternative — move the glow to the
 * container, which is not clipped — and chose to keep this. Leave it.
 */
body .elementor-search-form--skin-minimal:focus-within {
	outline-style: none !important;
}

/*
 * Belt and braces on the inner elements: kills the global 3px teal
 * `input:focus-visible` ring from theme-brand.css, which reads as near-black on
 * this field.
 *
 * A `box-shadow: none` used to sit here too. It was removed on 12 Aug because it
 * never took effect. The glow is the intended focus state and lives in
 * theme-brand.css.
 *
 * CORRECTION, 15 Aug — the note here used to say theme-brand won because it
 * "loads later". That is backwards: functions.php chains
 * brand -> type -> buttons, so THIS file loads last. It lost on SPECIFICITY:
 *
 *     theme-brand    body .elementor-search-form input:focus-visible     (0,2,2)
 *     theme-buttons  body .elementor-search-form__input:focus-visible    (0,2,1)
 *
 * Both carry !important, so the higher score decides, and brand's selector
 * names two elements (body, input) where this one names only body. Worth
 * remembering when writing anything here that has to beat theme-brand: adding
 * !important will not do it, and neither will loading later.
 */
body .elementor-search-form__container:focus-within,
body .elementor-search-form .elementor-search-form__container:focus-within,
body .elementor-search-form__input:focus,
body .elementor-search-form__input:focus-visible {
	outline-style: none !important;
	outline-offset: 0 !important;
	border-color: var(--c-btn-line) !important;
}

/* ==========================================================================
   ELEMENTOR FORM SUBMITS — Send, Sign Up Now
   --------------------------------------------------------------------------
   These took the colour, height and shape of the standard but kept UPPERCASE
   and 0.96px tracking, so the contact form's button read "SEND" beside an
   "Apply Coupon" one page over.

   The Form widget prints its own typography and theme-brand.css l.2865 restates
   uppercase at !important for it, but neither of those is the rule that wins —
   the winner sits in a stylesheet the page will not let script enumerate
   (Shoptimizer's own CSS, served cross-origin, so cssRules throws). An
   equal-specificity rule later in the file was measured and does NOT beat it;
   this block was raised until it did.

   `html body` is doing real work here rather than decoration, and the nested
   .elementor-button-text span is named because Elementor puts the label in a
   child that inherits the transform independently.
   ========================================================================== */

html body .elementor-form .elementor-button,
html body .elementor-form .elementor-button .elementor-button-text,
html body .elementor-widget-form .elementor-button,
html body .elementor-widget-form .elementor-button .elementor-button-text,
html body .elementor-field-type-submit button,
html body .elementor-field-type-submit button .elementor-button-text,
html body .elementor-form button[type="submit"],
html body .elementor-widget-form button[type="submit"] {
	font-family: var(--font-body) !important;
	font-size: var(--fs-button, 16px) !important;
	font-weight: 600 !important;
	letter-spacing: 0.2px !important;
	text-transform: none !important;
	color: var(--c-btn-ink) !important;
}

html body .elementor-form .elementor-button:hover,
html body .elementor-form .elementor-button:hover .elementor-button-text,
html body .elementor-widget-form .elementor-button:hover,
html body .elementor-widget-form .elementor-button:hover .elementor-button-text {
	color: var(--c-btn-ink) !important;
}

/* ==========================================================================
   MOBILE — 48px floor
   --------------------------------------------------------------------------
   782px is the breakpoint the rest of the child theme uses (theme-type.css and
   theme-brand.css both step down there), so the button floor moves with
   everything else rather than introducing a fourth breakpoint.
   ========================================================================== */

@media (max-width: 782px) {
	:root {
		--btn-min-h: 48px;
	}

	body .elementor-search-form__container {
		min-height: 48px !important;
	}

	/*
	 * The mobile type rule in theme-brand.css lifts every input, select and
	 * textarea to 16px/500 at this width. Buttons are named again here so they
	 * hold 16px/600 rather than dropping to the form-control weight.
	 */
	body .button,
	body button:not(.cgkit-swatch, .close-drawer, .filters, .plus, .minus, .qty-btn, .pswp__button, .commercekit-wishlist-btn, .ci-reviews-nav, .show-password-input, .elementor-search-form__submit, .ci-select__button),
	body input[type="submit"],
	body .elementor-button {
		font-size: var(--fs-button, 16px) !important;
		font-weight: 600 !important;
	}
}
