/* Isolated, reusable counterparts of the supplied HTML components. */
.bimb-ui-wrap {
	width: 100%;
	max-width: var(--bimb-ui-wrap);
	margin-inline: auto;
	padding-inline: var(--bimb-ui-wrap-padding);
}

.bimb-ui-section { padding-block: var(--bimb-ui-section-padding); }

.bimb-ui-heading {
	margin: 0;
	font-family: var(--bimb-ui-font-body);
	text-transform: uppercase;
	color: var(--bimb-ui-ink);
}

.bimb-ui-heading--xxl { font-size: clamp(32px, 5vw, 68px); font-weight: 500; line-height: 1.04; letter-spacing: .01em; }
.bimb-ui-heading--xl { font-size: clamp(23px, 3.2vw, 42px); font-weight: 500; line-height: 1.08; letter-spacing: .015em; }
.bimb-ui-heading--l { font-size: clamp(19px, 2.3vw, 30px); font-weight: 500; line-height: 1.12; letter-spacing: .02em; }
.bimb-ui-heading--m { font-size: clamp(14px, 1.6vw, 20px); font-weight: 600; line-height: 1.2; letter-spacing: .03em; }

.bimb-ui-eyebrow { font: 400 12px/1.4 var(--bimb-ui-font-body); letter-spacing: .34em; text-transform: uppercase; color: var(--bimb-ui-muted); }
.bimb-ui-body { font: 400 var(--bimb-ui-body-size)/1.75 var(--bimb-ui-font-body); letter-spacing: var(--bimb-ui-body-tracking); }
.bimb-ui-lead { font-size: var(--bimb-ui-lead-size); }
.bimb-ui-hand { font-family: var(--bimb-ui-font-hand); }

/* One button contract for custom UI and native Woo classes.
 * Scope to storefront components; retain Woo classes and AJAX pseudo-elements.
 * The repeated class weight beats Woo alt selectors without !important. */
:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)) {
	position: relative;
	box-shadow: none;
	text-shadow: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 53px;
	padding: 15px 28px;
	border: 1px solid var(--bimb-ui-ink);
	border-radius: var(--bimb-ui-radius-s);
	background: var(--bimb-ui-ink);
	color: var(--bimb-ui-white);
	font: 500 12px/1.75 var(--bimb-ui-font-body);
	letter-spacing: .1em;
	text-align: center;
	text-decoration: none;
	text-transform: uppercase;
	cursor: pointer;
	transition: background .45s ease, color .45s ease, border-color .45s ease, transform .4s ease;
}

:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)):hover {
	background: var(--bimb-ui-graphite);
	border-color: var(--bimb-ui-graphite);
	color: var(--bimb-ui-white);
}

:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)):active { transform: scale(.97); }

/* Source .btn.on-dark, .btn.ghost, .play. */
:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)).bimb-ui-button--white {
	background: var(--bimb-ui-white);
	border-color: var(--bimb-ui-white);
	color: var(--bimb-ui-ink);
}

:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)).bimb-ui-button--white:hover {
	background: var(--bimb-ui-gray-100);
	border-color: var(--bimb-ui-gray-100);
	color: var(--bimb-ui-ink);
}

:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)):is(.bimb-ui-button--outline, .bimb-ui-button--play) {
	background: transparent;
	border-color: var(--bimb-ui-ink);
	color: var(--bimb-ui-ink);
}

:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)):is(.bimb-ui-button--outline, .bimb-ui-button--play):hover {
	background: var(--bimb-ui-ink);
	border-color: var(--bimb-ui-ink);
	color: var(--bimb-ui-white);
}

:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)).bimb-ui-button--play { padding: 14px 24px; background: var(--bimb-ui-white); font-weight: 400; transition: background .4s ease, color .4s ease; }
.bimb-ui-button--play .bimb-ui-play-triangle {
	width: 0;
	height: 0;
	border-top: 7px solid transparent;
	border-bottom: 7px solid transparent;
	border-left: 11px solid currentColor;
}

/* White outline on dark surfaces (.pod-card .btn / .conf-right .btn). */
:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)).bimb-ui-button--outline-light { background: transparent; border-color: rgba(255, 255, 255, .6); color: var(--bimb-ui-white); }
:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)).bimb-ui-button--outline-light:hover { background: var(--bimb-ui-white); border-color: var(--bimb-ui-white); color: var(--bimb-ui-ink); }

/* Source .gcard .go, year-slide .chip and row-nav button. */
.bimb-ui-arrow-link { display: inline-flex; align-items: center; gap: 8px; color: var(--bimb-ui-ink); font: 400 12px/1.4 var(--bimb-ui-font-body); letter-spacing: .16em; text-decoration: none; text-transform: uppercase; }
.bimb-ui-arrow-link .bimb-ui-icon { transition: transform .3s ease; }
.bimb-ui-arrow-link:hover .bimb-ui-icon,
.bimb-ui-button:hover .bimb-ui-icon--arrow { transform: translateX(4px); }
.bimb-ui-button .bimb-ui-icon--arrow { width: 15px; height: 15px; stroke-width: 1.6; transition: transform .5s; }

.bimb-ui-chip { display: inline-block; padding: 6px 14px; border-radius: var(--bimb-ui-radius-s); background: var(--bimb-ui-accent-soft); color: var(--bimb-ui-ink); font: 400 12px/1.3 var(--bimb-ui-font-body); letter-spacing: .16em; text-transform: uppercase; }

.bimb-ui-icon-button { display: inline-grid; place-items: center; width: 42px; height: 42px; padding: 0; border: 1px solid var(--bimb-ui-ink); border-radius: 8px; background: var(--bimb-ui-ink); color: var(--bimb-ui-white); cursor: pointer; transition: background .3s ease, border-color .3s ease; }
.bimb-ui-icon-button:hover { background: var(--bimb-ui-graphite); border-color: var(--bimb-ui-graphite); }
.bimb-ui-icon { width: 17px; height: 17px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.bimb-ui-icon-button .bimb-ui-icon { width: 16px; height: 16px; }

/* The source applies a subtle sliding sheen to filled CTAs. */
.bimb-ui-button:not(.bimb-ui-button--outline, .bimb-ui-button--play, .bimb-ui-button--outline-light) { overflow: hidden; }
.bimb-ui-button:not(.bimb-ui-button--outline, .bimb-ui-button--play, .bimb-ui-button--outline-light)::after { content: ''; position: absolute; top: 0; left: -70%; width: 45%; height: 100%; background: linear-gradient(105deg, transparent, rgba(255, 255, 255, .28), transparent); transform: skewX(-20deg); transition: left .7s ease; pointer-events: none; }
.bimb-ui-button:not(.bimb-ui-button--outline, .bimb-ui-button--play, .bimb-ui-button--outline-light):hover::after { left: 130%; }

/* Added accessibility states; the supplied HTML did not specify these. */
:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)):focus-visible, :is(.bimb-ui-arrow-link, .bimb-ui-icon-button):focus-visible { outline: 2px solid var(--bimb-ui-ink); outline-offset: 3px; }
:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)):is(:disabled, [disabled], .disabled, [aria-disabled="true"]) { background: var(--bimb-ui-ink); color: var(--bimb-ui-white); opacity: .5; cursor: not-allowed; pointer-events: none; }

@media (max-width: 760px) {
	.bimb-ui-heading--xxl { font-size: clamp(38px, 10.6vw, 50px); }
	.bimb-ui-heading--xl { font-size: clamp(32px, 9.4vw, 42px); }
	.bimb-ui-heading--l { font-size: clamp(26px, 7.4vw, 34px); line-height: 1.14; }
	.bimb-ui-heading--m { font-size: clamp(18px, 4.9vw, 22px); }
}

@media (prefers-reduced-motion: reduce) {
	:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)) { transition: none; }
	:is(.bimb-ui-button, .bimb-ui-arrow-link .bimb-ui-icon, .bimb-ui-icon-button) { transition: none; }
	.bimb-ui-button::after { display: none; }
}

/* Source checkout fields (.field) without Elementor resets. */
.bimb-ui-field { display: grid; gap: 8px; margin-bottom: 16px; }
.bimb-ui-field > label,
.bimb-ui-field > .bimb-ui-label { font: 400 12px/1.75 var(--bimb-ui-font-body); letter-spacing: .16em; text-transform: uppercase; color: var(--bimb-ui-muted); }
.bimb-ui-field :is(input:not([type="checkbox"], [type="radio"]), select, textarea) {
	width: 100%; margin: 0; padding: 14px 18px;
	border: 1px solid var(--bimb-ui-gray-200); border-radius: var(--bimb-ui-radius-s);
	background: var(--bimb-ui-white); color: var(--bimb-ui-ink);
	font: 400 13px/1.4 var(--bimb-ui-font-body); letter-spacing: var(--bimb-ui-body-tracking);
	transition: border-color .3s;
}
.bimb-ui-field :is(input, select, textarea):focus { border-color: var(--bimb-ui-ink); }
.bimb-ui-field :is(input, select, textarea):focus-visible { outline: 2px solid var(--bimb-ui-ink); outline-offset: 3px; }
.bimb-ui-field input::placeholder { color: #a9afb5; }
.bimb-ui-field :is(input, select, textarea):disabled { background: var(--bimb-ui-gray-50); cursor: not-allowed; }
.bimb-ui-field [aria-invalid="true"] { border-color: #9b2929; }
.bimb-ui-field small { font: 400 12px/1.4 var(--bimb-ui-font-body); color: var(--bimb-ui-muted); }
.bimb-ui-field .bimb-ui-error { color: #9b2929; }
.bimb-ui-choice { display: flex; align-items: center; gap: 12px; cursor: pointer; font: 400 13px/1.75 var(--bimb-ui-font-body); }
.bimb-ui-choice input { width: 18px; height: 18px; accent-color: var(--bimb-ui-ink); flex: 0 0 auto; }
.bimb-ui-segments { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 20px; }
.bimb-ui-segments > label { padding: 15px 16px; border: 1px solid var(--bimb-ui-gray-200); border-radius: var(--bimb-ui-radius-s); background: white; transition: border-color .3s, background .3s; }
.bimb-ui-segments > label:hover { background: var(--bimb-ui-gray-50); }
.bimb-ui-segments > label:has(input:checked) { border-color: var(--bimb-ui-ink); background: var(--bimb-ui-blue-mist); }

/* Source cart quantity: native input remains the value owner. */
.bimb-ui-quantity { display: inline-flex; align-items: center; border: 1px solid var(--bimb-ui-gray-200); border-radius: 8px; overflow: hidden; background: white; }
.bimb-ui-quantity button { display: grid; place-items: center; width: 34px; height: 34px; padding: 0; border: 0; border-radius: 0; background: white; color: var(--bimb-ui-ink); font: 400 18px/1 var(--bimb-ui-font-body); cursor: pointer; transition: background .25s; }
.bimb-ui-quantity button:hover { background: var(--bimb-ui-gray-100); }
.bimb-ui-quantity input { appearance: textfield; width: 42px; height: 34px; padding: 0; border: 0; border-inline: 1px solid var(--bimb-ui-gray-200); border-radius: 0; text-align: center; font: 400 14px/1 var(--bimb-ui-font-body); color: var(--bimb-ui-ink); }
.bimb-ui-quantity input::-webkit-inner-spin-button { appearance: none; }
.bimb-ui-quantity :is(input, button):focus-visible { outline: 2px solid var(--bimb-ui-ink); outline-offset: -3px; }

.bimb-ui-summary { background: var(--bimb-ui-blue-mist); border: 1px solid var(--bimb-ui-gray-200); border-radius: var(--bimb-ui-radius-l); padding: clamp(22px,2.6vw,32px); }
.bimb-ui-summary-row { display: flex; justify-content: space-between; gap: 14px; padding: 9px 0; font: 400 14px/1.75 var(--bimb-ui-font-body); }
.bimb-ui-summary-total { margin-top: 12px; padding-top: 18px; border-top: 1px solid var(--bimb-ui-gray-200); }
.bimb-ui-summary-total strong { font: 600 clamp(26px,3vw,34px)/1 var(--bimb-ui-font-heading); }

/* Pagination has no standalone source specimen: uses its 42px icon-button family. */
.bimb-ui-pagination { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.bimb-ui-pagination a { display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid var(--bimb-ui-gray-200); border-radius: 8px; color: var(--bimb-ui-ink); text-decoration: none; font: 400 13px/1 var(--bimb-ui-font-body); transition: background .3s, color .3s; }
.bimb-ui-pagination a:hover { background: var(--bimb-ui-gray-100); }
.bimb-ui-pagination a[aria-current="page"] { background: var(--bimb-ui-ink); color: white; border-color: var(--bimb-ui-ink); }
.bimb-ui-pagination a:focus-visible { outline: 2px solid var(--bimb-ui-ink); outline-offset: 3px; }
.bimb-ui-pagination .bimb-ui-previous { transform: rotate(180deg); }
.bimb-ui-notice { padding: 16px 20px; border: 1px solid var(--bimb-ui-gray-200); border-radius: 6px; background: var(--bimb-ui-gray-50); font: 400 13px/1.75 var(--bimb-ui-font-body); }
.bimb-ui-notice--error { border-color: #9b2929; color: #9b2929; }

@media (max-width: 760px) {
	.bimb-ui-field :is(input:not([type="checkbox"], [type="radio"]), select, textarea) { font-size: 16px; }
}
@media (max-width: 480px) {
	.bimb-ui-segments { grid-template-columns: 1fr; }
}

/* Loading/added ::after stays owned by WooCommerce; no decorative sheen on these buttons. */
:is(.bimb-ui-button, body :is(.woocommerce, .bimb-ui-woocommerce, .bap-native) :is(a, button, input).button:is(.button, .alt):is(.button, .disabled)).loading { opacity: .65; cursor: wait; }
.bimb-ui-icon-button:is(:disabled, [disabled], [aria-disabled="true"]) { opacity: .5; cursor: not-allowed; pointer-events: none; }
