/* Impulso amplía la tienda compartida sin modificar el diseño Genérico. */
body.tienda-impulso {
    --impulso-tinta: #202c29;
    --impulso-muted: #52605b;
    --impulso-suave: color-mix(in srgb, var(--tienda-principal) 7%, #fff);
    --impulso-linea: color-mix(in srgb, var(--tienda-lineas) 35%, #e3e8e6);
    --impulso-ease: cubic-bezier(.22, 1, .36, 1);
    background: #fff;
    color: var(--impulso-tinta);
    line-height: 1.6;
}

body.tienda-impulso :is(h1, h2, h3, h4, h5, h6) {
    color: inherit;
    text-wrap: balance;
    overflow-wrap: anywhere;
}

body.tienda-impulso :is(h3, h4, h5) { font-weight: 650; letter-spacing: -.025em; }
body.tienda-impulso :is(p, .rotulo) { overflow-wrap: anywhere; }
body.tienda-impulso .text-muted { color: var(--impulso-muted) !important; }
body.tienda-impulso .min-w-0 { min-width: 0; }
body.tienda-impulso :is(a, button, input, select, textarea):focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 4px;
}

/* Los colores elegidos por cada negocio conservan sus roles originales. */
body.tienda-impulso .tienda-header {
    border-bottom-color: var(--impulso-linea);
    box-shadow: none !important;
    padding-block: 1rem !important;
}

body.tienda-impulso .tienda-header .container { gap: .75rem; }
body.tienda-impulso .tienda-header .navbar-brand {
    min-width: 0;
    max-width: 13rem;
    margin-right: 0;
    white-space: normal;
    overflow-wrap: anywhere;
    line-height: 1.3;
}

body.tienda-impulso .tienda-header .container > .d-flex { flex-shrink: 0; }
body.tienda-impulso .tienda-header .form-control {
    color: var(--tienda-header-texto);
    border-color: color-mix(in srgb, var(--tienda-header-texto) 30%, transparent);
}

body.tienda-impulso .tienda-header .form-control::placeholder {
    color: var(--tienda-header-texto);
    opacity: 1;
}

body.tienda-impulso .impulso-nav {
    background: var(--tienda-header);
    color: var(--tienda-header-texto);
    border-bottom: 1px solid var(--impulso-linea);
}

body.tienda-impulso .impulso-nav .container {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem 1.75rem;
}

body.tienda-impulso .impulso-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 46px;
    color: inherit;
    font-size: .875rem;
    text-underline-offset: 6px;
}

body.tienda-impulso .impulso-nav a:is(:hover, [aria-current="page"]) {
    text-decoration: underline;
    text-decoration-thickness: 2px;
}

body.tienda-impulso .impulso-portada { padding-top: 2rem; }
body.tienda-impulso .impulso-hero {
    display: grid;
    grid-template-columns: .88fr 1.12fr;
    min-height: 360px;
    overflow: hidden;
    border-radius: 20px;
    background: var(--impulso-suave);
    color: var(--impulso-tinta);
}

body.tienda-impulso .impulso-intro {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 1.15rem;
    min-width: 0;
    padding: clamp(1.5rem, 3.5vw, 3.25rem);
    animation: impulso-intro 450ms var(--impulso-ease) both;
}

body.tienda-impulso .impulso-intro h1 {
    max-width: 13ch;
    margin: 0;
    font-size: clamp(2rem, 3.8vw, 3.65rem);
    font-weight: 650;
    letter-spacing: -.035em;
    line-height: 1.13;
}

body.tienda-impulso .impulso-intro p {
    max-width: 42ch;
    margin: 0;
    color: var(--impulso-muted);
}

body.tienda-impulso .impulso-media { min-width: 0; min-height: 360px; }
body.tienda-impulso .impulso-media :is(.carousel, .carousel-inner, .carousel-item) { height: 100%; }
body.tienda-impulso .impulso-media .carousel-item img {
    width: 100%;
    height: 100%;
    min-height: 360px;
    max-height: none !important;
    object-fit: cover;
}

body.tienda-impulso .impulso-hero-sin-imagen { grid-template-columns: 1fr; min-height: 300px; }
body.tienda-impulso .impulso-hero-sin-imagen .impulso-intro h1 { max-width: 22ch; }
body.tienda-impulso #tienda-banner :is(.carousel-control-prev-icon, .carousel-control-next-icon) {
    width: 2.75rem;
    height: 2.75rem;
    background-size: 1.1rem;
    box-shadow: none;
}

/* Fotografías completas y jerarquía comercial, con menos marcos. */
body.tienda-impulso .tienda-contenido { padding-block: 2.5rem 4rem !important; }
body.tienda-impulso .tienda-contenido > h5 { font-size: 1.35rem; }
body.tienda-impulso .tienda-contenido h4 { font-size: 1.65rem; }
body.tienda-impulso .categoria-card {
    height: 156px;
    border-radius: 14px;
    box-shadow: none !important;
}

body.tienda-impulso .categoria-card .foto { transition: transform 350ms var(--impulso-ease); }
body.tienda-impulso .categoria-card .velo { background: linear-gradient(180deg, transparent 10%, rgba(0, 0, 0, .78)); }
body.tienda-impulso .categoria-card .rotulo { padding: 1rem 1.15rem; line-height: 1.4; }
body.tienda-impulso .categoria-card .rotulo small { opacity: 1 !important; margin-top: .2rem; }
body.tienda-impulso .producto-card {
    border: 0;
    border-bottom: 1px solid var(--impulso-linea);
    border-radius: 0 !important;
    background: transparent;
    transition: none;
}

body.tienda-impulso .producto-card:hover { transform: none; box-shadow: none; }
body.tienda-impulso .producto-card > a { display: block; border-radius: 14px; overflow: hidden; }
body.tienda-impulso .producto-card :is(.foto, .ph) {
    height: 230px;
    border-radius: 14px;
    background: #f5f7f6;
    object-fit: contain;
}

body.tienda-impulso .producto-card .foto { padding: .75rem; transition: transform 350ms var(--impulso-ease); }
body.tienda-impulso .producto-card .ph { color: var(--impulso-muted); }
body.tienda-impulso .producto-card .card-body { padding: 1rem 0 1.25rem; }
body.tienda-impulso .producto-card h6 { font-size: 1rem; font-weight: 600; line-height: 1.45 !important; }
body.tienda-impulso .producto-card .fs-5 { font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
body.tienda-impulso .tienda-contenido .card-img-top {
    object-fit: contain !important;
    background: #f5f7f6;
    padding: 1.25rem;
}

/* Controles compartidos: compra, cuenta, filtros y suscripción. */
body.tienda-impulso .btn {
    min-height: 44px;
    padding: .6rem 1rem;
    border-radius: 10px;
    font-weight: 500;
    transition: background-color 180ms ease-out, border-color 180ms ease-out, transform 180ms var(--impulso-ease);
}

body.tienda-impulso .btn:active { transform: scale(.98); }
body.tienda-impulso .btn:disabled { transform: none; }
body.tienda-impulso .btn-group > .btn:not(:first-of-type) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
body.tienda-impulso .btn-group > .btn:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
body.tienda-impulso :is(.form-control, .form-select) { min-height: 44px; border-radius: 10px; font-size: 1rem; }
body.tienda-impulso .form-control::placeholder { color: var(--impulso-muted); opacity: 1; }
body.tienda-impulso :is(.form-control, .form-select):focus {
    border-color: var(--tienda-boton);
    box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--tienda-boton) 22%, transparent);
}

body.tienda-impulso .tienda-contenido .card:not(.producto-card) {
    border: 1px solid var(--impulso-linea) !important;
    border-radius: 14px;
    box-shadow: none !important;
}

body.tienda-impulso .tienda-contenido .card:not(.producto-card) > .card-body { padding: 1.5rem; }
body.tienda-impulso .tienda-contenido .card h6 { font-weight: 650; }
body.tienda-impulso .tienda-contenido .card[style*="position:sticky"] { top: 110px !important; background: var(--impulso-suave); }
body.tienda-impulso #form-carrito .list-group-item { border-color: var(--impulso-linea); }
body.tienda-impulso #form-carrito img { object-fit: contain !important; }
body.tienda-impulso .tienda-newsletter { background: var(--impulso-suave); color: var(--impulso-tinta); }
body.tienda-impulso .tienda-newsletter h4 { font-size: 1.75rem; }
body.tienda-impulso .tienda-footer { padding-top: 2.5rem !important; padding-bottom: 1.5rem !important; }
body.tienda-impulso .tienda-footer .text-muted { color: var(--tienda-footer-muted) !important; }
body.tienda-impulso .tienda-footer h6 { color: var(--tienda-footer-texto); }

@keyframes impulso-intro {
    from { transform: translateY(10px); }
    to { transform: translateY(0); }
}

@media (hover: hover) and (pointer: fine) {
    body.tienda-impulso .producto-card > a:hover .foto { transform: scale(1.045); }
}

@media (max-width: 991.98px) {
    body.tienda-impulso .tienda-header .navbar-brand { flex: 1 1 0; max-width: none; }
    body.tienda-impulso .tienda-header form { flex-basis: 100%; max-width: none !important; margin-top: 0 !important; }
    body.tienda-impulso .impulso-hero { min-height: 320px; }
    body.tienda-impulso .impulso-media,
    body.tienda-impulso .impulso-media .carousel-item img { min-height: 320px; }
    body.tienda-impulso .tienda-contenido .card[style*="position:sticky"] { position: static !important; }
}

@media (max-width: 767.98px) {
    body.tienda-impulso .impulso-hero { grid-template-columns: 1fr; border-radius: 16px; }
    body.tienda-impulso .impulso-intro h1 { max-width: 16ch; }
    body.tienda-impulso .impulso-media { height: 240px; min-height: 0; }
    body.tienda-impulso .impulso-media .carousel-item img { min-height: 0; }
    body.tienda-impulso .impulso-portada { padding-top: 1rem; }
    body.tienda-impulso .tienda-contenido { padding-block: 1.75rem 2.5rem !important; }
    body.tienda-impulso .impulso-nav .container { gap: .25rem 1.25rem; }
    body.tienda-impulso .producto-card :is(.foto, .ph) { height: 190px; }
}

@media (max-width: 575.98px) {
    body.tienda-impulso .tienda-header .navbar-brand img { max-width: 150px !important; }
    body.tienda-impulso .tienda-header .btn { padding-inline: .8rem; }
    body.tienda-impulso .categoria-card { height: 138px; }
    body.tienda-impulso .categoria-card .rotulo { padding: .8rem; }
    body.tienda-impulso .producto-card :is(.foto, .ph) { height: 165px; }
    body.tienda-impulso .producto-card h6 { font-size: .9rem; }
    body.tienda-impulso .producto-card .fs-5 { font-size: 1.125rem !important; overflow-wrap: anywhere; }
    body.tienda-impulso #form-carrito .list-group-item { flex-wrap: wrap; gap: .75rem !important; }
    body.tienda-impulso #form-carrito .list-group-item > .flex-grow-1 { flex-basis: calc(100% - 90px); }
    body.tienda-impulso #form-carrito .list-group-item > .text-end { flex-grow: 1; width: auto !important; }
    body.tienda-impulso .tienda-contenido .card:not(.producto-card) > .card-body { padding: 1.15rem; }
    body.tienda-impulso .tienda-newsletter h4 { font-size: 1.4rem; }
}

@media (prefers-reduced-motion: reduce) {
    body.tienda-impulso *,
    body.tienda-impulso *::before,
    body.tienda-impulso *::after {
        animation: none !important;
        transition: none !important;
        scroll-behavior: auto !important;
    }

    body.tienda-impulso .categoria-card:hover .foto,
    body.tienda-impulso .producto-card > a:hover .foto,
    body.tienda-impulso .btn:active { transform: none; }
}
