		/* Molot — display font for headlines */
		@font-face {
			font-family: 'Molot';
			src: url('../fonts/Molot.woff2') format('woff2'),
			     url('../fonts/Molot.woff') format('woff'),
			     url('../fonts/Molot.otf') format('opentype');
			font-weight: normal;
			font-style: normal;
			font-display: swap;
		}

		/* shadcn/ui — semantic tokens. Light mode is the default for the shop pages.
		   The dark navbar/footer/sections opt-in via the `.tb-dark` class.       */
		:root {
			--background: 0 0% 100%;
			--foreground: 240 10% 4%;
			--card: 0 0% 100%;
			--card-foreground: 240 10% 4%;
			--muted: 240 5% 96%;
			--muted-foreground: 240 4% 46%;
			--border: 240 6% 90%;
			--input: 0 0% 100%;
			--ring: 0 67% 47%;
			/* Tetra Bikes brand */
			--brand-red: 357 71% 47%;       /* #CC2229 */
			--brand-red-soft: 0 100% 65%;
			--brand-red-dark: 354 80% 39%;
			--brand-red-fg: 0 0% 100%;
			--brand-black: 0 0% 4%;
		}

		.tb-dark {
			--background: 0 0% 4%;
			--foreground: 0 0% 98%;
			--card: 240 6% 7%;
			--card-foreground: 0 0% 98%;
			--muted: 240 4% 16%;
			--muted-foreground: 240 5% 65%;
			--border: 240 4% 18%;
			--input: 240 6% 10%;
			/* Explicit color so descendants `color: inherit` resolves to white-ish
			   instead of cascading up to body's light-mode foreground.            */
			color: hsl(var(--foreground));
		}

		/* Reset agresivo del body para matar la franja vacía debajo del footer.
		   - `body` siempre margin/padding 0 (Underscores no lo limpia).
		   - `html` sin !important: WP necesita poder setear `margin-top: 32px` cuando
		     la admin bar está visible (usuario logueado).
		   - Los hijos directos del body (header/main/footer/dialogs/scripts) no deben
		     tener margin exterior; los matamos por las dudas. */
		html { margin: 0; padding: 0; }
		body { margin: 0 !important; padding: 0 !important; }
		body > * { margin-top: 0 !important; margin-bottom: 0 !important; }
		body > footer { margin: 0 !important; }

		body {
			background: hsl(var(--background));
			color: hsl(var(--foreground));
			font-family: 'Barlow', system-ui, sans-serif;
			-webkit-font-smoothing: antialiased;
		}

		/* style.css (underscores) pone `p { margin-bottom: 1.5em }`, que se cuela en
		   toda la UI hecha con Tailwind y deja espacios raros. Reseteamos el margen
		   de los <p> y se lo devolvemos SOLO al contenido real (blog, páginas, legal,
		   descripción de producto). `body p` gana especificidad sin depender del orden. */
		body p { margin: 0; }
		body .entry-content p,
		body .prose p { margin-bottom: 1em; }
		/* Igual con las listas: underscores pone `ul,ol { margin:0 0 1.5em 3em }`
		   y `ul { list-style: disc }`, que dañan las listas de UI. Reset + se
		   restaura bullets/sangría solo en el contenido real. */
		body ul, body ol { margin: 0; padding: 0; list-style: none; }
		body .entry-content ul, body .prose ul { list-style: disc; margin: 0 0 1em 1.5em; padding: 0; }
		body .entry-content ol, body .prose ol { list-style: decimal; margin: 0 0 1em 1.5em; padding: 0; }
		body .entry-content li, body .prose li { margin-bottom: 0.25em; }
		/* Y el resto de elementos con márgenes de base de underscores (dl/dd de la
		   ficha técnica, figure, blockquote) que se cuelan en la UI. */
		body dl, body dd, body dt, body figure, body blockquote { margin: 0; }
		body .entry-content dd, body .prose dd { margin: 0 0 1em 1.5em; }
		body .entry-content blockquote, body .prose blockquote { margin: 0 0 1em; }

		/* Previene scroll horizontal en todas las páginas del shop (WC puede romperlo).
		   Usamos overflow-x: clip (no "hidden") porque "hidden" en html/body crea un
		   contenedor de scroll que ROMPE position: sticky del header. "clip" recorta
		   igual el desborde horizontal pero no rompe el sticky. */
		html, body {
			overflow-x: clip !important;
			max-width: 100% !important;
		}
		/* WooCommerce inyecta algunos wrappers sin max-width — los contenemos.
		   clip (no hidden) para no romper el sticky del header cuando estas
		   clases caen en el <body> (woocommerce / woocommerce-page). */
		.woocommerce, .woocommerce-page, .woocommerce-checkout,
		.woocommerce-cart, .wc-block-components-main {
			max-width: 100% !important;
			overflow-x: clip !important;
		}
		/* Select2 (country/state dropdowns) usa inline-block y se expande — corregir */
		.select2-container {
			display: block !important;
			width: 100% !important;
			max-width: 100% !important;
			box-sizing: border-box !important;
		}
		.select2-container .select2-selection--single {
			width: 100% !important;
			box-sizing: border-box !important;
		}
		.select2-container .select2-selection__rendered {
			white-space: normal !important;
			overflow: hidden !important;
			text-overflow: ellipsis !important;
		}

		.font-display { font-family: 'Molot', 'Anton', 'Bowlby One', sans-serif; letter-spacing: 0.02em; }

		/* Underscores style.css overrides — kill default anchor colors in all states */
		body a,
		body a:link,
		body a:visited,
		body a:hover,
		body a:active,
		body a:focus { color: inherit; }
		body main a,
		body header a,
		body footer a,
		body aside a { text-decoration: none; }
		/* The header CTA + WhatsApp float reset their own color via .tb-cta-link */

		/* Underscores resets all <button>/<input type=submit> to a gray bg with border.
		   We use Tailwind utility classes for buttons, so reset to inherit/transparent
		   and let Tailwind classes own the look.                                       */
		body header button, body footer button, body main button, body aside button,
		body header input[type="submit"], body footer input[type="submit"], body main input[type="submit"], body aside input[type="submit"],
		body header input[type="button"], body footer input[type="button"], body main input[type="button"], body aside input[type="button"] {
			background: transparent;
			border: 0;
			padding: 0;
			color: inherit;
			line-height: inherit;
			font: inherit;
			letter-spacing: inherit;
			text-transform: inherit;
			cursor: pointer;
			box-shadow: none;
		}
		body header button:hover, body footer button:hover, body main button:hover, body aside button:hover {
			background: transparent;
			border: 0;
			color: inherit;
		}

		/* shadcn-style Input/Select baseline.
		   Uses `background-color` (not the `background` shorthand) so selects can
		   add their own chevron via background-image without it being wiped.    */
		input.tb-input,
		select.tb-input,
		textarea.tb-input {
			display: flex !important;
			height: 2.75rem !important;
			width: 100% !important;
			border-radius: 0.5rem !important;
			border: 1px solid hsl(var(--border)) !important;
			background-color: hsl(var(--input)) !important;
			padding-top: 0 !important;
			padding-bottom: 0 !important;
			padding-left: 0.875rem;
			padding-right: 0.875rem;
			font-size: 0.875rem !important;
			line-height: 1.25rem !important;
			color: hsl(var(--foreground)) !important;
			-webkit-text-fill-color: hsl(var(--foreground)) !important;
		}
		/* Inputs con ícono dentro: el `padding: 0 ...` base del .tb-input
		   piso al `pl-*` de Tailwind. Restauramos manualmente esos paddings
		   donde Tailwind los declaró, para que el ícono no se superponga al placeholder. */
		input.tb-input.pl-8,  textarea.tb-input.pl-8,  select.tb-input.pl-8  { padding-left: 2rem    !important; }
		input.tb-input.pl-10, textarea.tb-input.pl-10, select.tb-input.pl-10 { padding-left: 2.5rem  !important; }
		input.tb-input.pl-12, textarea.tb-input.pl-12, select.tb-input.pl-12 { padding-left: 3rem    !important; }
		input.tb-input.pr-8,  textarea.tb-input.pr-8,  select.tb-input.pr-8  { padding-right: 2rem   !important; }
		input.tb-input.pr-10, textarea.tb-input.pr-10, select.tb-input.pr-10 { padding-right: 2.5rem !important; }
		input.tb-input.pr-12, textarea.tb-input.pr-12, select.tb-input.pr-12 { padding-right: 3rem   !important; }
		input.tb-input::placeholder,
		textarea.tb-input::placeholder {
			color: hsl(var(--muted-foreground)) !important;
			-webkit-text-fill-color: hsl(var(--muted-foreground)) !important;
			opacity: 1;
		}
		input.tb-input:focus,
		select.tb-input:focus,
		textarea.tb-input:focus {
			outline: none !important;
			/* Focus en color foreground (negro en light shop, blanco en zonas tb-dark) */
			box-shadow: 0 0 0 2px hsl(var(--foreground)) !important;
			border-color: hsl(var(--foreground)) !important;
		}
		select.tb-input {
			appearance: none !important;
			-webkit-appearance: none !important;
			background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>") !important;
			background-repeat: no-repeat !important;
			background-position: right 0.875rem center !important;
			padding-right: 2.5rem !important;
		}

		/* Force the payment radio in step 4 to stay visible — WooCommerce's
		   default CSS hides `.input-radio` with `display:none`. We use the
		   browser-default radio styling (accent-brand-red) for the dot. */
		.tbs-step4-payment-inner input[type="radio"].input-radio {
			display: inline-block !important;
			opacity: 1 !important;
			visibility: visible !important;
		}

		/* Shipping (step 3) + Payment (step 4) cards — shared shadcn-style
		   radio + description layout. The cards live inside different
		   wrappers, so we target both with the same `.tbs-pay-card` BEM
		   structure to keep them visually identical. */
		.tbs-step3-shipping-inner .tbs-pay-card,
		.tbs-step4-payment-inner .tbs-pay-card {
			list-style: none !important;
			margin: 0 !important;
			padding: 0 !important;
		}
		/* Separación entre cards: el `margin:0 !important` de arriba pisaba el
		   space-y-2 del <ul>, por eso salían pegadas. Lo reponemos aquí. */
		.tbs-step3-shipping-inner .tbs-pay-card + .tbs-pay-card,
		.tbs-step4-payment-inner .tbs-pay-card + .tbs-pay-card {
			margin-top: 0.5rem !important;
		}
		.tbs-step3-shipping-inner .tbs-pay-card,
		.tbs-step4-payment-inner .tbs-pay-card {
			border-radius: 0.5rem !important;
			border: 1.5px solid hsl(var(--border)) !important;
			background: hsl(var(--card)) !important;
			overflow: hidden !important;
			transition: border-color 0.15s ease, background-color 0.15s ease;
		}
		.tbs-step3-shipping-inner .tbs-pay-card:hover,
		.tbs-step4-payment-inner .tbs-pay-card:hover {
			border-color: hsl(var(--foreground) / 0.4) !important;
		}
		.tbs-step3-shipping-inner .tbs-pay-card--chosen,
		.tbs-step4-payment-inner .tbs-pay-card--chosen {
			border-color: hsl(var(--foreground)) !important;
			background: hsl(var(--muted)) !important;
		}
		.tbs-step3-shipping-inner .tbs-pay-card__label,
		.tbs-step4-payment-inner .tbs-pay-card__label {
			display: flex !important;
			align-items: center !important;
			gap: 0.75rem !important;
			padding: 0.875rem 1rem !important;
			width: 100% !important;
			box-sizing: border-box !important;
			cursor: pointer !important;
			margin: 0 !important;
		}
		.tbs-step3-shipping-inner .tbs-pay-card__radio,
		.tbs-step4-payment-inner .tbs-pay-card__radio {
			width: 1rem !important;
			height: 1rem !important;
			flex-shrink: 0 !important;
			margin: 0 !important;
		}
		.tbs-step3-shipping-inner .tbs-pay-card__title,
		.tbs-step4-payment-inner .tbs-pay-card__title {
			font-size: 0.875rem !important;
			font-weight: 700 !important;
			line-height: 1.25 !important;
			letter-spacing: 0 !important;
			text-transform: none !important;
			color: hsl(var(--foreground)) !important;
		}
		/* The description sits flush against the title with no extra gap; its
		   left edge matches the title text (radio width 1rem + gap 0.75rem +
		   label padding-left 1rem = 2.75rem from the card border). */
		.tbs-step3-shipping-inner .tbs-pay-card__box,
		.tbs-step4-payment-inner .tbs-pay-card__box {
			padding: 0 1rem 0.75rem 2.75rem !important;
			margin: -0.5rem 0 0 0 !important;
			background: transparent !important;
			border: 0 !important;
			border-radius: 0 !important;
			font-size: 0.75rem !important;
			color: hsl(var(--muted-foreground)) !important;
		}
		.tbs-step3-shipping-inner .tbs-pay-card__box p,
		.tbs-step3-shipping-inner .tbs-pay-card__box *,
		.tbs-step4-payment-inner .tbs-pay-card__box p,
		.tbs-step4-payment-inner .tbs-pay-card__box * {
			margin: 0 !important;
			padding: 0 !important;
			background: transparent !important;
			color: inherit !important;
			font-size: inherit !important;
		}

		/* Primary CTA — keep white text in all states (anchors AND buttons) */
		.tb-cta-link,
		.tb-cta-link:link,
		.tb-cta-link:visited,
		.tb-cta-link:hover,
		.tb-cta-link:active,
		.tb-cta-link:focus {
			color: hsl(var(--brand-red-fg)) !important;
			text-decoration: none !important;
		}

		/* Primary RED button — forces background regardless of underscores reset */
		.tb-btn-primary,
		button.tb-btn-primary,
		a.tb-btn-primary,
		input[type="submit"].tb-btn-primary {
			background-color: hsl(var(--brand-red)) !important;
			color: hsl(var(--brand-red-fg)) !important;
			border: 0 !important;
		}
		.tb-btn-primary:hover,
		button.tb-btn-primary:hover,
		a.tb-btn-primary:hover,
		input[type="submit"].tb-btn-primary:hover {
			background-color: hsl(var(--brand-red-dark)) !important;
		}

		/* Place-order button — WC AJAX update_order_review replaces our nicely
		   styled `tb-btn-primary` button with the default `.button.alt`, which
		   inherits Twenty-* purple. We pin the styling by ID so even after WC
		   re-renders the right column the button stays on brand. */
		#place_order,
		button#place_order,
		input#place_order,
		.woocommerce-checkout #place_order {
			background-color: hsl(var(--brand-red)) !important;
			color: hsl(var(--brand-red-fg)) !important;
			border: 0 !important;
			border-radius: 0.5rem !important;
			height: 3rem !important;
			padding: 0 1.25rem !important;
			font-size: 0.875rem !important;
			font-weight: 700 !important;
			letter-spacing: 0.1em !important;
			text-transform: uppercase !important;
			width: 100% !important;
			cursor: pointer !important;
		}
		#place_order:hover,
		button#place_order:hover,
		input#place_order:hover {
			background-color: hsl(var(--brand-red-dark)) !important;
		}

		/* ── Botones negros con borde rojo animado ──────────────────────────
		   Solo en ficha de producto, carrito y checkout: el primario rojo se
		   vuelve negro con un destello rojo que recorre el borde suavemente.
		   La animación usa @property para interpolar el ángulo del gradiente
		   cónico; navegadores sin soporte muestran el borde rojo fijo.        */
		@property --tb-border-angle {
			syntax: "<angle>";
			initial-value: 0deg;
			inherits: false;
		}
		@keyframes tb-border-travel {
			to { --tb-border-angle: 360deg; }
		}
		@keyframes tb-glow-breathe {
			0%, 100% { box-shadow: 0 0 10px -5px hsl(var(--brand-red) / 0.18); }
			50%      { box-shadow: 0 0 18px -4px hsl(var(--brand-red) / 0.38); }
		}
		body.single-product .single_add_to_cart_button,
		body.woocommerce-cart .tb-btn-primary,
		body.woocommerce-checkout .tb-btn-primary,
		#place_order,
		button#place_order,
		input#place_order,
		.woocommerce-checkout #place_order {
			--tb-border-angle: 0deg;
			position: relative !important;
			background-color: #0a0a0a !important;
			color: #ffffff !important;
			border: 0 !important;
			animation: tb-glow-breathe 6s ease-in-out infinite;
		}
		body.single-product .single_add_to_cart_button::before,
		body.woocommerce-cart .tb-btn-primary::before,
		body.woocommerce-checkout .tb-btn-primary::before,
		#place_order::before {
			content: "";
			position: absolute;
			inset: 0;
			border-radius: inherit;
			padding: 2px;                 /* grosor del borde */
			background: conic-gradient(from var(--tb-border-angle),
				hsl(var(--brand-red) / 0.5) 0deg,
				hsl(var(--brand-red) / 0.5) 230deg,
				hsl(var(--brand-red)) 290deg,
				#ff6b6b 322deg,
				#ff9d9d 332deg,
				#ff6b6b 342deg,
				hsl(var(--brand-red)) 355deg,
				hsl(var(--brand-red) / 0.5) 360deg);
			/* deja visible solo el anillo de 2px (recorta el centro) */
			-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
			-webkit-mask-composite: xor;
			        mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
			        mask-composite: exclude;
			animation: tb-border-travel 6s linear infinite;
			pointer-events: none;
		}
		/* hover: el destello acelera y el fondo se oscurece del todo */
		body.single-product .single_add_to_cart_button:hover,
		body.woocommerce-cart .tb-btn-primary:hover,
		body.woocommerce-checkout .tb-btn-primary:hover,
		#place_order:hover,
		button#place_order:hover,
		input#place_order:hover {
			background-color: #000000 !important;
		}
		body.single-product .single_add_to_cart_button:hover::before,
		body.woocommerce-cart .tb-btn-primary:hover::before,
		body.woocommerce-checkout .tb-btn-primary:hover::before,
		#place_order:hover::before {
			animation-duration: 3s;
		}
		/* accesibilidad: sin movimiento si el sistema lo pide */
		@media (prefers-reduced-motion: reduce) {
			body.single-product .single_add_to_cart_button,
			body.woocommerce-cart .tb-btn-primary,
			body.woocommerce-checkout .tb-btn-primary,
			#place_order {
				animation: none !important;
				box-shadow: 0 0 14px -4px hsl(var(--brand-red) / 0.5) !important;
			}
			body.single-product .single_add_to_cart_button::before,
			body.woocommerce-cart .tb-btn-primary::before,
			body.woocommerce-checkout .tb-btn-primary::before,
			#place_order::before {
				animation: none;
				background: hsl(var(--brand-red));
			}
		}

		/* ── Botón "Cotizar" de las motos: mismo borde rojo animado + glow ──
		   (catálogo de motos no usa add-to-cart, su CTA es [data-tb-cotizar-open]) */
		body.single-product [data-tb-cotizar-open],
		body.single-product #tb-acc-sticky-btn {
			--tb-border-angle: 0deg;
			position: relative !important;
			background-color: #0a0a0a !important;
			color: #ffffff !important;
			border: 0 !important;
			animation: tb-glow-breathe 6s ease-in-out infinite;
		}
		body.single-product [data-tb-cotizar-open]::before,
		body.single-product #tb-acc-sticky-btn::before {
			content: "";
			position: absolute;
			inset: 0;
			border-radius: inherit;
			padding: 2px;
			background: conic-gradient(from var(--tb-border-angle),
				hsl(var(--brand-red) / 0.5) 0deg,
				hsl(var(--brand-red) / 0.5) 230deg,
				hsl(var(--brand-red)) 290deg,
				#ff6b6b 322deg,
				#ff9d9d 332deg,
				#ff6b6b 342deg,
				hsl(var(--brand-red)) 355deg,
				hsl(var(--brand-red) / 0.5) 360deg);
			-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
			-webkit-mask-composite: xor;
			        mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
			        mask-composite: exclude;
			animation: tb-border-travel 6s linear infinite;
			pointer-events: none;
		}
		body.single-product [data-tb-cotizar-open]:hover,
		body.single-product #tb-acc-sticky-btn:hover {
			background-color: #000000 !important;
		}
		body.single-product [data-tb-cotizar-open]:hover::before,
		body.single-product #tb-acc-sticky-btn:hover::before {
			animation-duration: 3s;
		}
		@media (prefers-reduced-motion: reduce) {
			body.single-product [data-tb-cotizar-open],
			body.single-product #tb-acc-sticky-btn {
				animation: none !important;
				box-shadow: 0 0 14px -4px hsl(var(--brand-red) / 0.5) !important;
			}
			body.single-product [data-tb-cotizar-open]::before,
			body.single-product #tb-acc-sticky-btn::before {
				animation: none;
				background: hsl(var(--brand-red));
			}
		}

		/* Outline button — transparent bg with foreground text/border */
		.tb-btn-outline {
			background-color: transparent !important;
			color: hsl(var(--foreground)) !important;
			border: 2px solid hsl(var(--foreground)) !important;
		}
		.tb-btn-outline:hover {
			background-color: hsl(var(--foreground)) !important;
			color: hsl(var(--background)) !important;
		}

		/* Secondary dark button (e.g. AGREGAR on accessories) */
		.tb-btn-dark {
			background-color: hsl(var(--foreground)) !important;
			color: hsl(var(--background)) !important;
			border: 0 !important;
		}
		.tb-btn-dark:hover {
			background-color: hsl(var(--foreground) / 0.85) !important;
		}

		/* Ítem activo del menú principal (página actual) */
		.tbs-nav-active {
			color: hsl(var(--foreground));
			font-weight: 600;
			text-decoration: underline;
			text-decoration-color: hsl(var(--brand-red));
			text-decoration-thickness: 2px;
			text-underline-offset: 6px;
		}
		/* Ítem activo en el menú móvil (drawer) */
		.tbs-nav-active-m {
			background-color: hsl(var(--muted));
			color: hsl(var(--brand-red));
			font-weight: 600;
		}

		/* A11y: contraste mínimo AA (WCAG 4.5:1) */
		.tb-dark .text-brand-red { color: #ee4d54; }            /* rojo de marca legible sobre fondos oscuros */
		[data-tb-bike-filter].text-muted-fg { color: #52525b; } /* filtros inactivos sobre gris claro */

		/* Hero principal: imagen como <img> (LCP) + este degradado encima */
		.shop-hero-overlay {
			background-image: linear-gradient(to right, hsla(0,0%,0%,0.88) 0%, hsla(0,0%,0%,0.55) 55%, hsla(0,0%,0%,0.30) 100%);
			pointer-events: none;
		}
		@media (max-width: 768px) {
			.shop-hero-overlay {
				background-image: linear-gradient(to bottom, hsla(0,0%,0%,0.85) 0%, hsla(0,0%,0%,0.65) 100%);
			}
		}

		/* Hero image overlay (Home) */
		.shop-hero-bg {
			background-image:
				linear-gradient(to right, hsla(0,0%,0%,0.88) 0%, hsla(0,0%,0%,0.55) 55%, hsla(0,0%,0%,0.30) 100%),
				url('../img/hero-r6.jpg');
			background-image:
				linear-gradient(to right, hsla(0,0%,0%,0.88) 0%, hsla(0,0%,0%,0.55) 55%, hsla(0,0%,0%,0.30) 100%),
				image-set(url('../img/hero-r6.webp') type('image/webp'), url('../img/hero-r6.jpg') type('image/jpeg'));
			background-size: cover;
			background-position: center;
		}
		/* Prevent horizontal scroll on all pages */
		html { overflow-x: hidden; }

		@media (max-width: 768px) {
			.shop-hero-bg {
				background-image:
					linear-gradient(to bottom, hsla(0,0%,0%,0.85) 0%, hsla(0,0%,0%,0.65) 100%),
					url('../img/hero-r6-mobile.jpg');
				background-image:
					linear-gradient(to bottom, hsla(0,0%,0%,0.85) 0%, hsla(0,0%,0%,0.65) 100%),
					image-set(url('../img/hero-r6-mobile.webp') type('image/webp'), url('../img/hero-r6-mobile.jpg') type('image/jpeg'));
			}
			/* Campos first/last al 100% en mobile */
			.woocommerce-checkout .form-row-first,
			.woocommerce-checkout .form-row-last,
			.tbs-billing-fields .form-row-first,
			.tbs-billing-fields .form-row-last,
			.checkout_coupon .form-row-first,
			.checkout_coupon .form-row-last {
				width: 100% !important;
				display: flex !important;
				flex-direction: column !important;
				margin-right: 0 !important;
			}
			/* Contener todo lo que WC inyecta antes/después del form */
			.woocommerce-form-coupon-toggle,
			.woocommerce-form-login-toggle,
			.woocommerce-info,
			.woocommerce-message,
			.woocommerce-error,
			.checkout_coupon,
			.woocommerce-form-login {
				max-width: 100% !important;
				box-sizing: border-box !important;
				overflow: hidden !important;
			}
		}

		/* Marquee for brand logos */
		@keyframes scroll-x {
			from { transform: translateX(0); }
			to   { transform: translateX(-50%); }
		}
		.marquee { animation: scroll-x 28s linear infinite; will-change: transform; }
		.marquee:hover { animation-play-state: paused; }

		/* Hide scrollbar on horizontal carousels (mobile testimonios, etc.) */
		.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
		.no-scrollbar::-webkit-scrollbar { display: none; }

		/* Line clamp (Tailwind core class works most of the time but adding fallback) */
		.line-clamp-2 {
			display: -webkit-box;
			-webkit-line-clamp: 2;
			-webkit-box-orient: vertical;
			overflow: hidden;
		}

		/* WP native pagination (the_posts_pagination) → shadcn */
		.pagination, .nav-links, .posts-navigation {
			display: inline-flex; align-items: center; gap: 0.5rem;
		}
		.pagination .page-numbers, .nav-links .page-numbers, .pagination a {
			display: inline-flex; align-items: center; justify-content: center;
			min-width: 2.5rem; height: 2.5rem; padding: 0 0.75rem;
			border-radius: 0.5rem; border: 1px solid hsl(var(--border));
			background: hsl(var(--card)); color: hsl(var(--foreground)) !important;
			font-size: 0.875rem; font-weight: 600;
			text-decoration: none !important;
			transition: all 150ms ease;
		}
		.pagination .page-numbers:hover, .nav-links .page-numbers:hover {
			border-color: hsl(var(--brand-red));
			color: hsl(var(--brand-red)) !important;
		}
		.pagination .page-numbers.current, .nav-links .page-numbers.current {
			background: hsl(var(--brand-red));
			color: hsl(var(--brand-red-fg)) !important;
			border-color: hsl(var(--brand-red));
		}
		.pagination .page-numbers.dots, .nav-links .page-numbers.dots {
			background: transparent; border: 0;
			color: hsl(var(--muted-foreground)) !important;
		}

		/* Inline search overlay (navbar trigger) */
		#tbs-search-overlay { transition: opacity 200ms ease, transform 200ms ease; }
		#tbs-search-overlay.tb-closed { opacity: 0; pointer-events: none; transform: translateY(-8px); }

		/* Product image placeholder — subtle gradient instead of flat gray.
		   Defensive containment: overflow-hidden y constraint del <img> hijo para
		   que imágenes muy altas (ej. fotos de modelo con producto vertical) no
		   se desborden del área asignada y tapen el título debajo. */
		.tb-img-placeholder {
			background:
				radial-gradient(circle at 30% 20%, hsl(var(--background)) 0%, transparent 50%),
				linear-gradient(135deg, hsl(var(--muted)) 0%, hsl(var(--background)) 100%);
			overflow: hidden;
			position: relative;
		}
		.tb-img-placeholder > img,
		.tb-img-placeholder > a > img,
		.tb-img-placeholder .wp-post-image {
			position: absolute !important;
			inset: 0 !important;
			width: 100% !important;
			height: 100% !important;
			object-fit: cover !important;
			max-width: none !important;
			max-height: none !important;
		}

		/* Card hover lift */
		.tb-card-hover { transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease; }
		.tb-card-hover:hover { transform: translateY(-4px); box-shadow: 0 10px 30px -10px rgba(0,0,0,0.15); }

		/* ─── WooCommerce form fields → shadcn styling ─── */
		.woocommerce-checkout .form-row,
		.woocommerce-cart .form-row,
		.tbs-billing-fields .form-row {
			display: flex; flex-direction: column;
			margin: 0 0 0.875rem;
		}
		.woocommerce-checkout .form-row-first, .woocommerce-checkout .form-row-last,
		.tbs-billing-fields .form-row-first, .tbs-billing-fields .form-row-last {
			width: calc(50% - 0.375rem);
			display: inline-flex;
			vertical-align: top;
		}
		.woocommerce-checkout .form-row-first, .tbs-billing-fields .form-row-first { margin-right: 0.75rem; }
		.woocommerce-checkout .form-row label,
		.woocommerce-checkout label,
		.tbs-billing-fields label {
			display: block;
			font-size: 11px;
			font-weight: 700;
			text-transform: uppercase;
			letter-spacing: 0.05em;
			color: hsl(var(--muted-foreground));
			margin-bottom: 0.375rem;
		}
		.woocommerce-checkout .form-row .input-text,
		.woocommerce-checkout .form-row select,
		.woocommerce-checkout .form-row textarea,
		.tbs-billing-fields .input-text,
		.tbs-billing-fields select {
			display: flex !important;
			width: 100% !important;
			height: 2.75rem !important;
			border-radius: 0.5rem !important;
			border: 1px solid hsl(var(--border)) !important;
			background-color: hsl(var(--input)) !important;
			padding: 0 0.875rem !important;
			font-size: 0.875rem !important;
			color: hsl(var(--foreground)) !important;
			-webkit-text-fill-color: hsl(var(--foreground)) !important;
		}
		.woocommerce-checkout .form-row textarea,
		.tbs-billing-fields textarea {
			height: auto !important;
			min-height: 5rem !important;
			padding: 0.75rem 0.875rem !important;
		}
		.woocommerce-checkout .form-row .input-text:focus,
		.woocommerce-checkout .form-row select:focus,
		.tbs-billing-fields .input-text:focus,
		.tbs-billing-fields select:focus {
			outline: none !important;
			box-shadow: 0 0 0 2px hsl(var(--foreground)) !important;
			border-color: hsl(var(--foreground)) !important;
		}
		.woocommerce-checkout .form-row .required { color: hsl(var(--brand-red)); }
		.woocommerce-checkout .form-row select,
		.tbs-billing-fields select {
			appearance: none;
			-webkit-appearance: none;
			background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>") !important;
			background-repeat: no-repeat !important;
			background-position: right 0.875rem center !important;
			padding-right: 2.5rem !important;
		}
		/* Fix scroll horizontal en checkout: los <select> heredaban display:flex,
		   lo que los hacía crecer al ancho de su opción más larga (países/regiones)
		   ignorando width:100%. Forzamos block + contención de ancho. */
		.woocommerce-checkout .form-row select,
		.woocommerce-cart .form-row select,
		.tbs-billing-fields select,
		.tbs-billing-fields .form-row select {
			display: block !important;
			width: 100% !important;
			max-width: 100% !important;
			min-width: 0 !important;
			box-sizing: border-box !important;
		}
		/* Las columnas 50/50 y las filas no deben poder exceder su contenedor */
		.woocommerce-checkout .form-row,
		.woocommerce-cart .form-row,
		.tbs-billing-fields .form-row {
			min-width: 0 !important;
			max-width: 100% !important;
			box-sizing: border-box !important;
		}
		/* CAUSA REAL del scroll horizontal: select2 oculta el <select> nativo
		   (country/state) con la clase .select2-hidden-accessible (1px, fuera de
		   pantalla), pero los estilos del theme lo estiraban a 100%/375px dentro
		   de un contenedor con padding y se desbordaba. Re-ocultamos ese select
		   con mayor especificidad para que select2 muestre solo su widget. */
		.woocommerce-checkout .form-row select.select2-hidden-accessible,
		.woocommerce-cart .form-row select.select2-hidden-accessible,
		.tbs-billing-fields select.select2-hidden-accessible,
		select.select2-hidden-accessible {
			position: absolute !important;
			width: 1px !important;
			height: 1px !important;
			min-width: 0 !important;
			max-width: 1px !important;
			padding: 0 !important;
			margin: -1px !important;
			border: 0 !important;
			overflow: hidden !important;
			clip: rect(0 0 0 0) !important;
			clip-path: inset(50%) !important;
			white-space: nowrap !important;
		}

		/* WC error/notice tone-matching */
		.woocommerce-error,
		.woocommerce-message,
		.woocommerce-info {
			background: hsl(var(--card)) !important;
			border: 1px solid hsl(var(--border)) !important;
			border-left-width: 3px !important;
			border-left-color: hsl(var(--brand-red)) !important;
			border-radius: 0.5rem !important;
			padding: 0.875rem 1rem !important;
			color: hsl(var(--foreground)) !important;
			margin-bottom: 1rem !important;
			list-style: none !important;
		}
		.woocommerce-message { border-left-color: #16a34a !important; }
		.woocommerce-message::before, .woocommerce-error::before, .woocommerce-info::before { display: none !important; }

		/* El checkout es un grid de 12 columnas y WooCommerce inyecta los avisos
		   (errores de validación, etc.) DENTRO del <form>, quedando en una sola
		   columna angosta → el texto se parte letra por letra. Los forzamos a
		   ocupar toda la fila. */
		form.checkout > .woocommerce-NoticeGroup,
		form.checkout > .woocommerce-error,
		form.checkout > .woocommerce-message,
		form.checkout > .woocommerce-info,
		form.woocommerce-cart-form > .woocommerce-NoticeGroup,
		form.woocommerce-cart-form > .woocommerce-error,
		form.woocommerce-cart-form > .woocommerce-message,
		form.woocommerce-cart-form > .woocommerce-info {
			grid-column: 1 / -1 !important;
			width: 100% !important;
			box-sizing: border-box !important;
		}
		.woocommerce-checkout .woocommerce-error li,
		.woocommerce-checkout .woocommerce-message li,
		.woocommerce-checkout .woocommerce-info li {
			margin: 0.1rem 0 !important;
			padding: 0 !important;
		}

		/* WC payment methods radio list — only applies in legacy contexts
		   (e.g. order-pay page). Step 4 of the checkout uses `.tbs-pay-card`
		   instead, which has its own dedicated styling above. */
		.wc_payment_methods { padding: 0 !important; margin: 0 !important; }
		.wc_payment_methods .wc_payment_method:not(.tbs-pay-card),
		.wc_payment_methods li:not(.tbs-pay-card) {
			list-style: none !important;
			background: hsl(var(--background)) !important;
			border: 1px solid hsl(var(--border)) !important;
			border-radius: 0.75rem !important;
			padding: 0.875rem 1rem !important;
			margin-bottom: 0.5rem !important;
		}
		.wc_payment_methods label:not(.tbs-pay-card__label) { display: inline !important; font-weight: 600 !important; text-transform: none !important; letter-spacing: 0 !important; color: hsl(var(--foreground)) !important; }
		.wc_payment_methods input[type="radio"]:checked + label { color: hsl(var(--brand-red)) !important; }
		.wc_payment_methods .payment_box:not(.tbs-pay-card__box) {
			background: hsl(var(--muted)) !important;
			border-radius: 0.5rem !important;
			padding: 0.75rem !important;
			margin-top: 0.5rem !important;
			font-size: 0.8125rem !important;
			color: hsl(var(--muted-foreground)) !important;
		}

		/* Hide WC login/coupon notices we don't want on guest checkout */
		.woocommerce-form-login-toggle,
		.woocommerce-form-coupon-toggle { display: none !important; }

		/* Floating WhatsApp button — pulse animation */
		@keyframes pulse-ring {
			0%   { box-shadow: 0 0 0 0 hsla(143, 70%, 49%, 0.6); }
			70%  { box-shadow: 0 0 0 14px hsla(143, 70%, 49%, 0); }
			100% { box-shadow: 0 0 0 0 hsla(143, 70%, 49%, 0); }
		}
		.tb-wa-float { animation: pulse-ring 2.4s ease-in-out infinite; }

		/* Feedback de formularios: spinner del botón + entrada de la tarjeta */
		@keyframes tb-spin { to { transform: rotate(360deg); } }
		.tb-spinner {
			display: inline-block; width: 1rem; height: 1rem;
			border: 2px solid currentColor; border-top-color: transparent;
			border-radius: 9999px; animation: tb-spin .7s linear infinite;
			vertical-align: -2px;
		}
		@keyframes tb-feedback-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
		.tb-feedback-in { animation: tb-feedback-in .35s ease-out both; }
		@media (prefers-reduced-motion: reduce) {
			.tb-spinner, .tb-feedback-in { animation: none; }
		}

		/* Botón cerrar del drawer móvil — chip circular sobre fondo oscuro */
		.tbs-drawer-x {
			display: inline-flex; align-items: center; justify-content: center;
			flex: 0 0 auto; width: 44px; height: 44px;
			border: 0; border-radius: 9999px; cursor: pointer; padding: 0;
			background: hsl(0 0% 100% / 0.12);     /* chip translúcido, legible en dark */
			color: hsl(var(--foreground));          /* X blanca = contraste correcto */
			transition: background-color .15s ease, transform .1s ease;
		}
		.tbs-drawer-x:hover { background: hsl(0 0% 100% / 0.22); }
		.tbs-drawer-x:active { transform: scale(.94); }
		.tbs-drawer-x:focus-visible { outline: 2px solid hsl(var(--foreground)); outline-offset: 2px; }
		.tbs-drawer-x svg { width: 26px; height: 26px; display: block; stroke-width: 2.25; }

		/* Botón "Realizar pedido" replicado al pie del checkout: solo desktop.
		   En mobile basta el botón del resumen (aparece al final). */
		.tbs-order-bottom { display: none; }
		@media (min-width: 1024px) { .tbs-order-bottom { display: inline-flex; } }
		.tbs-order-bottom-note { display: none; }
		@media (min-width: 1024px) { .tbs-order-bottom-note { display: block; } }

		/* Mobile drawer off-canvas */
		#tbs-drawer { transition: transform 280ms ease; }
		#tbs-drawer.tb-closed { transform: translateX(-100%); }
		#tbs-drawer-overlay { transition: opacity 280ms ease; }
		#tbs-drawer-overlay.tb-closed { opacity: 0; pointer-events: none; }
		body.tb-drawer-open { overflow: hidden; }

		/* Logos de marcas (marquee del home) — el marquee es oscuro, así que
		   los SVG se fuerzan a blanco monocromo para que se vean parejos. */
		.tb-brand-logo { filter: brightness(0) invert(1); }

		/* Precios: el monto hereda el color del contenedor (neutro). Solo la
		   OFERTA se resalta — el precio rebajado (<ins>) va en rojo de marca y
		   el precio anterior (<del>) atenuado y tachado. */
		.woocommerce-Price-amount { color: inherit; }
		ins, ins .woocommerce-Price-amount {
			color: hsl(var(--brand-red)) !important;
			text-decoration: none;
			font-weight: 700;
		}
		del, del .woocommerce-Price-amount {
			color: hsl(var(--muted-foreground)) !important;
			font-weight: 400;
		}

		/* Nota "(incluye $X IVA)" del total: WooCommerce la mete dentro del span
		   del total (fuente display/mayúsculas), por eso salía gigante. La
		   bajamos a texto chico, normal y en gris, en su propia línea. */
		.includes_tax,
		small.includes_tax,
		.order-total .includes_tax,
		.woocommerce-Price-amount + .includes_tax {
			display: block !important;
			font-family: 'Barlow', system-ui, sans-serif !important;
			font-size: 0.72rem !important;
			font-weight: 400 !important;
			text-transform: none !important;
			letter-spacing: 0 !important;
			line-height: 1.3 !important;
			color: hsl(var(--muted-foreground)) !important;
			margin-top: 4px !important;
		}

		/* Sufijo "IVA incluido" (woocommerce_price_display_suffix): WC lo mete
		   dentro del precio como <small>, por eso heredaba la fuente display y
		   salía enorme. Lo bajamos a texto chico, normal y gris. En el PDP y en
		   el total queda en su propia línea; en las cards se mantiene compacto. */
		.woocommerce-price-suffix {
			font-family: 'Barlow', system-ui, sans-serif !important;
			font-size: 0.7rem !important;
			font-weight: 400 !important;
			text-transform: none !important;
			letter-spacing: 0 !important;
			line-height: 1.2 !important;
			color: hsl(var(--muted-foreground)) !important;
			white-space: nowrap;
		}
		/* En el PDP (precio gigante) lo mandamos a su propia línea para que no
		   compita con el monto. */
		.tbs-pdp-price .woocommerce-price-suffix {
			display: block !important;
			margin-top: 4px !important;
			font-size: 0.8rem !important;
		}

/* iOS Safari hace auto-zoom al enfocar un campo con font-size < 16px.
   En móvil forzamos 16px en los inputs para evitar ese zoom molesto
   (en desktop se mantiene el 0.875rem del diseño). */
@media (max-width: 767px) {
	input.tb-input,
	select.tb-input,
	textarea.tb-input,
	.woocommerce form .form-row input.input-text,
	.woocommerce form .form-row textarea,
	.woocommerce form .form-row select,
	input[type="text"],
	input[type="email"],
	input[type="tel"],
	input[type="number"],
	input[type="search"],
	input[type="password"],
	input[type="url"],
	textarea,
	select {
		font-size: 16px !important;
	}
}

/* ============================================================
   Shortcode [products] de WooCommerce (p. ej. dentro del blog)
   El loop usa woocommerce/content-product.php (tarjetas del tema).
   Aquí convertimos el <ul.products> por defecto en una grilla y
   anulamos el float/ancho del <li.product> de WooCommerce core.
   ============================================================ */
.woocommerce ul.products,
ul.products {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
	margin: 0 0 1.5rem;
	padding: 0;
	list-style: none;
}
@media (min-width: 1024px) {
	.woocommerce ul.products,
	ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
	.woocommerce ul.products.columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.woocommerce ul.products.columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.woocommerce ul.products.columns-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
	.woocommerce ul.products.columns-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
.woocommerce ul.products li.product,
ul.products li.product {
	width: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	float: none !important;
	clear: none !important;
	display: flex;
}
.woocommerce ul.products li.product::before,
ul.products li.product::before {
	content: none !important;
}
/* La tarjeta interna (moto = <a>, accesorio = <div>) ocupa toda la celda */
.woocommerce ul.products li.product > a,
.woocommerce ul.products li.product > div,
ul.products li.product > a,
ul.products li.product > div {
	width: 100%;
}

/* ============================================================
   Favoritos (corazón sobre las tarjetas) — inc/wishlist.php + wishlist.js
   ============================================================ */
.tb-fav {
	position: absolute;
	top: 0.625rem;
	right: 0.625rem;
	z-index: 10;
	display: grid;
	place-items: center;
	width: 2rem;
	height: 2rem;
	padding: 0;
	border: 0;
	border-radius: 9999px;
	cursor: pointer;
	color: hsl(var(--muted-foreground));
	background: hsl(var(--background) / 0.85);
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
	transition: color .15s ease, transform .15s ease, background .15s ease;
}
.tb-fav svg { width: 1.05rem; height: 1.05rem; }
.tb-fav:hover { color: hsl(var(--brand-red)); transform: scale(1.08); }
.tb-fav-on { color: hsl(var(--brand-red)); }
.tb-fav-on svg { fill: currentColor; }

/* Contador de favoritos en el header */
.tb-fav-count {
	display: inline-grid;
	place-items: center;
	min-width: 1.1rem;
	height: 1.1rem;
	padding: 0 0.3rem;
	border-radius: 9999px;
	background: hsl(var(--brand-red));
	color: hsl(var(--brand-red-fg));
	font-size: 0.65rem;
	font-weight: 700;
	line-height: 1;
}

/* Variante del corazón para la ficha (estático, con borde) */
.tb-fav-static {
	position: static;
	width: 2.75rem;
	height: 2.75rem;
	background: transparent;
	border: 1px solid hsl(var(--border));
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
	flex-shrink: 0;
}
.tb-fav-static:hover { background: hsl(var(--brand-red) / 0.08); }
.tb-fav-static svg { width: 1.25rem; height: 1.25rem; }

/* Botón claro (blanco + texto rojo de marca) para usar sobre fondos brand-red.
   Mismo patrón que .tb-btn-* para ganarle a `body a { color: inherit }`. */
.tb-btn-light,
button.tb-btn-light,
a.tb-btn-light {
	background-color: #fff !important;
	color: hsl(var(--brand-red)) !important;
	border: 0 !important;
}
.tb-btn-light:hover,
button.tb-btn-light:hover,
a.tb-btn-light:hover {
	background-color: rgba(255, 255, 255, 0.9) !important;
}

/* ============================================================
   Dropdowns custom del hero (Encuentra tu moto) — despliegan
   tarjetas-radio con el estilo del quiz. JS inline en el home.
   ============================================================ */
.tb-dd { position: relative; }
.tb-dd-trigger {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	width: 100%;
	height: 2.75rem;
	padding: 0 0.875rem;
	text-align: left;
	cursor: pointer;
	/* El trigger es un <button>, y .tb-input solo estiliza input/select/textarea,
	   así que le damos el mismo look aquí (theme-aware: oscuro en .tb-dark). */
	border: 1px solid hsl(var(--border));
	border-radius: 0.5rem;
	background-color: hsl(var(--input));
	color: hsl(var(--foreground));
	font-size: 0.875rem;
	line-height: 1.25rem;
	transition: border-color .15s ease;
}
.tb-dd-trigger:hover { border-color: hsl(var(--brand-red) / 0.5); }
.tb-dd-open .tb-dd-trigger { border-color: hsl(var(--brand-red)); }
.tb-dd-trigger [data-tb-dd-label],
.tb-dd-trigger > span:first-child {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.tb-dd-chev { flex-shrink: 0; color: hsl(var(--muted-foreground)); transform: rotate(180deg); transition: transform .2s ease; }
.tb-dd-open .tb-dd-chev { transform: rotate(0deg); }

.tb-dd-panel {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	right: 0;
	z-index: 50;
	background: hsl(var(--card));
	border: 1px solid hsl(var(--border));
	border-radius: 0.75rem;
	padding: 0.4rem;
	box-shadow: 0 12px 32px -10px rgba(0, 0, 0, 0.35);
	max-height: 320px;
	overflow-y: auto;
}
.tb-dd-opt { display: block; cursor: pointer; }
.tb-dd-opt + .tb-dd-opt { margin-top: 0.3rem; }
.tb-dd-card {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	padding: 0.55rem 0.65rem;
	border: 1px solid hsl(var(--border));
	border-radius: 0.6rem;
	background: hsl(var(--card));
	font-size: 0.85rem;
	font-weight: 500;
	color: hsl(var(--foreground));
	transition: border-color .15s ease, background .15s ease;
}
.tb-dd-opt:hover .tb-dd-card { border-color: hsl(var(--brand-red)); background: hsl(var(--brand-red) / 0.05); }
.tb-dd-ico {
	display: grid;
	place-items: center;
	width: 2rem;
	height: 2rem;
	border-radius: 0.5rem;
	background: hsl(var(--muted));
	color: hsl(var(--muted-foreground));
	flex-shrink: 0;
	transition: background .15s ease, color .15s ease;
}
.tb-dd-opt input:checked + .tb-dd-card { border-color: hsl(var(--brand-red)); background: hsl(var(--brand-red) / 0.08); }
.tb-dd-opt input:checked + .tb-dd-card .tb-dd-ico { background: hsl(var(--brand-red) / 0.15); color: hsl(var(--brand-red)); }
.tb-dd-opt input:focus-visible + .tb-dd-card { outline: 2px solid hsl(var(--brand-red)); outline-offset: 1px; }

/* Espaciado del CTA del buscador del hero (independiente del build purgado). */
.tb-hero-cta { padding: 0.5rem 1rem 1.25rem; }
@media (min-width: 768px) { .tb-hero-cta { padding: 0.5rem 1.25rem 1.5rem; } }

/* ============================================================
   Bloque trade-in en la ficha (anchoring) — "Puede cubrir el pie".
   Estilos propios (inmune al build purgado) y dark-aware vía vars.
   ============================================================ */
.tb-tradein {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	padding: 0.85rem 1rem;
	border: 1px solid hsl(var(--border));
	border-radius: 0.9rem;
	background: hsl(var(--muted) / 0.4);
	transition: border-color .15s ease;
}
.tb-tradein:hover { border-color: hsl(var(--brand-red)); }
.tb-tradein-ico {
	flex-shrink: 0;
	display: grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 0.6rem;
	background: hsl(var(--brand-red) / 0.1);
	color: hsl(var(--brand-red));
}
.tb-tradein-ico svg { width: 1.15rem; height: 1.15rem; }
.tb-tradein-body { flex: 1; min-width: 0; }
.tb-tradein-title { display: block; font-size: 0.9rem; font-weight: 700; line-height: 1.2; color: hsl(var(--foreground)); }
.tb-tradein-sub { display: block; font-size: 0.78rem; color: hsl(var(--muted-foreground)); margin-top: 0.12rem; }
.tb-tradein-cta {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: hsl(var(--muted-foreground));
	transition: color .15s ease;
}
.tb-tradein:hover .tb-tradein-cta { color: hsl(var(--brand-red)); }
.tb-tradein-cta svg { width: 0.9rem; height: 0.9rem; transition: transform .15s ease; }
.tb-tradein:hover .tb-tradein-cta svg { transform: translateX(3px); }
@media (max-width: 380px) { .tb-tradein-cta span { display: none; } }

/* ============================================================
   Dropdown "Motos ▾" del header (desktop). Agrupa 0KM/Seminuevas/Usadas.
   Abre en hover o focus-within (accesible con teclado). Solo desktop.
   ============================================================ */
.tb-nav-dd { position: relative; }
.tb-nav-dd-btn { cursor: pointer; }
.tb-nav-dd-chev { transition: transform .2s ease; }
.tb-nav-dd.is-open .tb-nav-dd-chev { transform: rotate(180deg); }
.tb-nav-dd-menu {
	position: absolute;
	top: 100%;
	left: 0;
	z-index: 60;
	min-width: 210px;
	margin: 0.5rem 0 0;
	padding: 0.4rem;
	list-style: none;
	background: hsl(var(--card));
	border: 1px solid hsl(var(--border));
	border-radius: 0.75rem;
	box-shadow: 0 14px 34px -12px rgba(0, 0, 0, 0.5);
	opacity: 0;
	visibility: hidden;
	transform: translateY(4px);
	transition: opacity .15s ease, transform .15s ease, visibility .15s ease;
}
.tb-nav-dd.is-open .tb-nav-dd-menu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
/* Mega menú "Motos" — panel ancho con columnas */
.tb-nav-dd-menu.tb-mega {
	width: 600px;
	max-width: calc(100vw - 2rem);
	min-width: 0;
	padding: 1.1rem;
}
.tb-mega-grid { display: flex; gap: 1.25rem; }
.tb-mega-col { flex: 1; min-width: 150px; }
.tb-mega-h {
	margin: 0 0 0.5rem;
	padding: 0 0.25rem;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: hsl(var(--muted-foreground));
}
.tb-mega-item { display: flex; align-items: center; gap: 0.6rem; padding: 0.5rem; border-radius: 0.6rem; }
.tb-mega-item:hover { background: hsl(var(--muted)); }
.tb-mega-ico { flex-shrink: 0; display: grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: 0.5rem; background: hsl(var(--brand-red) / 0.12); color: hsl(var(--brand-red)); }
.tb-mega-ico svg { width: 1.05rem; height: 1.05rem; }
.tb-mega-t { display: block; font-size: 0.85rem; font-weight: 600; color: hsl(var(--card-foreground)); }
.tb-mega-s { display: block; font-size: 0.72rem; color: hsl(var(--muted-foreground)); }
.tb-mega-link { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; padding: 0.45rem 0.5rem; border-radius: 0.5rem; font-size: 0.85rem; color: hsl(var(--card-foreground)); }
.tb-mega-link:hover { background: hsl(var(--muted)); color: hsl(var(--brand-red)); }
.tb-mega-count { font-size: 0.7rem; color: hsl(var(--muted-foreground)); }
.tb-mega-promo { display: block; padding: 0.85rem; margin-bottom: 0.6rem; border-radius: 0.7rem; background: hsl(var(--brand-red) / 0.08); border: 1px solid hsl(var(--brand-red) / 0.2); }
.tb-mega-promo:hover { border-color: hsl(var(--brand-red) / 0.5); }
.tb-mega-promo-ico { display: grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: 9999px; background: hsl(var(--brand-red)); color: #fff; margin-bottom: 0.4rem; }
.tb-mega-promo-ico svg { width: 1.05rem; height: 1.05rem; }
.tb-mega-promo-t { display: block; font-size: 0.85rem; font-weight: 700; color: hsl(var(--card-foreground)); }
.tb-mega-promo-s { display: block; font-size: 0.72rem; color: hsl(var(--muted-foreground)); margin-top: 0.1rem; }
.tb-mega-all { display: block; text-align: center; padding: 0.5rem; border-radius: 0.5rem; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: hsl(var(--brand-red)); }
.tb-mega-all:hover { background: hsl(var(--muted)); }

/* ============================================================
   Sección "Motos" del drawer móvil (versión del mega para touch).
   ============================================================ */
.tb-m-group { padding-bottom: 0.5rem; margin-bottom: 0.5rem; border-bottom: 1px solid hsl(var(--border)); }
.tb-m-h { display: block; padding: 0.25rem 0.75rem; font-size: 0.65rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: hsl(var(--muted-foreground)); }
.tb-m-item, .tb-m-promo { display: flex; align-items: center; gap: 0.7rem; padding: 0.6rem 0.75rem; border-radius: 0.6rem; }
.tb-m-item:hover { background: hsl(var(--muted)); }
.tb-m-ico { flex-shrink: 0; display: grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: 0.5rem; background: hsl(var(--brand-red) / 0.12); color: hsl(var(--brand-red)); }
.tb-m-ico svg { width: 1.05rem; height: 1.05rem; }
.tb-m-txt { min-width: 0; }
.tb-m-t { display: block; font-size: 0.9rem; font-weight: 600; color: hsl(var(--foreground)); }
.tb-m-s { display: block; font-size: 0.72rem; color: hsl(var(--muted-foreground)); }
.tb-m-promo { margin-top: 0.35rem; background: hsl(var(--brand-red) / 0.08); border: 1px solid hsl(var(--brand-red) / 0.2); }
.tb-m-promo-ico { flex-shrink: 0; display: grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: 9999px; background: hsl(var(--brand-red)); color: #fff; }
.tb-m-promo-ico svg { width: 1.05rem; height: 1.05rem; }

/* ============================================================
   Galería PDP: badge de zoom + lightbox (ver todas las fotos).
   ============================================================ */
.tbs-zoom-badge {
	position: absolute;
	bottom: 1rem;
	right: 1rem;
	display: grid;
	place-items: center;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 9999px;
	background: hsl(var(--background) / 0.85);
	color: hsl(var(--foreground));
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
	opacity: 0;
	transition: opacity .15s ease;
	pointer-events: none;
}
.group:hover .tbs-zoom-badge { opacity: 1; }
@media (hover: none) { .tbs-zoom-badge { opacity: 1; } } /* siempre visible en touch */

.tbs-lb { background: rgba(0, 0, 0, 0.92); }
.tbs-lb-img {
	max-width: 100%;
	max-height: 85vh;
	object-fit: contain;
	border-radius: 0.5rem;
	user-select: none;
}
.tbs-lb-btn {
	position: absolute;
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border: 0;
	border-radius: 9999px;
	background: rgba(255, 255, 255, 0.12);
	color: #fff;
	cursor: pointer;
	transition: background .15s ease;
}
.tbs-lb-btn:hover { background: rgba(255, 255, 255, 0.25); }
.tbs-lb-close { top: 1rem; right: 1rem; }
.tbs-lb-prev  { left: 1rem;  top: 50%; transform: translateY(-50%); }
.tbs-lb-next  { right: 1rem; top: 50%; transform: translateY(-50%); }
.tbs-lb-count { position: absolute; bottom: 1.25rem; left: 50%; transform: translateX(-50%); color: rgba(255,255,255,0.85); font-size: 0.85rem; font-weight: 600; }
@media (max-width: 640px) { .tbs-lb-btn { width: 2.5rem; height: 2.5rem; } .tbs-lb-prev { left: 0.5rem; } .tbs-lb-next { right: 0.5rem; } }

/* T7: tira de miniaturas como carrusel horizontal con scroll-snap nativo (sin
   librería de carrusel — el 59% entra por el navegador in-app de Instagram).
   El ancho de cada thumb llega por --tbs-thumb-w, seteada en el markup según la
   cantidad de fotos: 1/5 con <=5 (idéntico al grid anterior) y algo más angosto
   con >5 para que asome la siguiente. La relación de aspecto y el redondeo los
   siguen dando las clases del botón (aspect-square, rounded-lg). */
.tbs-thumbs-scroll {
	display: flex;
	gap: 0.5rem; /* = gap-2 */
	overflow-x: auto;
	scroll-snap-type: x proximity; /* proximity: no pelea el momentum en iOS */
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;      /* Firefox */
	-ms-overflow-style: none;   /* Edge legacy */
}
.tbs-thumbs-scroll::-webkit-scrollbar { /* WebKit / Safari / in-app iOS */
	display: none;
}
.tbs-thumbs-scroll > .tbs-thumb {
	flex: 0 0 var(--tbs-thumb-w, calc((100% - 2rem) / 5));
	scroll-snap-align: start;
}

/* T4/UI: disparador "¿Cuál es mi talla?" — chip sutil de marca en vez de un link
   suelto. Afordance clara de acción, buen área de toque, y usa los tokens de
   marca del sistema. */
.tbs-size-trigger {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	padding: 0.3rem 0.7rem;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	line-height: 1;
	color: hsl(var(--brand-red));
	background: hsl(var(--brand-red) / 0.07);
	border: 1px solid hsl(var(--brand-red) / 0.22);
	border-radius: 9999px;
	cursor: pointer;
	transition: background 0.15s ease, border-color 0.15s ease;
}
.tbs-size-trigger:hover {
	background: hsl(var(--brand-red) / 0.13);
	border-color: hsl(var(--brand-red) / 0.5);
}
.tbs-size-trigger:focus-visible {
	outline: 2px solid hsl(var(--brand-red));
	outline-offset: 2px;
}

/* Fila de tallas disponibles en la tarjeta del listado. Discreta (info de apoyo,
   no compite con el precio). min-height fija para no descolocar la grilla. */
.tbs-card-tallas {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.25rem 0.35rem;
	margin-top: 0.35rem;
	min-height: 1.15rem;
	font-size: 12px;
	color: hsl(var(--muted-foreground));
	line-height: 1.15;
}
.tbs-card-tallas__label {
	text-transform: uppercase;
	letter-spacing: 0.06em;
	font-size: 10px;
	opacity: 0.75;
	margin-right: 0.1rem;
}
.tbs-size-tag {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.35rem;
	height: 1.15rem;
	padding: 0 0.3rem;
	border: 1px solid hsl(var(--border));
	border-radius: 0.3rem;
	font-size: 11px;
	font-weight: 700;
	line-height: 1;
	color: hsl(var(--foreground));
}
.tbs-size-tag--out {
	text-decoration: line-through;
	opacity: 0.4;
	font-weight: 600;
}

/* Nota de "referencia general" en el modal de tallas: caja tintada de marca,
   imposible de pasar por alto (no letra chica). El CTA de WhatsApp va pegado. */
.tbs-size-refnote {
	border: 1px solid hsl(var(--brand-red) / 0.3);
	background: hsl(var(--brand-red) / 0.06);
	border-radius: 0.75rem;
	padding: 1rem;
}
