/**
 * Styles for the [tzumi_site_header] shortcode.
 *
 * Everything is scoped under .tzumi-* root classes so this can be dropped
 * into an existing Elementor-built page (via the Shortcode widget in the
 * Header theme template) without leaking into or being overridden by the
 * site's own global styles — same approach as site-footer.css.
 *
 * There are four separate root elements, not one: .tzumi-site-header (the
 * sticky bar + rail), .tzumi-mobile-menu, .tzumi-cart-drawer and
 * .tzumi-menu-backdrop are DOM siblings, not nested inside one another.
 * The two drawers and the backdrop are position:fixed and need to resolve
 * that against the real viewport, not against .tzumi-site-header's own
 * position:sticky — nesting them inside it would make their fixed
 * positioning resolve against ITS containing block instead, breaking
 * full-height coverage and letting them scroll with the page. Custom
 * properties are therefore declared on all four roots together below
 * (harmless duplication) rather than once on a single ancestor, since
 * sibling elements don't inherit each other's custom properties.
 *
 * 'Fredoka' and 'Nunito Sans' are expected to already be enqueued site-wide
 * (see tzumi_blocks_enqueue_fonts() in tzumi-blocks.php) — not repeated
 * here. 'IBM Plex Mono' (used for prices/quantities only) is enqueued
 * specifically by tzumi_blocks_enqueue_site_header_assets(), since no
 * other component on the site currently needs it.
 */

.tzumi-site-header, .tzumi-site-header *, .tzumi-site-header *::before, .tzumi-site-header *::after,
.tzumi-mobile-menu, .tzumi-mobile-menu *, .tzumi-mobile-menu *::before, .tzumi-mobile-menu *::after,
.tzumi-cart-drawer, .tzumi-cart-drawer *, .tzumi-cart-drawer *::before, .tzumi-cart-drawer *::after,
.tzumi-skip-link {
	box-sizing: border-box;
}

/*
 * Hard reset against the site's global Kit/theme CSS — same reasoning as
 * site-footer.css's equivalent rule: Elementor's Kit writes rules straight
 * onto bare tags, which ties in specificity with a plain descendant
 * selector in a way that depends on stylesheet load order. !important here
 * makes this component's own type/decoration win regardless of that.
 */
.tzumi-site-header, .tzumi-site-header *,
.tzumi-mobile-menu, .tzumi-mobile-menu *,
.tzumi-cart-drawer, .tzumi-cart-drawer * {
	font-family: 'Nunito Sans', -apple-system, 'Segoe UI', sans-serif !important;
	text-decoration: none !important;
}
.tzumi-site-header h1, .tzumi-site-header h2, .tzumi-site-header h3, .tzumi-site-header h4,
.tzumi-mobile-menu h1, .tzumi-mobile-menu h2, .tzumi-mobile-menu h3, .tzumi-mobile-menu h4,
.tzumi-cart-drawer h1, .tzumi-cart-drawer h2, .tzumi-cart-drawer h3, .tzumi-cart-drawer h4 {
	font-family: 'Fredoka', -apple-system, 'Segoe UI', sans-serif !important;
}
/* box-shadow is the one button property with zero exceptions across this
   whole component, so it's the only one reset in bulk. border/background/
   color are NOT reset here on purpose — an earlier version of this file
   tried to, but ".tzumi-site-header button" (a class + an element = 2
   specificity points) is MORE specific than a bare single-class selector
   like ".tzumi-qty-btn" (1 point), so that blanket rule was silently
   beating this file's own later per-button !important overrides, on top
   of whatever the theme's reset.css was already doing. Each button class
   below now sets its own border/background/color directly, doubled
   (".tzumi-x.tzumi-x") to reach 2 specificity points so it reliably wins
   against both this file's own rules and the theme's reset.css — instead
   of everything racing on !important alone and depending on which
   stylesheet happens to load last. */
.tzumi-site-header button,
.tzumi-mobile-menu button,
.tzumi-cart-drawer button {
	box-shadow: none !important;
}
/* Prices and the quantity stepper are the one deliberate exception to the
   body-font reset above — a later rule needs to out-rank it, hence the
   extra !important stacked on top of the one it's overriding. */
.tzumi-site-header .tzumi-price, .tzumi-site-header .tzumi-price *,
.tzumi-cart-drawer .tzumi-price, .tzumi-cart-drawer .tzumi-price *,
.tzumi-cart-drawer .tzumi-qty-value {
	font-family: 'IBM Plex Mono', 'SFMono-Regular', Menlo, monospace !important;
	font-variant-numeric: tabular-nums;
}
/* WooCommerce's own get_price_html() wraps an on-sale product's regular
   price in <del> and its sale price in <ins> — that pairing is the ONLY
   thing visually telling a shopper "was X, now Y" apart from plain text.
   The blanket "text-decoration:none !important" hard reset a few lines up
   (needed to strip the theme's own default underlines everywhere else)
   wipes <del>'s strikethrough right along with them, so it has to be
   restored here, specifically, for these two tags. */
.tzumi-price del{text-decoration:line-through !important;color:var(--tzumi-lightgrey);font-weight:500;font-size:0.85em;margin-right:6px;}
.tzumi-price ins{text-decoration:none !important;color:var(--tzumi-accent);font-weight:600;}
/* a price with no sale (just get_price_html()'s plain span, no del/ins)
   keeps the color passed in via each specific price class (.tzumi-cl-price
   etc.) rather than being forced red here. */

.tzumi-site-header,
.tzumi-mobile-menu,
.tzumi-cart-drawer,
.tzumi-menu-backdrop {
	--tzumi-accent: #D90D1E;
	--tzumi-accent-hover: #B80A19;
	--tzumi-accent-tint: #FADADD;
	--tzumi-ink: #181818;
	--tzumi-midgrey: #57585A;
	--tzumi-lightgrey: #8C8D8F;
	--tzumi-line: #E1DFDB;
	--tzumi-paper: #F7F6F4;
	--tzumi-white: #FFFFFF;
}

.tzumi-site-header a, .tzumi-mobile-menu a, .tzumi-cart-drawer a { color: inherit; }
.tzumi-site-header button, .tzumi-mobile-menu button, .tzumi-cart-drawer button { font: inherit; }
.tzumi-site-header :focus-visible, .tzumi-mobile-menu :focus-visible, .tzumi-cart-drawer :focus-visible, .tzumi-skip-link:focus-visible {
	outline: 2px solid var(--tzumi-accent);
	outline-offset: 3px;
	border-radius: 6px;
}
/* :focus-visible's own "was this keyboard or a pointer?" heuristic isn't
   consistent across browsers for <a> elements (most visibly on Safari) —
   it was matching mouse/touch clicks on product cards, not just Tab, and
   showing this ring on every click. site-header.js tracks real input
   modality itself (a mousedown/touchstart sets this class, a Tab keydown
   clears it) and this override — !important, since it must beat the rule
   above regardless of whichever elements :focus-visible decided to match —
   is what actually makes clicking never show the ring, independent of any
   one browser's heuristics. */
body.tzumi-using-pointer .tzumi-site-header :focus-visible,
body.tzumi-using-pointer .tzumi-mobile-menu :focus-visible,
body.tzumi-using-pointer .tzumi-cart-drawer :focus-visible,
body.tzumi-using-pointer .tzumi-skip-link:focus-visible {
	outline: none !important;
}

/* Skip link — off-screen until keyboard focus lands on it, so keyboard/
   screen-reader users can bypass the whole header and jump straight to
   the page's own #main-content wrapper. */
.tzumi-skip-link{position:absolute;top:-48px;left:12px;z-index:100;background:var(--tzumi-accent, #D90D1E);color:#fff;padding:10px 18px;border-radius:8px;font-size:13px;font-weight:600;text-decoration:none;transition:top .15s ease;}
.tzumi-skip-link:focus{top:12px;}

.tzumi-thumb.tzumi-img-ph{background:var(--tzumi-line);border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--tzumi-midgrey);}
.tzumi-thumb.tzumi-img-ph svg{width:14px !important;height:14px !important;flex-shrink:0;}

.tzumi-btn{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;text-transform:uppercase;padding:13px 26px;border-radius:8px;text-decoration:none;cursor:pointer;border:none;white-space:nowrap;transition:transform .12s ease,background-color .12s ease,border-color .12s ease,color .12s ease;}
.tzumi-btn:hover{transform:translateY(-1px);}
/* !important: the theme's own link/button color styling has been winning
   over every plain (non-!important) color declaration in this file so
   far — no reason Checkout would be the exception just because it's an
   <a> instead of a <button>. */
.tzumi-btn-primary.tzumi-btn-primary{background-color:var(--tzumi-accent) !important;color:var(--tzumi-white) !important;}
.tzumi-btn-primary{background:var(--tzumi-accent);color:var(--tzumi-white);}
.tzumi-btn-primary.tzumi-btn-primary:hover{background-color:var(--tzumi-accent-hover) !important;color:var(--tzumi-white) !important;}
.tzumi-btn-primary:hover{background:var(--tzumi-accent-hover);}
.tzumi-btn-block{width:100%;justify-content:center;}

/* ===== Sticky header shell ===== */
.tzumi-site-header{position:sticky;top:0;z-index:30;transition:transform .25s ease;will-change:transform;}
.tzumi-site-header.tzumi-header-hidden{transform:translateY(-100%);}

.tzumi-announce{position:relative;background:var(--tzumi-accent);color:#fff;font-size:14px;font-weight:600;text-align:center;}
.tzumi-announce-inner{display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:1520px;margin:0 auto;padding:3px 20px;}
.tzumi-announce-arrow.tzumi-announce-arrow,
.tzumi-announce-arrow.tzumi-announce-arrow:hover,
.tzumi-announce-arrow.tzumi-announce-arrow:focus{background-color:transparent !important;border:none !important;color:#fff !important;display:flex !important;padding:4px !important;border-radius:0 !important;}
.tzumi-announce-arrow{opacity:.85;display:flex;flex:0 0 auto;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:4px;}
.tzumi-announce-arrow svg{width:14px !important;height:14px !important;flex-shrink:0;}
.tzumi-announce-msg{display:none;flex:1;min-width:0;}
.tzumi-announce-msg.is-active{display:block;}

.tzumi-site-header-row-wrap{position:relative;z-index:6;background:var(--tzumi-paper);border-bottom:1px solid var(--tzumi-line);}
.tzumi-site-header-row{display:grid;grid-template-columns:repeat(3, 1fr);align-items:center;gap:24px;max-width:1520px;margin:0 auto;padding:14px 20px;}
.tzumi-header-start{display:flex;align-items:center;gap:18px;flex-shrink:0;}
.tzumi-site-logo{display:flex;align-items:center;flex-shrink:0;}
/* !important on every dimension: the theme's own global "img{max-width:
   100%;height:auto}" responsive-image reset (near-universal in WP themes/
   Elementor) otherwise lets this stretch to fill .tzumi-header-start's
   flex width, then scale its height up to match — same class of leak as
   the button border fix above, just on <img> instead of <button>. */
.tzumi-site-logo img{height:30px !important;width:auto !important;max-width:none !important;max-height:30px !important;display:block !important;}
.tzumi-primary-nav{display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:wrap;}
.tzumi-nav-link{font-size:14px;font-weight:600;color:var(--tzumi-ink);text-decoration:none;transition:color .15s ease;}
.tzumi-nav-link:hover{color:var(--tzumi-accent);}
.tzumi-nav-link.is-strong{font-weight:700;}
/* gap is 44px, not the ~20px the row visually reads as, to counteract
   .tzumi-icon-btn's own padding:12px/margin:-12px tap-target trick below —
   flex `gap` measures between items' margin edges, so two adjacent -12px
   margins eat 24px straight out of it (44 - 12 - 12 = 20, the actual
   visual gap). Getting this wrong doesn't just look tight, it makes
   adjacent icon buttons' click/tap areas overlap by the shortfall. */
.tzumi-header-actions{display:flex;align-items:center;justify-content:flex-end;gap:44px;flex-shrink:0;}
/* padding+negative margin grows the tap target to 44px without shifting
   the visible icon or the gap between adjacent buttons. */
.tzumi-icon-btn.tzumi-icon-btn{background-color:transparent !important;border:none !important;border-radius:0 !important;color:var(--tzumi-ink) !important;display:flex !important;padding:12px !important;font-size:13px !important;font-weight:600 !important;text-align:left !important;white-space:nowrap !important;transition:color .15s ease !important;}
.tzumi-icon-btn{display:flex;align-items:center;justify-content:center;gap:5px;background:none;border:none;cursor:pointer;font-size:13px;font-weight:600;line-height:1;color:var(--tzumi-ink);padding:12px;margin:-12px;text-decoration:none;width:auto !important;}
.tzumi-icon-btn svg{width:20px !important;height:20px !important;flex-shrink:0;}
.tzumi-icon-btn.tzumi-icon-btn:hover,.tzumi-icon-btn.tzumi-icon-btn:focus{background-color:transparent !important;color:var(--tzumi-accent) !important;}
.tzumi-icon-btn span{white-space:nowrap;}
/* margin-right makes room for .tzumi-cart-count's badge, which sits at
   right:-7px — without it, the badge overlaps .tzumi-icon-btn's 5px gap
   and crowds right up against the "Cart" label next to it. */
.tzumi-bag-wrap{position:relative;display:flex;margin-right:8px;}
.tzumi-cart-count{position:absolute;top:-6px;right:-7px;background:var(--tzumi-accent);color:#fff;font-size:9.5px;font-weight:800;border-radius:50%;width:15px;height:15px;display:flex;align-items:center;justify-content:center;}

/* !important on display: the theme's global button reset (same source as
   the border leak fixed above) apparently normalizes every <button> to a
   visible display value too, which otherwise beats this plain class
   selector and makes the hamburger show up on desktop where it should be
   display:none. The @media override further down re-asserts !important
   as well so it isn't itself out-ranked back the other way. */
.tzumi-hamburger-btn.tzumi-hamburger-btn{background-color:transparent !important;border:none !important;border-radius:0 !important;color:var(--tzumi-ink) !important;padding:0 !important;transition:color .15s ease !important;}
.tzumi-hamburger-btn{display:none !important;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--tzumi-ink);padding:0;width:44px !important;height:44px !important;margin:0 -10px;flex-shrink:0;}
.tzumi-hamburger-btn svg{width:22px !important;height:22px !important;flex-shrink:0;}
.tzumi-hamburger-btn.tzumi-hamburger-btn:hover,.tzumi-hamburger-btn.tzumi-hamburger-btn:focus{background-color:transparent !important;color:var(--tzumi-accent) !important;}

/* shared close (x) button for the cart drawer, mobile menu and search
   panel headers — each of those parents is already
   display:flex;justify-content:space-between (or, for search, position:
   relative), so no position:absolute anchoring is needed here. */
.tzumi-panel-close.tzumi-panel-close,
.tzumi-panel-close.tzumi-panel-close:hover,
.tzumi-panel-close.tzumi-panel-close:focus{background-color:transparent !important;border:none !important;border-radius:0 !important;color:var(--tzumi-ink) !important;display:flex !important;padding:0 !important;}
.tzumi-panel-close{background:none;border:none;cursor:pointer;display:flex;flex-shrink:0;width:auto !important;}
.tzumi-panel-close svg{width:20px !important;height:20px !important;flex-shrink:0;}

.tzumi-search-panel{position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:1px solid var(--tzumi-line);box-shadow:0 24px 44px -24px rgba(0,0,0,.2);z-index:22;padding:20px 20px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .18s ease,transform .18s ease,visibility .18s;}
.tzumi-search-panel.open{opacity:1;visibility:visible;transform:translateY(0);}
.tzumi-search-panel-inner{position:relative;max-width:760px;margin:0 auto;padding:30px 0;}
.tzumi-search-close{position:absolute;top:0;right:0;}
.tzumi-search-panel-row{display:flex;align-items:center;gap:14px;margin:0 0 18px;border-bottom:2px solid var(--tzumi-ink);padding-bottom:5px;}
.tzumi-search-panel-row svg{width:20px !important;height:20px !important;color:var(--tzumi-midgrey);flex-shrink:0;}
/* the theme very likely has a generic text-input reset the same way it has
   one for buttons — .tzumi-qty-value (also a type="text" input) hit
   exactly this, getting stretched to fill its row by a forced width:100%.
   Doubled class for the same specificity-guarantee reason as every button
   fix above, covering every box-model/typography property that reset
   could plausibly set. */
.tzumi-search-panel-row input{
	flex:1 !important;
	width:auto !important;
	max-width:none !important;
	min-width:0 !important;
	height:auto !important;
	border:none !important;
	border-radius:0 !important;
	background:none !important;
	background-color:transparent !important;
	box-shadow:none !important;
	font-size:16px !important;
	font-weight:400 !important;
	color:var(--tzumi-ink) !important;
	outline:none;
	font-family:inherit;
	padding:0 !important;
	text-align:left !important;
	margin:0 !important;
}
.tzumi-search-panel-row input::placeholder{color:var(--tzumi-lightgrey) !important;opacity:1 !important;}
.tzumi-search-clear.tzumi-search-clear{background-color:transparent !important;border:none !important;border-radius:0 !important;color:var(--tzumi-midgrey) !important;padding:0 !important;font-size:13px !important;font-weight:400 !important;text-align:left !important;white-space:nowrap !important;}
.tzumi-search-clear{background:none;border:none;cursor:pointer;flex-shrink:0;font-size:13px;font-weight:400;color:var(--tzumi-midgrey);white-space:nowrap;}
.tzumi-search-clear.tzumi-search-clear:hover,.tzumi-search-clear.tzumi-search-clear:focus{background-color:transparent !important;color:var(--tzumi-accent) !important;}
.tzumi-chip{font-size:12px;font-weight:400;color:var(--tzumi-ink);background:var(--tzumi-paper);border:1px solid var(--tzumi-line);border-radius:20px;padding:6px 13px;text-decoration:none;}
.tzumi-chip:hover{border-color:var(--tzumi-ink);}

.tzumi-search-discover{margin:26px 0 0;display:flex;flex-direction:column;gap:24px;}
.tzumi-search-discover-col{display:flex;flex-direction:column;gap:12px;}
.tzumi-sd-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--tzumi-midgrey);}
.tzumi-search-suggest{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}

.tzumi-search-cat-grid{display:flex;gap:24px;}
.tzumi-search-cat-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px;}
.tzumi-search-cat-link{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:400;color:var(--tzumi-ink);text-decoration:none;}
.tzumi-search-cat-link:hover{color:var(--tzumi-accent);}

.tzumi-search-product-grid, .tzumi-search-results-grid{display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-start;gap:20px;}
/* flex:0 0 Npx, not flex:1 — with flex-wrap:wrap, a flex:1 card left alone
   on the last row (a very likely outcome with a variable result count like
   live search returns) would grow to fill that entire row on its own,
   blowing its image up along with it. A fixed basis, same pattern as
   .tzumi-cff-product below, never stretches regardless of row balance. */
.tzumi-search-product{flex:0 0 130px;width:130px;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:8px;text-decoration:none;color:var(--tzumi-ink);}
.tzumi-search-product .tzumi-thumb{width:100% !important;height:auto !important;max-width:100% !important;border-radius:8px;flex-shrink:0;aspect-ratio:1;object-fit:cover;}
.tzumi-sp-name{font-size:13px;font-weight:400;}
.tzumi-sp-price{font-size:12px;font-weight:600;color:var(--tzumi-midgrey);}
.tzumi-search-product:hover .tzumi-sp-name{color:var(--tzumi-accent);}

.tzumi-search-results{margin:26px 0 0;}
.tzumi-search-results-empty{color:var(--tzumi-midgrey);font-size:13px;padding:12px 0;}
.tzumi-search-results-loading{color:var(--tzumi-midgrey);font-size:13px;padding:12px 0;}

.tzumi-search-viewall-row{margin:26px 0 0;text-align:center;}
.tzumi-search-viewall-link.tzumi-search-viewall-link,
.tzumi-search-viewall-link.tzumi-search-viewall-link:hover,
.tzumi-search-viewall-link.tzumi-search-viewall-link:focus{color:var(--tzumi-accent) !important;border-color:var(--tzumi-accent) !important;}
.tzumi-search-viewall-link{display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--tzumi-accent);text-decoration:none;border:1.5px solid var(--tzumi-accent);border-radius:20px;padding:10px 22px;transition:background-color .15s ease;}
.tzumi-search-viewall-link:hover{background:var(--tzumi-accent-tint);}

/* ===== Cart drawer ===== */
.tzumi-cart-drawer{position:fixed;top:0;right:0;height:100vh;width:400px;max-width:86%;background:#fff;border-left:1px solid var(--tzumi-line);z-index:40;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .28s ease;box-shadow:-18px 0 40px -20px rgba(0,0,0,.25);}
.tzumi-cart-drawer.open{transform:translateX(0);}
.tzumi-cart-drawer-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--tzumi-line);flex-shrink:0;}
.tzumi-cart-drawer-head h3{font-size:15px;font-weight:600;}
.tzumi-cart-drawer-body{flex:1;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:20px;}
.tzumi-cart-drawer-body:empty::after{content:'Your cart is empty.';display:block;color:var(--tzumi-midgrey);font-size:13px;text-align:center;padding:40px 0;}
.tzumi-cart-line{display:flex;gap:14px;padding-bottom:20px;border-bottom:1px solid var(--tzumi-line);}
.tzumi-cart-line:last-child{padding-bottom:0;border-bottom:none;}
/* !important on every dimension — same theme "img{max-width:100%;height:
   auto}" leak as the logo fix earlier, this time on the real WooCommerce
   product thumbnail <img> rather than a placeholder icon, so it's much
   more visible when it goes wrong (a full-width, uncropped image blowing
   out the whole cart line's flex layout instead of a neat 64x64 square). */
.tzumi-cart-line .tzumi-thumb{width:64px !important;height:64px !important;max-width:64px !important;max-height:64px !important;min-width:64px !important;border-radius:10px;flex-shrink:0;object-fit:cover;}
.tzumi-cart-line-meta{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0;}
.tzumi-cart-line-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;}
.tzumi-cart-line-top h4{font-size:13px;font-weight:400;line-height:1.35;}
.tzumi-cl-price{font-size:13px;color:var(--tzumi-ink);}
.tzumi-cart-line-remove.tzumi-cart-line-remove{background-color:transparent !important;border:none !important;border-radius:50% !important;color:var(--tzumi-midgrey) !important;display:flex !important;padding:0 !important;transition:color .15s ease,background-color .15s ease !important;}
.tzumi-cart-line-remove{flex-shrink:0;width:26px !important;height:26px !important;display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--tzumi-midgrey);border-radius:50%;transition:color .15s ease,background-color .15s ease;}
.tzumi-cart-line-remove svg{width:18px !important;height:18px !important;flex-shrink:0;}
.tzumi-cart-line-remove.tzumi-cart-line-remove:hover,.tzumi-cart-line-remove.tzumi-cart-line-remove:focus{color:var(--tzumi-accent) !important;background-color:var(--tzumi-accent-tint) !important;}
.tzumi-cart-line-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.tzumi-qty-stepper{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.tzumi-qty-btn.tzumi-qty-btn{background-color:var(--tzumi-white) !important;border:1.5px solid var(--tzumi-line) !important;border-radius:20px !important;color:var(--tzumi-ink) !important;display:flex !important;padding:0 !important;transition:background-color .15s ease,border-color .15s ease,color .15s ease !important;}
.tzumi-qty-btn{width:25px !important;height:25px !important;max-width:25px !important;display:flex;align-items:center;justify-content:center;background:var(--tzumi-white);border:1.5px solid var(--tzumi-line);color:var(--tzumi-ink);border-radius:20px;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease;flex-shrink:0;}
.tzumi-qty-btn.tzumi-qty-btn:hover,.tzumi-qty-btn.tzumi-qty-btn:focus{background-color:var(--tzumi-lightgrey) !important;border-color:var(--tzumi-lightgrey) !important;color:var(--tzumi-white) !important;}
.tzumi-qty-btn.tzumi-qty-btn:disabled{background-color:var(--tzumi-white) !important;border-color:var(--tzumi-line) !important;color:var(--tzumi-ink) !important;}
.tzumi-qty-btn svg{width:14px !important;height:14px !important;flex-shrink:0;}
.tzumi-qty-btn:disabled{opacity:.4;cursor:not-allowed;}
/* !important on every box-model property — the theme's global <input>
   styling (near-universal "make form fields fill their container" pattern,
   often width:100% plus its own border/padding) otherwise stretches this
   to fill the whole .tzumi-cart-line-bottom row, shoving the plus button
   off to the right and forcing the cart drawer to scroll horizontally. */
.tzumi-qty-value{min-width:30px !important;width:30px !important;max-width:30px !important;height:30px !important;padding:0 !important;border:1.5px solid var(--tzumi-line) !important;background:var(--tzumi-white) !important;display:flex;align-items:center;justify-content:center;border-radius:10px;font-weight:600;font-size:14px;flex-shrink:0;color:var(--tzumi-ink);text-align:center;-moz-appearance:textfield;}
.tzumi-qty-value::-webkit-outer-spin-button,.tzumi-qty-value::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.tzumi-qty-value:focus{outline:none;border-color:var(--tzumi-ink);}
.tzumi-cart-line.is-updating{opacity:.5;pointer-events:none;}
.tzumi-cart-drawer-foot{border-top:1px solid var(--tzumi-line);padding:18px 22px 22px;flex-shrink:0;display:flex;flex-direction:column;gap:10px;}
.tzumi-cart-subtotal{display:flex;justify-content:space-between;font-size:13px;font-weight:600;margin-bottom:6px;}
.tzumi-cart-subtotal span:last-child{color:var(--tzumi-ink);}

/* ===== Mobile menu drawer ===== */
.tzumi-menu-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:39;opacity:0;visibility:hidden;transition:opacity .28s ease,visibility .28s;}
.tzumi-menu-backdrop.open{opacity:1;visibility:visible;}

.tzumi-mobile-menu{position:fixed;top:0;left:0;height:100vh;width:320px;max-width:86%;background:#fff;border-right:1px solid var(--tzumi-line);z-index:40;display:flex;flex-direction:column;transform:translateX(-100%);transition:transform .28s ease;box-shadow:18px 0 40px -20px rgba(0,0,0,.25);}
.tzumi-mobile-menu.open{transform:translateX(0);}
.tzumi-mobile-menu-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--tzumi-line);flex-shrink:0;}
.tzumi-mobile-menu-head h3{font-size:15px;font-weight:600;}
.tzumi-mobile-menu-body{flex:1;overflow-y:auto;}

.tzumi-mm-shop-all{display:flex;align-items:center;padding:16px 22px;font-size:14px;font-weight:600;color:var(--tzumi-accent);text-decoration:none;border-bottom:1px solid var(--tzumi-line);}

.tzumi-mm-group{border-bottom:1px solid var(--tzumi-line);padding:14px 0;}
.tzumi-mm-group:last-child{border-bottom:none;}

.tzumi-mm-cat.tzumi-mm-cat{background-color:transparent !important;border:none !important;border-radius:0 !important;color:var(--tzumi-ink) !important;display:flex !important;padding:11px 22px !important;font-size:14px !important;font-weight:600 !important;text-align:left !important;white-space:normal !important;}
.tzumi-mm-cat{width:100%;display:flex;align-items:center;gap:12px;background:none;border:none;cursor:pointer;text-align:left;padding:11px 22px;font-size:14px;font-weight:600;color:var(--tzumi-ink);}
.tzumi-mm-cat.tzumi-mm-cat:hover,.tzumi-mm-cat.tzumi-mm-cat:focus,.tzumi-mm-cat.tzumi-mm-cat.is-open{background-color:transparent !important;color:var(--tzumi-accent) !important;}
.tzumi-mm-cat .tzumi-chev{margin-left:auto;width:13px !important;height:13px !important;flex-shrink:0;transition:transform .15s ease;}
.tzumi-mm-cat.is-open .tzumi-chev{transform:rotate(180deg);}

.tzumi-mm-link{width:100%;display:flex;align-items:center;gap:12px;padding:11px 22px;font-size:14px;font-weight:600;color:var(--tzumi-ink);text-decoration:none;background:none;border:none;cursor:pointer;text-align:left;}
.tzumi-mm-link:hover{color:var(--tzumi-accent);}
.tzumi-mm-link svg{width:20px !important;height:20px !important;flex-shrink:0;}

.tzumi-mm-sub{max-height:0;overflow:hidden;transition:max-height .22s ease;}
.tzumi-mm-sub.open{max-height:400px;}
.tzumi-mm-sub-inner{display:flex;flex-direction:column;gap:10px;padding:2px 22px 14px 34px;}
.tzumi-mm-sub-inner a{font-size:13px;font-weight:400;text-decoration:none;padding:6px 0;}
.tzumi-mm-sub-inner a:hover{color:var(--tzumi-accent);}
.tzumi-mm-sub-inner a.tzumi-mm-sub-viewall{font-weight:600;color:var(--tzumi-accent);text-decoration:underline;}

.tzumi-mobile-menu-foot{border-top:1px solid var(--tzumi-line);padding:8px 0;flex-shrink:0;}

/* ===== Persistent category rail ===== */
.tzumi-rail-wrap{position:relative;}
.tzumi-category-rail{background:#fff;border-bottom:1px solid var(--tzumi-line);}
.tzumi-category-rail-inner{display:flex;align-items:center;gap:26px;margin:0 auto;padding:13px 20px;max-width:1520px;}
.tzumi-rail-scroll-wrap{position:relative;flex:1;min-width:0;}
/* padding-inline reserves space matching the scroll arrows' own width (see
   .tzumi-rail-scroll-arrow below) so the first/last pill sits beside an
   arrow when one is visible, not underneath its gradient/hit area — kept
   always-on rather than toggled with .is-visible so pills don't shift
   position the moment an arrow appears or disappears mid-scroll. */
.tzumi-category-rail-scroll{display:flex;align-items:center;gap:26px;width:100%;overflow-x:auto;scrollbar-width:none;padding-inline:32px;}
.tzumi-category-rail-scroll::-webkit-scrollbar{display:none;}
/* !important on display — same theme-button-reset risk as
   .tzumi-hamburger-btn above; this is a <button> too. */
.tzumi-rail-scroll-arrow.tzumi-rail-scroll-arrow{background-color:transparent !important;border:none !important;border-radius:0 !important;color:var(--tzumi-ink) !important;padding:2px !important;}
.tzumi-rail-scroll-arrow{display:none !important;position:absolute;top:0;bottom:0;width:32px !important;align-items:center;background:none;border:none;cursor:pointer;color:var(--tzumi-ink);padding:2px;z-index:2;}
.tzumi-rail-scroll-arrow svg{width:16px !important;height:16px !important;flex-shrink:0;}
.tzumi-rail-scroll-arrow.tzumi-rail-scroll-arrow:hover,.tzumi-rail-scroll-arrow.tzumi-rail-scroll-arrow:focus{background-color:transparent !important;color:var(--tzumi-accent) !important;}
.tzumi-rail-scroll-arrow.is-visible{display:flex !important;}
.tzumi-rail-scroll-left{left:0;justify-content:flex-start;background:linear-gradient(to right,#fff 60%,transparent);}
.tzumi-rail-scroll-right{right:0;justify-content:flex-end;background:linear-gradient(to left,#fff 60%,transparent);}
/* Doubled class (".tzumi-rail-pill.tzumi-rail-pill") for extra specificity,
   not just !important — the theme's reset.css forces background-color and
   color on button:hover/button:focus (same rule the footer's own
   .tzumi-footer-trigger fix documents), and a plain single-class selector
   can lose that fight on specificity alone even with !important on both
   sides if reset.css's own rule is also !important. Doubling the class
   pushes this selector's specificity above any plausible generic
   button/[type=button] reset without needing to know its exact rule. */
.tzumi-rail-pill.tzumi-rail-pill,
.tzumi-rail-pill.tzumi-rail-pill:hover,
.tzumi-rail-pill.tzumi-rail-pill:focus{background-color:transparent !important;border:none !important;border-radius:0 !important;display:flex !important;padding:0 !important;font-size:14px !important;font-weight:600 !important;text-align:left !important;white-space:nowrap !important;}
.tzumi-rail-pill{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--tzumi-ink);font-size:14px;font-weight:600;white-space:nowrap;background:none;border:none;cursor:pointer;padding:0;flex-shrink:0;}
.tzumi-rail-pill.tzumi-rail-pill{color:var(--tzumi-ink) !important;}
.tzumi-rail-pill.tzumi-rail-pill:hover,.tzumi-rail-pill.tzumi-rail-pill.is-open{color:var(--tzumi-accent) !important;}
.tzumi-rail-pill .tzumi-chev{width:13px !important;height:13px !important;flex-shrink:0;transition:transform .15s ease;}
.tzumi-rail-pill.is-open .tzumi-chev{transform:rotate(180deg);}
.tzumi-rail-pill.tzumi-rail-pill.tzumi-rail-all{color:var(--tzumi-accent) !important;}
.tzumi-rail-pill.tzumi-rail-pill.tzumi-rail-all:hover{color:#FF6281 !important;}
.tzumi-category-rail .tzumi-rail-sep{width:1px;height:22px;background:var(--tzumi-line);flex-shrink:0;}

.tzumi-cat-flyout{position:absolute;left:0;top:calc(100% + 8px);background:#fff;border:1px solid var(--tzumi-line);border-radius:12px;box-shadow:0 24px 44px -24px rgba(0,0,0,.2);z-index:16;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .18s ease,transform .18s ease,visibility .18s;}
.tzumi-cat-flyout.open{opacity:1;visibility:visible;transform:translateY(0);}
.tzumi-cat-flyout-panel{display:none;padding:14px;gap:18px;}
.tzumi-cat-flyout-panel.active{display:flex;flex-direction:row;align-items:flex-start;}
.tzumi-cat-flyout-links-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;max-height:360px;overflow-y:auto;}
.tzumi-cat-flyout-head{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--tzumi-accent);text-decoration:none;padding:8px 10px 12px;border-bottom:1px solid var(--tzumi-line);margin-bottom:4px;display:block;}
.tzumi-cat-flyout-head:hover{color:var(--tzumi-ink);}
.tzumi-cat-flyout-links{display:flex;flex-direction:column;gap:2px;}
.tzumi-cat-flyout-links a{font-size:13px;font-weight:400;color:var(--tzumi-ink);border-radius:8px;padding:9px 10px;text-decoration:none;transition:background-color .15s ease;}
.tzumi-cat-flyout-links a:hover{background:#e4e4e4;}

.tzumi-cat-flyout-featured{flex:0 0 300px;display:flex;flex-direction:column;gap:10px;padding:8px 0 8px 16px;border-left:1px solid var(--tzumi-line);}
.tzumi-cff-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--tzumi-midgrey);}
.tzumi-cff-grid{display:flex;flex-direction:row;gap:14px;}
.tzumi-cff-product{width:130px;flex:0 0 130px;display:flex;flex-direction:column;gap:6px;text-decoration:none;color:var(--tzumi-ink);}
.tzumi-cff-product .tzumi-thumb{width:100% !important;height:auto !important;max-width:100% !important;aspect-ratio:1;border-radius:8px;object-fit:cover;}
.tzumi-cat-flyout-panel.is-simple.active{display:flex;flex-direction:column;align-items:stretch;gap:2px;}
.tzumi-cat-flyout-panel.is-simple .tzumi-cat-flyout-featured{flex:none;border-left:none;padding:10px 10px 4px;}
.tzumi-cff-name{font-size:12px;font-weight:400;line-height:1.3;}
.tzumi-cff-price{font-size:12px;font-weight:600;color:var(--tzumi-midgrey);}
.tzumi-cff-product:hover .tzumi-cff-name{color:var(--tzumi-accent);}

@media (max-width:1100px){
	.tzumi-site-header-row{grid-template-columns:1fr 1fr;padding:12px 20px;gap:16px;}
	/* !important throughout this block for the same reason as the base
	   .tzumi-hamburger-btn rule above — these are all show/hide toggles
	   the theme's own button/element resets have been observed winning
	   against otherwise. */
	.tzumi-primary-nav{display:none !important;}
	.tzumi-rail-wrap{display:none !important;}
	.tzumi-hamburger-btn{display:flex !important;}
	/* same 24px (2x12px) correction as the base rule above — at this width
	   only search+cart remain (account is hidden by the rule below), so
	   this is one pair, not several, but the math is identical. */
	.tzumi-header-actions{gap:32px;}
	.tzumi-header-actions .tzumi-header-btn, .tzumi-icon-label{display:none !important;}
}
@media (max-width:640px){
	.tzumi-header-start{gap:12px;}
	.tzumi-mobile-menu{width:300px;}
}
@media (prefers-reduced-motion:reduce){
	.tzumi-site-header,.tzumi-search-panel,.tzumi-cart-drawer,.tzumi-cat-flyout,.tzumi-rail-pill .tzumi-chev,
	.tzumi-mobile-menu,.tzumi-menu-backdrop,.tzumi-mm-cat .tzumi-chev,.tzumi-mm-sub,.tzumi-btn{transition:none !important;}
	.tzumi-btn:hover{transform:none;}
}
