/* RC73-01 - CSS PUBLICO UNIFICADO - generado desde copia maestra certificada */

/* ===== INICIO estilos.css ===== */
:root {
    --ink: #111111;
    --ink-soft: #5f6368;
    --line: #e7e7e5;
    --paper: #ffffff;
    --mist: #f6f6f4;
    --mist-strong: #efefec;
    --radius-sm: 12px;
    --radius-md: 18px;
    --radius-lg: 28px;
    --shadow-soft: 0 12px 36px rgba(18, 18, 18, .06);
    --shadow-hover: 0 22px 60px rgba(18, 18, 18, .11);
}

html { scroll-behavior: smooth; }

body {
    margin: 0;
    background: var(--paper);
    color: var(--ink);
    font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
}

a { color: inherit; }

.site-header {
    background: rgba(255,255,255,.94);
    border-bottom: 1px solid var(--line);
    backdrop-filter: blur(18px);
}

.site-logo {
    font-size: 1.22rem;
    font-weight: 760;
    letter-spacing: -.035em;
}



.site-search .form-control,
.site-search .btn {
    min-height: 48px;
}

.site-search .form-control {
    background: var(--mist);
    border: 1px solid transparent;
    border-radius: 999px 0 0 999px;
    padding-left: 1.3rem;
}

.site-search .form-control:focus {
    background: #fff;
    border-color: #bdbdb8;
    box-shadow: none;
}

.site-search .btn {
    border-radius: 0 999px 999px 0;
    padding-inline: 1.35rem;
}

.site-navigation { gap: 1.05rem !important; }

.site-nav-link {
    color: #363636;
    text-decoration: none;
    font-size: .91rem;
    font-weight: 560;
}

.site-nav-link:hover { color: #000; }

.category-nav {
    background: #fff;
    border-bottom: 1px solid var(--line);
}

.category-nav a {
    color: var(--ink-soft);
    text-decoration: none;
    font-size: .88rem;
    font-weight: 580;
    padding: .48rem .78rem;
    border-radius: 999px;
}

.category-nav a:hover {
    background: var(--mist);
    color: var(--ink);
}

.hero {
    background: var(--mist);
    color: var(--ink);
    border-bottom: 1px solid var(--line);
}

.hero h1 {
    max-width: 760px;
    font-size: clamp(2.5rem, 6vw, 5.3rem);
    line-height: .99;
    letter-spacing: -.06em;
    font-weight: 780;
}

.hero p {
    max-width: 650px;
    color: var(--ink-soft);
    font-size: 1.08rem;
}

.carousel-item .hero[style*="background-image"] {
    color: white;
    min-height: 520px;
    background-position: center;
    background-size: cover;
}

.carousel-item .hero[style*="background-image"] p {
    color: rgba(255,255,255,.84);
}

.book-card {
    height: 100%;
    border: 1px solid var(--line);
    border-radius: var(--radius-md);
    overflow: hidden;
    background: #fff;
    transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}

.book-card:hover {
    transform: translateY(-6px);
    box-shadow: var(--shadow-hover);
    border-color: #d5d5d1;
}

.book-cover {
    width: 100%;
    aspect-ratio: 2 / 3;
    object-fit: contain;
    background: var(--mist);
    padding: 1.35rem;
}

.book-card .card-body { padding: 1.15rem 1.15rem 1.25rem; }

.book-card h3 {
    font-weight: 680;
    line-height: 1.3;
    letter-spacing: -.025em;
}

.card,
.alert,
.modal-content {
    border-radius: var(--radius-md);
}

.card {
    border-color: var(--line);
}

.shadow-sm { box-shadow: var(--shadow-soft) !important; }

.btn {
    min-height: 42px;
    border-radius: 999px;
    padding-inline: 1.1rem;
    font-weight: 650;
}

.btn-dark {
    background: var(--ink);
    border-color: var(--ink);
}

.btn-dark:hover {
    background: #2c2c2c;
    border-color: #2c2c2c;
}

.btn-outline-dark {
    border-color: #cececa;
    color: var(--ink);
}

.form-control,
.form-select,
.input-group-text {
    min-height: 46px;
    border-color: var(--line);
    border-radius: var(--radius-sm);
}

.form-control:focus,
.form-select:focus {
    border-color: #aaa9a4;
    box-shadow: 0 0 0 .22rem rgba(0,0,0,.045);
}

.table thead th {
    color: #73736f;
    border-bottom-color: var(--line);
    font-size: .73rem;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.table td { border-bottom-color: #eeeeeb; }

.badge {
    border-radius: 999px;
    font-weight: 650;
    padding: .48rem .72rem;
}

.site-footer {
    background: #101010;
    color: #fff;
    border-top: 1px solid #101010;
}

.footer-main-grid {
    display: grid;
    grid-template-columns: minmax(240px, 1.55fr) repeat(3, minmax(150px, 1fr));
    gap: 3.5rem;
}

.footer-brand {
    font-size: 1.35rem;
    font-weight: 750;
    letter-spacing: -.04em;
}

.footer-description {
    max-width: 410px;
    color: #b8b8b3;
    margin: 1rem 0 1.4rem;
}

.footer-socials {
    display: flex;
    gap: 1rem;
}

.footer-socials a,
.footer-column a {
    color: #c5c5c0;
    text-decoration: none;
    transition: color .2s ease;
}

.footer-socials a:hover,
.footer-column a:hover { color: #fff; }

.footer-column {
    display: flex;
    flex-direction: column;
    gap: .65rem;
}

.footer-column h2 {
    color: #fff;
    font-size: .79rem;
    text-transform: uppercase;
    letter-spacing: .08em;
    margin-bottom: .5rem;
}

.footer-column p {
    color: #c5c5c0;
    margin: 0;
}

.footer-bottom {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 4rem;
    padding-top: 1.5rem;
    border-top: 1px solid #30302e;
    color: #8f8f8b;
    font-size: .84rem;
}

.whatsapp-float {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 1050;
    background: #111;
    color: #fff;
    text-decoration: none;
    font-size: .86rem;
    font-weight: 680;
    padding: .78rem 1rem;
    border-radius: 999px;
    box-shadow: 0 14px 34px rgba(0,0,0,.24);
}

.whatsapp-float:hover {
    background: #2d2d2d;
    color: #fff;
}

#resultadosBusqueda {
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: white;
}

.py-lg-6 { padding-top: 5rem !important; padding-bottom: 5rem !important; }

@media (max-width: 991.98px) {
    .site-navigation {
        width: 100%;
        padding-top: .85rem;
        border-top: 1px solid var(--line);
    }

    .category-nav .container {
        flex-wrap: nowrap !important;
        overflow-x: auto;
        scrollbar-width: none;
    }

    .category-nav .container::-webkit-scrollbar { display: none; }

    .footer-main-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 2.5rem;
    }
}

@media (max-width: 575.98px) {
    .hero h1 { font-size: 2.5rem; }

    .book-cover { padding: .8rem; }

    .footer-main-grid { grid-template-columns: 1fr; }

    .footer-bottom {
        flex-direction: column;
        margin-top: 2.5rem;
    }

    .whatsapp-float {
        right: 12px;
        bottom: 12px;
    }
}

/* Acceso administrativo público V18 */
.floating-tools{
    position:fixed;
    right:18px;
    bottom:18px;
    z-index:1050;
    display:flex;
    align-items:center;
    gap:.65rem;
}

.floating-tools .whatsapp-float{
    position:static;
    right:auto;
    bottom:auto;
}

.admin-float{
    width:46px;
    height:46px;
    display:grid;
    place-items:center;
    border-radius:999px;
    background:#fff;
    color:#111;
    border:1px solid #dcdcd8;
    text-decoration:none;
    font-size:1.1rem;
    box-shadow:0 14px 34px rgba(0,0,0,.14);
    transition:transform .2s ease, background .2s ease;
}

.admin-float:hover{
    transform:translateY(-2px);
    background:#f4f4f2;
    color:#111;
}

.footer-admin-link{
    color:#a5a5a0;
    text-decoration:none;
    font-size:.82rem;
    border-bottom:1px solid transparent;
}

.footer-admin-link:hover{
    color:#fff;
    border-bottom-color:#777;
}

@media(max-width:575.98px){
    .floating-tools{
        right:12px;
        bottom:12px;
    }

    .admin-float{
        width:42px;
        height:42px;
    }
}

/* Identidad visual y logo ampliado — Versión 19 */

.site-header {
    min-height: 118px;
}

.site-header .container {
    max-width: 1480px;
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
}

.site-header-layout {
    min-height: 84px;
}

.site-logo {
    flex: 0 0 auto;
    min-width: 245px;
    justify-content: flex-start;
}

.site-logo-image {
    display: block;
    width: auto;
    height: auto;
    max-width: 285px;
    max-height: 96px;
    object-fit: contain;
    object-position: left center;
}

.site-search {
    min-width: 280px;
    max-width: 720px;
    margin-inline: auto;
}

.site-navigation-actions {
    flex: 0 0 auto;
    justify-content: flex-end;
    max-width: 420px;
}

.category-nav {
    position: sticky;
    top: 118px;
    z-index: 1015;
}

@media (min-width: 1200px) {
    .site-logo {
        min-width: 275px;
    }

    .site-logo-image {
        max-width: 320px;
        max-height: 108px;
    }
}

@media (max-width: 1199.98px) and (min-width: 992px) {
    .site-logo {
        min-width: 210px;
    }

    .site-logo-image {
        max-width: 235px;
        max-height: 86px;
    }

    .site-navigation-actions {
        max-width: 330px;
        gap: .7rem !important;
    }
}

@media (max-width: 991.98px) {
    .site-header {
        min-height: auto;
    }

    .site-header-layout {
        min-height: auto;
    }

    .site-logo {
        width: 100%;
        min-width: 0;
        justify-content: center;
    }

    .site-logo-image {
        max-width: min(340px, 86vw);
        max-height: 82px;
        object-position: center;
    }

    .site-search {
        width: 100%;
        max-width: none;
        margin: 0;
    }

    .site-navigation-actions {
        max-width: none;
        justify-content: center;
    }

    .category-nav {
        position: static;
    }
}

@media (max-width: 575.98px) {
    .site-header .container {
        padding-top: .85rem !important;
        padding-bottom: .85rem !important;
    }

    .site-logo-image {
        max-width: 88vw;
        max-height: 68px;
    }

    .site-navigation-actions {
        gap: .65rem !important;
        font-size: .82rem;
    }
}

/* ===== FIN estilos.css ===== */

/* ===== INICIO categorias_publicas_v21_3.css ===== */
/* Categorías públicas dinámicas V21.3 */
.category-nav a.active {
    background: #111;
    color: #fff;
}

.category-nav a.active:hover {
    background: #2a2a2a;
    color: #fff;
}

.category-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    margin-left: .3rem;
    padding: 0 .35rem;
    border-radius: 999px;
    background: rgba(0,0,0,.07);
    font-size: .72rem;
}

.category-nav a.active .category-count {
    background: rgba(255,255,255,.18);
}

/* ===== FIN categorias_publicas_v21_3.css ===== */

/* ===== INICIO v22.css ===== */
.home-hero {
    min-height: 610px;
    background-position: center;
    background-size: cover;
}

.home-hero-default {
    min-height: 560px;
    display: flex;
    align-items: center;
}

.hero-content {
    max-width: 800px;
}

.hero-eyebrow {
    margin-bottom: 1rem;
    font-size: .76rem;
    font-weight: 750;
    letter-spacing: .11em;
    text-transform: uppercase;
}

.home-section {
    border-top: 1px solid #ecece9;
}

.section-heading {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 2rem;
    margin-bottom: 1.6rem;
}

.section-heading h2 {
    margin: 0;
    font-size: clamp(1.8rem,4vw,3rem);
    letter-spacing: -.045em;
}

.section-heading p {
    margin: .45rem 0 0;
    color: #70706b;
}

.section-heading > a {
    color: #111;
    font-weight: 650;
    text-decoration: none;
}

.home-books-grid {
    display: grid;
    grid-template-columns: repeat(4,minmax(0,1fr));
    gap: 1.25rem;
}

.book-condition {
    color: #777;
    font-size: .7rem;
    font-weight: 750;
    letter-spacing: .07em;
    text-transform: uppercase;
    margin-bottom: .55rem;
}

.category-cards-grid {
    display: grid;
    grid-template-columns: repeat(5,minmax(0,1fr));
    gap: .8rem;
}

.category-card {
    min-height: 125px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 1.1rem;
    border: 1px solid #e6e6e2;
    border-radius: 18px;
    background: #f8f8f6;
    color: #111;
    text-decoration: none;
    transition: transform .2s ease,background .2s ease;
}

.category-card:hover {
    transform: translateY(-3px);
    background: #fff;
    color: #111;
}

.category-card span {
    font-size: 1.05rem;
    font-weight: 700;
}

.category-card strong {
    color: #73736f;
    font-size: .82rem;
}

.compare-callout {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    padding: clamp(1.5rem,4vw,3rem);
    border-radius: 26px;
    background: #111;
    color: #fff;
}

.compare-callout p {
    color: #c7c7c2;
    margin-bottom: 0;
}

.compare-grid {
    display: grid;
    grid-template-columns: repeat(var(--compare-columns),minmax(240px,1fr));
    gap: 1rem;
    align-items: start;
}

.compare-column {
    padding: 1.25rem;
    border: 1px solid #e5e5e1;
    border-radius: 20px;
    background: #fff;
}

.compare-cover {
    height: 300px;
    display: grid;
    place-items: center;
    margin-bottom: 1rem;
    padding: 1rem;
    border-radius: 15px;
    background: #f7f7f5;
}

.compare-cover img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.compare-price {
    margin: .8rem 0 1rem;
    font-size: 1.55rem;
    font-weight: 750;
}

.compare-specs {
    display: grid;
    grid-template-columns: 90px 1fr;
    gap: .45rem .7rem;
    margin-bottom: 1.2rem;
    font-size: .88rem;
}

.compare-specs dt {
    color: #777;
}

.compare-specs dd {
    margin: 0;
    font-weight: 600;
    overflow-wrap: anywhere;
}

.empty-state {
    padding: 4rem 2rem;
    border: 1px dashed #d9d9d4;
    border-radius: 22px;
    text-align: center;
    background: #fafaf8;
}

@media(max-width:1199.98px){
    .home-books-grid {
        grid-template-columns: repeat(3,minmax(0,1fr));
    }

    .category-cards-grid {
        grid-template-columns: repeat(3,minmax(0,1fr));
    }

    .compare-grid {
        overflow-x: auto;
        grid-template-columns: repeat(var(--compare-columns),minmax(270px,1fr));
    }
}

@media(max-width:767.98px){
    .home-hero {
        min-height: 480px;
    }

    .home-books-grid {
        grid-template-columns: repeat(2,minmax(0,1fr));
    }

    .category-cards-grid {
        grid-template-columns: repeat(2,minmax(0,1fr));
    }

    .section-heading,
    .compare-callout {
        align-items: stretch;
        flex-direction: column;
    }
}

@media(max-width:440px){
    .home-books-grid {
        grid-template-columns: 1fr;
    }
}

/* ===== FIN v22.css ===== */

/* ===== INICIO v23.css ===== */
.personalized-hero {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:2rem;
    padding:clamp(1.8rem,5vw,4rem);
    border-radius:28px;
    background:#111;
    color:#fff;
}

.personalized-hero h1 {
    margin:.5rem 0;
    font-size:clamp(2.5rem,6vw,5rem);
    letter-spacing:-.06em;
}

.personalized-hero p {
    max-width:720px;
    color:#c8c8c3;
    margin:0;
}

@media(max-width:767.98px){
    .personalized-hero {
        align-items:stretch;
        flex-direction:column;
    }
}

/* ===== FIN v23.css ===== */

/* ===== INICIO v24.css ===== */
.price-alert-card {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    margin:1rem 0;
    padding:1rem;
    border:1px solid #e6e6e2;
    border-radius:18px;
    background:#fafaf8;
}

.price-alert-card strong,
.price-alert-card span {
    display:block;
}

.price-alert-card span {
    color:#74746f;
    font-size:.84rem;
}

.price-alert-fields {
    display:flex;
    gap:.55rem;
    flex:1;
    justify-content:flex-end;
}

.price-alert-fields .form-control {
    max-width:230px;
}

.alerts-heading {
    display:flex;
    align-items:end;
    justify-content:space-between;
    gap:2rem;
}

.alerts-list {
    display:grid;
    gap:.75rem;
}

.alert-item {
    display:flex;
    align-items:center;
    gap:1rem;
    padding:1rem;
    border:1px solid #e6e6e2;
    border-radius:17px;
    background:#fff;
}

.alert-item img {
    width:54px;
    height:74px;
    object-fit:contain;
    background:#f7f7f5;
    border-radius:8px;
}

@media(max-width:767.98px){
    .price-alert-card,
    .price-alert-fields,
    .alerts-heading,
    .alert-item {
        align-items:stretch;
        flex-direction:column;
    }

    .price-alert-fields .form-control {
        max-width:none;
    }
}

/* ===== FIN v24.css ===== */

/* ===== INICIO v25.css ===== */
.club-hero {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:2rem;
    padding:clamp(2rem,5vw,4rem);
    border-radius:28px;
    background:#111;
    color:#fff;
}

.club-hero h1 {
    margin:.45rem 0;
    font-size:clamp(2.6rem,6vw,5rem);
    letter-spacing:-.06em;
}

.club-hero p {
    margin:0;
    color:#c8c8c3;
}

.club-balance {
    min-width:220px;
    padding:1.35rem;
    border-radius:20px;
    background:#fff;
    color:#111;
}

.club-balance span,
.club-balance strong,
.club-balance small {
    display:block;
}

.club-balance strong {
    margin:.25rem 0;
    font-size:2rem;
}

.club-progress-card {
    margin-top:1rem;
    padding:1rem 1.2rem;
    border:1px solid #e6e6e2;
    border-radius:16px;
    background:#fff;
}

.rewards-grid {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:1rem;
}

.reward-card {
    min-height:260px;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    gap:1rem;
    padding:1.35rem;
    border:1px solid #e5e5e1;
    border-radius:20px;
    background:#fff;
}

.reward-card h3 {
    margin:.45rem 0;
    font-size:1.2rem;
}

.reward-card p {
    color:#6f6f6b;
}

.reward-points {
    display:inline-flex;
    padding:.4rem .7rem;
    border-radius:999px;
    background:#f2f2ef;
    font-size:.8rem;
    font-weight:700;
}

.club-redemption {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    padding:.8rem 0;
    border-bottom:1px solid #eeeeeb;
}

@media(max-width:991.98px){
    .rewards-grid {
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}

@media(max-width:767.98px){
    .club-hero {
        align-items:stretch;
        flex-direction:column;
    }

    .rewards-grid {
        grid-template-columns:1fr;
    }

    .club-balance {
        min-width:0;
    }
}

/* ===== FIN v25.css ===== */

/* ===== INICIO v26.css ===== */
.lists-grid {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:1rem;
}

.wish-list-card {
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    min-height:260px;
    padding:1.3rem;
    border:1px solid #e5e5e1;
    border-radius:20px;
    background:#fff;
}

.list-item-form {
    width:min(100%,330px);
    display:grid;
    grid-template-columns:90px 1fr;
    gap:.55rem;
}

.list-item-form .d-flex {
    grid-column:1/-1;
}

.public-list-hero {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:2rem;
    padding:clamp(2rem,5vw,4rem);
    border-radius:28px;
    background:#111;
    color:#fff;
}

.public-list-hero h1 {
    margin:.45rem 0;
    font-size:clamp(2.6rem,6vw,5rem);
    letter-spacing:-.06em;
}

.public-list-hero p {
    margin:0;
    color:#c8c8c3;
}

.public-list-owner {
    padding:.75rem 1rem;
    border:1px solid rgba(255,255,255,.2);
    border-radius:999px;
}

@media(max-width:767.98px){
    .lists-grid {
        grid-template-columns:1fr;
    }

    .public-list-hero,
    .alert-item {
        align-items:stretch;
        flex-direction:column;
    }

    .list-item-form {
        width:100%;
        grid-template-columns:1fr;
    }

    .list-item-form .d-flex {
        grid-column:auto;
    }
}

/* ===== FIN v26.css ===== */

/* ===== INICIO v27.css ===== */
.launches-hero {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:2rem;
    padding:clamp(2rem,5vw,4rem);
    border-radius:28px;
    background:#111;
    color:#fff;
}

.launches-hero h1 {
    margin:.5rem 0;
    font-size:clamp(2.7rem,6vw,5rem);
    letter-spacing:-.06em;
}

.launches-hero p {
    max-width:720px;
    margin:0;
    color:#c8c8c3;
}

.launches-grid {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:1.25rem;
}

.launch-card {
    overflow:hidden;
    border:1px solid #e5e5e1;
    border-radius:22px;
    background:#fff;
}

.launch-cover {
    position:relative;
    height:360px;
    display:grid;
    place-items:center;
    padding:1.5rem;
    background:#f7f7f5;
}

.launch-cover img {
    width:100%;
    height:100%;
    object-fit:contain;
}

.launch-badge {
    position:absolute;
    top:1rem;
    left:1rem;
    padding:.45rem .75rem;
    border-radius:999px;
    background:#111;
    color:#fff;
    font-size:.75rem;
    font-weight:700;
}

.launch-content {
    padding:1.25rem;
}

.launch-content h2 {
    margin:.45rem 0;
    font-size:1.3rem;
}

.launch-date {
    color:#6d6d68;
    font-size:.78rem;
    font-weight:750;
    letter-spacing:.06em;
    text-transform:uppercase;
}

.launch-meta,
.preorder-summary {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:.75rem;
    margin-top:1rem;
}

.launch-meta > div,
.preorder-summary > div {
    padding:.85rem;
    border-radius:14px;
    background:#f7f7f5;
}

.launch-meta span,
.launch-meta strong,
.preorder-summary span,
.preorder-summary strong {
    display:block;
}

.launch-meta span,
.preorder-summary span {
    color:#74746f;
    font-size:.75rem;
}

.preorder-book {
    min-height:520px;
    display:grid;
    place-items:center;
    padding:2rem;
    border-radius:24px;
    background:#f7f7f5;
    border:1px solid #e5e5e1;
}

.preorder-book img {
    width:100%;
    height:480px;
    object-fit:contain;
}

.preorder-confirmation {
    max-width:760px;
    margin:auto;
    padding:clamp(2rem,5vw,4rem);
    border:1px solid #e5e5e1;
    border-radius:28px;
    background:#fff;
    text-align:center;
    box-shadow:0 22px 65px rgba(0,0,0,.08);
}

.confirmation-mark {
    width:72px;
    height:72px;
    display:grid;
    place-items:center;
    margin:0 auto 1rem;
    border-radius:999px;
    background:#111;
    color:#fff;
    font-size:2rem;
}

.confirmation-code {
    margin:1.5rem 0;
    padding:1.2rem;
    border-radius:18px;
    background:#f7f7f5;
}

.confirmation-code span,
.confirmation-code strong,
.confirmation-data span,
.confirmation-data strong {
    display:block;
}

.confirmation-code strong {
    margin-top:.3rem;
    font-size:1.45rem;
    letter-spacing:.05em;
}

.confirmation-data {
    padding:1rem;
    border:1px solid #e5e5e1;
    border-radius:16px;
}

.product-preorder-card {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    margin:1rem 0;
    padding:1rem 1.15rem;
    border-radius:18px;
    background:#111;
    color:#fff;
}

.product-preorder-card span,
.product-preorder-card strong {
    display:block;
}

.product-preorder-card span {
    color:#c8c8c3;
    font-size:.84rem;
}

@media(max-width:991.98px){
    .launches-grid {
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}

@media(max-width:767.98px){
    .launches-hero,
    .product-preorder-card {
        align-items:stretch;
        flex-direction:column;
    }

    .launches-grid {
        grid-template-columns:1fr;
    }

    .launch-meta,
    .preorder-summary {
        grid-template-columns:1fr;
    }

    .preorder-book {
        min-height:380px;
    }

    .preorder-book img {
        height:340px;
    }
}

/* ===== FIN v27.css ===== */

/* ===== INICIO v28.css ===== */
.events-hero {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:2rem;
    padding:clamp(2rem,5vw,4rem);
    border-radius:28px;
    background:#111;
    color:#fff;
}

.events-hero h1 {
    margin:.5rem 0;
    font-size:clamp(2.7rem,6vw,5rem);
    letter-spacing:-.06em;
}

.events-hero p {
    max-width:720px;
    margin:0;
    color:#c8c8c3;
}

.events-grid {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:1.25rem;
}

.event-card {
    overflow:hidden;
    border:1px solid #e5e5e1;
    border-radius:22px;
    background:#fff;
}

.event-image {
    position:relative;
    height:250px;
    background:#f7f7f5;
}

.event-image img {
    width:100%;
    height:100%;
    object-fit:cover;
}

.event-featured {
    position:absolute;
    top:1rem;
    left:1rem;
    padding:.45rem .75rem;
    border-radius:999px;
    background:#111;
    color:#fff;
    font-size:.75rem;
    font-weight:700;
}

.event-content {
    padding:1.25rem;
}

.event-content h2 {
    margin:.45rem 0;
    font-size:1.3rem;
}

.event-type {
    color:#6d6d68;
    font-size:.75rem;
    font-weight:750;
    letter-spacing:.07em;
    text-transform:uppercase;
}

.event-date {
    margin-bottom:.7rem;
    font-weight:650;
}

.event-data,
.event-detail-meta,
.event-registration-summary {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:.75rem;
    margin-top:1rem;
}

.event-data > div,
.event-detail-meta > div,
.event-registration-summary > div {
    padding:.85rem;
    border-radius:14px;
    background:#f7f7f5;
}

.event-data span,
.event-data strong,
.event-detail-meta span,
.event-detail-meta strong,
.event-registration-summary span,
.event-registration-summary strong {
    display:block;
}

.event-data span,
.event-detail-meta span,
.event-registration-summary span {
    color:#74746f;
    font-size:.75rem;
}

.event-detail-image {
    min-height:480px;
    overflow:hidden;
    border-radius:24px;
    background:#f7f7f5;
}

.event-detail-image img {
    width:100%;
    height:480px;
    object-fit:cover;
}

.event-title {
    font-size:clamp(2.5rem,5vw,4.5rem);
    letter-spacing:-.055em;
}

.event-location {
    display:flex;
    flex-direction:column;
    gap:.25rem;
    margin:1rem 0;
    padding:1rem;
    border:1px solid #e5e5e1;
    border-radius:16px;
}

.event-description {
    margin:1.5rem 0;
    line-height:1.75;
}

.event-confirmation {
    max-width:760px;
    margin:auto;
    padding:clamp(2rem,5vw,4rem);
    border:1px solid #e5e5e1;
    border-radius:28px;
    background:#fff;
    text-align:center;
    box-shadow:0 22px 65px rgba(0,0,0,.08);
}

@media(max-width:991.98px){
    .events-grid {
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}

@media(max-width:767.98px){
    .events-hero {
        align-items:stretch;
        flex-direction:column;
    }

    .events-grid {
        grid-template-columns:1fr;
    }

    .event-data,
    .event-detail-meta,
    .event-registration-summary {
        grid-template-columns:1fr;
    }

    .event-detail-image,
    .event-detail-image img {
        min-height:340px;
        height:340px;
    }
}

/* ===== FIN v28.css ===== */

/* ===== INICIO ficha_libro_proto_1_0.css ===== */
/* Prototipo 1.0 - Restauración estable de la ficha de libro */
.product-shell{overflow:hidden}
.product-gallery{position:sticky;top:145px}
.product-kicker{font-size:.76rem;letter-spacing:.09em;text-transform:uppercase;color:#777;font-weight:700}
.product-title{font-size:clamp(2.2rem,5vw,4.4rem);line-height:1;letter-spacing:-.055em;margin:.7rem 0;overflow-wrap:anywhere}
.product-subtitle{font-size:1.18rem;color:#6b6b68}
.product-author{font-size:1.05rem;font-weight:600}
.product-main-image{background:#f7f7f5;border:1px solid #e7e7e4;border-radius:26px;padding:2rem;display:grid;place-items:center;min-height:560px;overflow:hidden}
.product-main-image img{display:block;width:100%;height:520px;max-width:100%;object-fit:contain;transition:transform .25s ease}
.product-main-image:hover img{transform:scale(1.035)}
.product-thumbnails{display:flex;gap:.7rem;margin-top:1rem;overflow-x:auto;padding-bottom:.35rem}
.thumb{width:76px;height:92px;flex:0 0 auto;border:1px solid #ddd;border-radius:12px;background:#fff;padding:.35rem}
.thumb.active{border-color:#111;box-shadow:0 0 0 1px #111}
.thumb img{width:100%;height:100%;object-fit:contain}
.product-price-box{padding:1.4rem 0;border-top:1px solid #e8e8e5;border-bottom:1px solid #e8e8e5}
.price-old{color:#858580;text-decoration:line-through;font-size:1rem}
.product-price{font-size:2.35rem;font-weight:760;letter-spacing:-.04em}
.availability{margin-top:.45rem;font-size:.92rem;font-weight:650}
.available{color:#237447}.unavailable{color:#a13737}
.product-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin:1.4rem 0}
.product-actions form{margin:0}
.quantity-control{max-width:90px;min-height:48px}
.product-benefits{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;margin-top:1.4rem}
.product-benefits>div{background:#f7f7f5;border-radius:15px;padding:1rem;min-width:0}
.product-benefits strong,.product-benefits span{display:block}
.product-benefits span{font-size:.82rem;color:#70706c;margin-top:.25rem}
.product-section{border:1px solid #e7e7e4;border-radius:22px;padding:1.6rem;height:100%;background:#fff}
.product-section h2{font-size:1.25rem;margin-bottom:1rem}
.product-section p{line-height:1.75;overflow-wrap:anywhere}
.product-specs{display:grid;grid-template-columns:minmax(100px,130px) minmax(0,1fr);gap:.7rem 1rem;margin:0}
.product-specs dt{color:#73736f}.product-specs dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.used-book-panel{display:flex;justify-content:space-between;gap:2rem;background:#111;color:#fff;border-radius:24px;padding:2rem}
.used-book-panel p{color:#ccc}.used-code span,.used-code strong{display:block}.used-code span{color:#aaa;font-size:.8rem}
.restock-card{background:#f7f7f5;border:1px solid #e7e7e4;border-radius:18px;padding:1rem;margin:1rem 0}
.price-alert-card{margin:1rem 0}
.price-alert-fields{min-width:0}
.product-preorder-card{overflow:hidden}

@media(max-width:1199.98px){
  .product-gallery{position:static}
}
@media(max-width:991.98px){
  .product-main-image{min-height:420px;padding:1.25rem}
  .product-main-image img{height:380px}
  .product-benefits{grid-template-columns:1fr}
  .used-book-panel{flex-direction:column}
}
@media(max-width:575.98px){
  .product-shell.container{padding-top:1.5rem!important;padding-bottom:2rem!important}
  .product-main-image{min-height:330px;border-radius:18px;padding:1rem}
  .product-main-image img{height:300px}
  .product-title{font-size:clamp(2rem,12vw,3.1rem)}
  .product-price{font-size:2rem}
  .product-actions,.product-actions form{width:100%}
  .product-actions form.d-flex{display:grid!important;grid-template-columns:82px minmax(0,1fr);width:100%}
  .product-actions form.d-flex .btn{width:100%}
  .product-actions>.btn,.product-actions>form:not(.d-flex),.product-actions>form:not(.d-flex) .btn{width:100%}
  .product-specs{grid-template-columns:1fr;gap:.15rem}
  .product-specs dd{margin-bottom:.7rem}
  .product-section{padding:1.2rem;border-radius:18px}
}


/* Refuerzo Prototipo 1.0 v2.2 */
.product-main-image img{
    filter:none !important;
    opacity:1 !important;
}
.product-preorder-card{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    margin:1rem 0 1.2rem;
    padding:1.1rem 1.2rem;
    border-radius:18px;
    background:#111;
    color:#fff;
}
.product-preorder-card>div{
    min-width:0;
    display:flex;
    flex-direction:column;
    gap:.2rem;
}
.product-preorder-card span{
    color:#d0d0cc;
    font-size:.88rem;
}
.price-alert-card{
    display:grid;
    grid-template-columns:minmax(170px,.7fr) minmax(0,1.3fr);
    align-items:center;
    gap:1rem;
    padding:1rem;
    border:1px solid #e7e7e4;
    border-radius:18px;
    background:#f7f7f5;
}
.price-alert-card strong,
.price-alert-card span{display:block}
.price-alert-card span{
    margin-top:.2rem;
    color:#70706c;
    font-size:.82rem;
}
.price-alert-fields{
    min-width:0;
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(0,.8fr) auto;
    gap:.5rem;
}
.product-actions .btn{
    min-height:48px;
    border-radius:999px;
}

@media(max-width:991.98px){
    .price-alert-card{grid-template-columns:1fr}
}

@media(max-width:575.98px){
    .product-preorder-card{
        align-items:stretch;
        flex-direction:column;
    }
    .product-preorder-card .btn{width:100%}
    .price-alert-fields{grid-template-columns:1fr}
    .price-alert-fields .btn{width:100%}
}

/* ===== FIN ficha_libro_proto_1_0.css ===== */

/* ===== INICIO logo_header_proto_1_0.css ===== */
/*
========================================================
LOGO HEADER - LIBRERÍA ONLINE INTEGRAL
Prototipo 1.0 - Ajuste fino v1.1
Trabaja sobre las clases reales del header:
.site-logo / .site-logo-image
========================================================
*/

/* Alineación general del bloque del logo */
.site-logo{
    flex:0 0 auto !important;
    min-width:285px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    padding-inline:8px !important;
    margin-right:1.15rem !important;
}

/* Logo: apenas más grande, sin deformarlo */
.site-logo-image{
    display:block !important;
    width:auto !important;
    height:auto !important;
    max-width:350px !important;
    max-height:116px !important;
    object-fit:contain !important;
    object-position:center center !important;
    transform-origin:center center;
    transition:transform .22s ease;
}

/* Efecto muy sutil */
.site-logo:hover .site-logo-image{
    transform:scale(1.025);
}

/* Mantiene logo, buscador y navegación perfectamente centrados */
.site-header-layout{
    align-items:center !important;
}

/* Notebook / tablet horizontal */
@media (max-width:1199.98px) and (min-width:992px){
    .site-logo{
        min-width:225px !important;
        margin-right:.85rem !important;
    }

    .site-logo-image{
        max-width:258px !important;
        max-height:94px !important;
    }
}

/* Tablet y celular: logo realmente centrado */
@media (max-width:991.98px){
    .site-logo{
        width:100% !important;
        min-width:0 !important;
        margin-right:0 !important;
        padding-inline:0 !important;
        justify-content:center !important;
    }

    .site-logo-image{
        max-width:min(365px,90vw) !important;
        max-height:90px !important;
        object-position:center center !important;
    }
}

/* Celulares */
@media (max-width:575.98px){
    .site-logo-image{
        max-width:90vw !important;
        max-height:76px !important;
    }
}

/* Celulares muy pequeños */
@media (max-width:380px){
    .site-logo-image{
        max-width:88vw !important;
        max-height:70px !important;
    }
}

/* ===== FIN logo_header_proto_1_0.css ===== */
/* =========================================================
   RC73-02 — CAPA RESPONSIVE INTEGRAL
   Esta sección debe permanecer al FINAL de la hoja.
   No modifica identidad visual de escritorio.
   ========================================================= */

html,
body{
    max-width:100%;
    overflow-x:hidden;
}

body{
    min-width:0;
}

img,
svg,
video,
canvas{
    max-width:100%;
}

iframe{
    max-width:100%;
}

.container,
.container-fluid,
.row,
[class*="col-"]{
    min-width:0;
}

/* Evitar que textos largos rompan tarjetas o columnas */
.card,
.alert,
.list-group-item,
.product-section,
.book-card,
.footer-column,
.footer-brand{
    min-width:0;
}

.card-title,
.card-text,
.alert,
.list-group-item,
.product-title,
.product-subtitle,
.product-author,
.footer-description,
.footer-column a,
.footer-column p{
    overflow-wrap:anywhere;
    word-break:normal;
}

/* Tablas: nunca deben ensanchar todo el viewport */
.table-responsive{
    width:100%;
    max-width:100%;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
}

.table{
    margin-bottom:0;
}

/* Formularios */
.form-control,
.form-select,
.input-group,
.input-group > .form-control,
.input-group > .form-select{
    min-width:0;
}

textarea.form-control{
    resize:vertical;
}

/* Mapas, videos y embeds */
iframe[src*="google.com/maps"],
iframe[src*="maps.google"],
.ratio iframe{
    width:100% !important;
}

/* Comparador: scroll horizontal controlado antes que desbordar página */
.compare-grid{
    max-width:100%;
}

/* =========================================================
   TABLET / MÓVIL
   ========================================================= */
@media (max-width:991.98px){

    .site-header{
        position:relative !important;
    }

    .site-header .container{
        width:100%;
        max-width:100%;
    }

    .site-header-layout{
        width:100%;
        gap:.85rem !important;
    }

    .site-search{
        min-width:0 !important;
        width:100% !important;
    }

    /*
     * El menú público pasa a ser una banda horizontal.
     * Evita 3-5 filas de enlaces en pantallas chicas.
     */
    .site-navigation-actions{
        width:100%;
        max-width:100% !important;
        flex-wrap:nowrap !important;
        justify-content:flex-start !important;
        gap:.45rem !important;
        padding:.15rem 0 .4rem;
        overflow-x:auto;
        overflow-y:hidden;
        scrollbar-width:thin;
        -webkit-overflow-scrolling:touch;
    }

    .site-navigation-actions .site-nav-link,
    .site-navigation-actions .btn{
        flex:0 0 auto;
        white-space:nowrap;
    }

    /*
     * Categorías en una sola línea desplazable.
     */
    .category-nav{
        max-width:100%;
        overflow:hidden;
    }

    .category-nav .container{
        flex-wrap:nowrap !important;
        max-width:100%;
        overflow-x:auto;
        overflow-y:hidden;
        scrollbar-width:none;
        -webkit-overflow-scrolling:touch;
    }

    .category-nav .container::-webkit-scrollbar{
        display:none;
    }

    .category-nav a{
        flex:0 0 auto;
        white-space:nowrap;
    }

    /* Footer sin columnas comprimidas */
    .footer-main-grid{
        grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    }

    /* Comparador */
    .compare-grid{
        display:flex !important;
        overflow-x:auto;
        gap:1rem;
        scroll-snap-type:x proximity;
        -webkit-overflow-scrolling:touch;
    }

    .compare-column{
        flex:0 0 min(82vw,320px);
        scroll-snap-align:start;
    }
}

/* =========================================================
   CELULARES
   ========================================================= */
@media (max-width:575.98px){

    body{
        font-size:.96rem;
    }

    .container{
        padding-left:14px;
        padding-right:14px;
    }

    .site-header .container{
        padding-left:12px !important;
        padding-right:12px !important;
    }

    .site-header-layout{
        gap:.7rem !important;
    }

    .site-logo{
        max-width:100%;
        overflow:hidden;
    }

    .site-logo-image{
        max-width:min(88vw,330px) !important;
        height:auto !important;
    }

    /* Buscador: botón usable sin achicar demasiado el input */
    .site-search .input-group{
        flex-wrap:nowrap;
        width:100%;
    }

    .site-search .form-control{
        width:1%;
        min-width:0;
        font-size:16px; /* evita zoom automático en iOS */
    }

    .site-search .btn{
        flex:0 0 auto;
        padding-inline:.85rem;
    }

    #resultadosBusqueda{
        max-height:min(56vh,420px) !important;
    }

    .site-navigation-actions{
        font-size:.82rem !important;
        margin-inline:-2px;
        padding-inline:2px;
    }

    .site-navigation-actions .site-nav-link{
        display:inline-flex;
        align-items:center;
        min-height:38px;
        padding:.45rem .62rem;
        border:1px solid #e5e5e1;
        border-radius:999px;
        background:#fff;
    }

    .site-navigation-actions .btn{
        min-height:38px;
        display:inline-flex;
        align-items:center;
    }

    .category-nav .container{
        padding-left:12px;
        padding-right:12px;
    }

    /* Heroes */
    .hero,
    .home-hero,
    .personalized-hero,
    .club-hero,
    .public-list-hero,
    .launches-hero,
    .events-hero{
        border-radius:18px;
    }

    .hero h1,
    .home-hero h1,
    .personalized-hero h1,
    .club-hero h1,
    .public-list-hero h1,
    .launches-hero h1,
    .events-hero h1{
        font-size:clamp(1.9rem,10vw,2.75rem);
        line-height:1.05;
        overflow-wrap:anywhere;
    }

    /* Grillas públicas: una columna limpia en móvil */
    .home-books-grid,
    .category-cards-grid,
    .rewards-grid,
    .lists-grid,
    .launches-grid,
    .events-grid{
        grid-template-columns:1fr !important;
    }

    /* Tarjetas de libros */
    .book-card{
        width:100%;
        max-width:100%;
    }

    .book-card .card-body{
        min-width:0;
    }

    /* Botones y formularios de acciones */
    .d-flex.gap-2 > .form-control,
    .d-flex.gap-2 > .form-select{
        min-width:0;
    }

    form .btn{
        max-width:100%;
    }

    /* Tablas mantienen scroll dentro del componente */
    .table-responsive{
        margin-left:0;
        margin-right:0;
        border-radius:12px;
    }

    .table{
        font-size:.86rem;
    }

    .table th,
    .table td{
        padding:.62rem .55rem;
        white-space:nowrap;
    }

    /* Excepción: columnas descriptivas sí pueden envolver */
    .table td.text-wrap,
    .table th.text-wrap{
        white-space:normal;
        min-width:180px;
    }

    /* Ficha de producto */
    .product-shell{
        width:100%;
        max-width:100%;
    }

    .product-main-image{
        width:100%;
    }

    .product-preorder-card,
    .used-book-panel{
        max-width:100%;
    }

    .price-alert-card{
        max-width:100%;
    }

    /* Footer */
    .footer-main-grid{
        grid-template-columns:1fr !important;
        gap:1.5rem;
    }

    .footer-bottom{
        flex-direction:column;
        align-items:flex-start;
        gap:.5rem;
    }
}

/* =========================================================
   TELÉFONOS MUY PEQUEÑOS
   ========================================================= */
@media (max-width:380px){

    .container{
        padding-left:10px;
        padding-right:10px;
    }

    .site-search .btn{
        padding-inline:.65rem;
        font-size:.85rem;
    }

    .site-navigation-actions .site-nav-link,
    .site-navigation-actions .btn{
        font-size:.78rem;
    }

    .category-nav a{
        font-size:.78rem;
    }

    .product-title{
        font-size:1.9rem !important;
    }

    .product-main-image{
        min-height:285px !important;
        padding:.75rem !important;
    }

    .product-main-image img{
        height:260px !important;
    }
}

/* =========================================================
   RC73-03 — CONSISTENCIA VISUAL Y COMPONENTES PÚBLICOS
   Debe permanecer DESPUÉS de RC73-02.
   ========================================================= */

/* Variables visuales finales del Prototipo 1.0 */
:root{
    --proto-radius-sm:12px;
    --proto-radius-md:18px;
    --proto-radius-lg:24px;
    --proto-border:#e7e7e3;
    --proto-surface:#ffffff;
    --proto-surface-soft:#f7f7f5;
    --proto-text:#171715;
    --proto-muted:#70706b;
    --proto-shadow:0 12px 34px rgba(0,0,0,.055);
    --proto-shadow-hover:0 18px 42px rgba(0,0,0,.085);
}

/* Jerarquía tipográfica coherente */
main h1,
.page-title,
.section-title{
    color:var(--proto-text);
    letter-spacing:-.035em;
}

main h2,
main h3,
main h4{
    color:var(--proto-text);
}

.text-secondary,
.text-muted{
    color:var(--proto-muted) !important;
}

/* Botones públicos */
main .btn,
.site-header .btn,
.category-nav .btn{
    border-radius:999px;
    font-weight:650;
    transition:
        transform .18s ease,
        box-shadow .18s ease,
        background-color .18s ease,
        border-color .18s ease;
}

main .btn:hover,
.site-header .btn:hover{
    transform:translateY(-1px);
}

main .btn:active,
.site-header .btn:active{
    transform:translateY(0);
}

main .btn-dark,
main .btn-primary{
    box-shadow:0 7px 18px rgba(0,0,0,.10);
}

/* Campos y formularios */
main .form-control,
main .form-select,
main .input-group-text{
    border-color:var(--proto-border);
    border-radius:var(--proto-radius-sm);
    min-height:48px;
    background:#fff;
}

main textarea.form-control{
    min-height:120px;
}

main .form-control:focus,
main .form-select:focus{
    border-color:#9b9b95;
    box-shadow:0 0 0 .2rem rgba(0,0,0,.07);
}

main .form-label{
    margin-bottom:.45rem;
    color:#33332f;
    font-size:.88rem;
    font-weight:650;
}

main .form-text{
    color:var(--proto-muted);
}

/* Input groups mantienen radios correctos */
main .input-group > .form-control:not(:last-child),
main .input-group > .form-select:not(:last-child){
    border-top-right-radius:0;
    border-bottom-right-radius:0;
}

main .input-group > .btn:last-child,
main .input-group > .input-group-text:last-child{
    border-top-left-radius:0;
    border-bottom-left-radius:0;
}

/* Alertas */
main .alert{
    border:1px solid transparent;
    border-radius:var(--proto-radius-md);
    padding:1rem 1.15rem;
}

main .alert-success{
    border-color:#cfe7d7;
}

main .alert-warning{
    border-color:#eadfb8;
}

main .alert-danger{
    border-color:#eccaca;
}

main .alert-info{
    border-color:#cddfea;
}

/* Tarjetas generales */
main .card{
    border-color:var(--proto-border);
    border-radius:var(--proto-radius-md);
    overflow:hidden;
}

main .card.shadow-sm,
main .card.border-0{
    box-shadow:var(--proto-shadow) !important;
}

main .card-body{
    min-width:0;
}

/* Tarjetas de libros */
.book-card{
    height:100%;
    border:1px solid var(--proto-border) !important;
    border-radius:var(--proto-radius-md) !important;
    background:var(--proto-surface);
    overflow:hidden;
    box-shadow:0 8px 26px rgba(0,0,0,.045);
    transition:
        transform .2s ease,
        box-shadow .2s ease,
        border-color .2s ease;
}

.book-card:hover{
    transform:translateY(-3px);
    box-shadow:var(--proto-shadow-hover);
    border-color:#d7d7d2 !important;
}

.book-card .book-cover,
.book-card img{
    background:var(--proto-surface-soft);
}

.book-card .card-title,
.book-card h3,
.book-card h4{
    line-height:1.22;
}

.book-card .price,
.book-card .book-price{
    font-weight:780;
    letter-spacing:-.02em;
}

/* Badges */
main .badge{
    padding:.48em .72em;
    border-radius:999px;
    font-weight:650;
}

/* Paginación */
.pagination{
    gap:.35rem;
    flex-wrap:wrap;
}

.pagination .page-link{
    min-width:40px;
    min-height:40px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    border-color:var(--proto-border);
    border-radius:999px !important;
    color:#222;
    font-weight:600;
    box-shadow:none;
}

.pagination .page-link:hover{
    background:#f1f1ee;
    color:#111;
}

.pagination .page-item.active .page-link{
    border-color:#111;
    background:#111;
    color:#fff;
}

/* Breadcrumbs */
.breadcrumb{
    margin-bottom:1.25rem;
    font-size:.88rem;
}

.breadcrumb-item + .breadcrumb-item::before{
    color:#aaa;
}

.breadcrumb a{
    color:#555;
    text-decoration:none;
}

.breadcrumb a:hover{
    color:#111;
}

/* Estados vacíos */
.empty-state,
.mp2-empty,
.no-results,
.search-empty{
    width:100%;
    padding:clamp(1.5rem,5vw,3rem);
    border:1px dashed #d9d9d4;
    border-radius:var(--proto-radius-lg);
    background:var(--proto-surface-soft);
    text-align:center;
    color:var(--proto-muted);
}

.empty-state h2,
.empty-state h3,
.mp2-empty h2,
.mp2-empty h3,
.no-results h2,
.no-results h3{
    color:var(--proto-text);
}

/* List groups / cuenta / historial */
main .list-group{
    border-radius:var(--proto-radius-md);
    overflow:hidden;
}

main .list-group-item{
    padding:.9rem 1rem;
    border-color:var(--proto-border);
}

/* Tablas públicas */
main .table-responsive{
    border:1px solid var(--proto-border);
    border-radius:var(--proto-radius-md);
    background:#fff;
}

main .table > :not(caption) > * > *{
    border-bottom-color:#ecece8;
}

main .table thead th{
    color:#565651;
    font-size:.78rem;
    font-weight:750;
    letter-spacing:.035em;
    text-transform:uppercase;
    background:#fafaf8;
}

/* Secciones */
main section{
    scroll-margin-top:120px;
}

.section-header{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:1rem;
    margin-bottom:1.25rem;
}

.section-header > div{
    min-width:0;
}

.section-header h2,
.section-header h3{
    margin-bottom:.25rem;
}

/* Separación consistente entre bloques */
main > .container > section + section,
main > section + section{
    margin-top:clamp(2rem,5vw,4rem);
}

/* Login / registro / cuenta */
.auth-card,
.login-card,
.register-card,
.account-card{
    border:1px solid var(--proto-border);
    border-radius:var(--proto-radius-lg);
    background:#fff;
    box-shadow:var(--proto-shadow);
}

/* Contacto */
.contact-card,
.contact-form,
.contact-map{
    border-radius:var(--proto-radius-lg);
    overflow:hidden;
}

/* Carrito */
.cart-summary,
.checkout-summary{
    border:1px solid var(--proto-border);
    border-radius:var(--proto-radius-md);
    background:#fff;
    box-shadow:var(--proto-shadow);
}

/* Imágenes sin filtros accidentales */
.book-card img,
.product-main-image img,
.product-thumbnails img,
.site-logo-image{
    opacity:1 !important;
}

/* Acciones que pueden tener varios botones */
.actions-row,
.form-actions{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:.6rem;
}

/* Footer */
.site-footer a{
    text-underline-offset:3px;
}

.site-footer a:hover{
    text-decoration:underline;
}

/* =========================================================
   TABLET
   ========================================================= */
@media (max-width:991.98px){
    .section-header{
        align-items:flex-start;
        flex-direction:column;
    }

    .section-header .btn{
        align-self:flex-start;
    }
}

/* =========================================================
   CELULAR
   ========================================================= */
@media (max-width:575.98px){

    main .btn{
        min-height:44px;
    }

    main .form-control,
    main .form-select{
        min-height:46px;
        font-size:16px;
    }

    main .card{
        border-radius:16px;
    }

    main .card-body{
        padding:1rem;
    }

    .book-card:hover{
        transform:none;
    }

    .section-header{
        margin-bottom:1rem;
    }

    .section-header .btn,
    .actions-row .btn,
    .form-actions .btn{
        width:100%;
    }

    .actions-row,
    .form-actions{
        align-items:stretch;
        flex-direction:column;
    }

    .pagination{
        justify-content:center;
    }

    .pagination .page-link{
        min-width:38px;
        min-height:38px;
        padding:.4rem .65rem;
    }

    main .alert{
        padding:.85rem .95rem;
    }

    .auth-card,
    .login-card,
    .register-card,
    .account-card{
        border-radius:18px;
    }

    .cart-summary,
    .checkout-summary{
        border-radius:16px;
    }
}

/* =========================================================
   RC73-04 — ACCESIBILIDAD Y UX FINAL
   Debe permanecer después de RC73-03.
   ========================================================= */

/* Foco visible y consistente */
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible{
    outline:3px solid rgba(17,17,17,.28);
    outline-offset:3px;
    box-shadow:none !important;
}

/* Enlaces dentro del contenido: no depender solo del color */
main p a,
main li a:not(.btn),
main td a:not(.btn){
    text-decoration-thickness:1px;
    text-underline-offset:3px;
}

main p a:hover,
main li a:not(.btn):hover,
main td a:not(.btn):hover{
    text-decoration-thickness:2px;
}

/* Áreas táctiles mínimas */
.site-navigation-actions a,
.category-nav a,
main .btn,
main .page-link,
.site-header button,
.site-header .btn{
    min-height:44px;
}

/* Iconos/botones sin texto */
button[aria-label],
a[aria-label]{
    display:inline-flex;
    align-items:center;
    justify-content:center;
}

/* Cursor coherente */
button,
.btn,
select,
input[type="checkbox"],
input[type="radio"],
label[for]{
    cursor:pointer;
}

button:disabled,
.btn.disabled,
.btn:disabled,
input:disabled,
select:disabled,
textarea:disabled{
    cursor:not-allowed;
    opacity:.65;
}

/* Estados de formulario */
main .form-control[aria-invalid="true"],
main .form-select[aria-invalid="true"],
main .form-control.is-invalid,
main .form-select.is-invalid{
    border-color:#b42318;
}

main .invalid-feedback,
main .form-error{
    color:#8f1d14;
    font-weight:600;
}

main .form-control:disabled,
main .form-select:disabled{
    background:#f0f0ed;
    color:#666;
}

/* Checkboxes/radios más cómodos */
main .form-check-input{
    width:1.15em;
    height:1.15em;
    margin-top:.2em;
}

main .form-check-label{
    line-height:1.45;
}

/* Mensajes y badges legibles */
main .badge{
    line-height:1.2;
}

main .alert{
    line-height:1.55;
}

/* Scroll horizontal señalizado sin romper accesibilidad */
.table-responsive{
    scrollbar-width:thin;
}

.table-responsive:focus-within{
    outline:2px solid rgba(17,17,17,.12);
    outline-offset:2px;
}

/* Buscador */
#resultadosBusqueda{
    overscroll-behavior:contain;
}

#resultadosBusqueda a{
    min-height:54px;
}

#resultadosBusqueda a:focus-visible{
    outline-offset:-3px;
}

/* Mejor lectura */
main p,
main li{
    line-height:1.65;
}

/* Evitar líneas demasiado largas en contenido textual */
main .prose,
main .article-content,
main .content-text,
main .product-section p{
    max-width:75ch;
}

/* Placeholder visible sin competir con el texto real */
::placeholder{
    color:#868681 !important;
    opacity:1;
}

/* Skip-link: invisible hasta recibir foco */
.skip-link{
    position:fixed;
    top:8px;
    left:8px;
    z-index:99999;
    transform:translateY(-160%);
    padding:.7rem 1rem;
    border-radius:10px;
    background:#111;
    color:#fff;
    text-decoration:none;
    font-weight:700;
    transition:transform .15s ease;
}

.skip-link:focus{
    transform:translateY(0);
    color:#fff;
}

/* =========================================================
   REDUCCIÓN DE MOVIMIENTO
   ========================================================= */
@media (prefers-reduced-motion: reduce){
    *,
    *::before,
    *::after{
        scroll-behavior:auto !important;
        animation-duration:.001ms !important;
        animation-iteration-count:1 !important;
        transition-duration:.001ms !important;
    }

    .book-card:hover,
    main .btn:hover,
    .site-header .btn:hover,
    .site-logo:hover .site-logo-image{
        transform:none !important;
    }
}

/* =========================================================
   CONTRASTE FORZADO / HIGH CONTRAST
   ========================================================= */
@media (forced-colors: active){
    .btn,
    .card,
    .alert,
    .form-control,
    .form-select,
    .pagination .page-link{
        forced-color-adjust:auto;
    }

    a:focus-visible,
    button:focus-visible,
    input:focus-visible,
    select:focus-visible,
    textarea:focus-visible{
        outline:2px solid CanvasText;
    }
}

/* =========================================================
   CELULARES
   ========================================================= */
@media (max-width:575.98px){
    .site-navigation-actions a,
    .category-nav a,
    main .btn,
    main .page-link{
        min-height:44px;
    }

    main label,
    main .form-label{
        font-size:.92rem;
    }

    main .form-text,
    main .invalid-feedback{
        font-size:.84rem;
    }
}


/* =========================================================
   PROTOTIPO 1.0 STABLE — CORRECCIÓN VISUAL DEL COMPARADOR
   Aislada a comparar.php. No modifica catálogo ni ficha.
   ========================================================= */

.compare-page .compare-grid{
    width:100%;
    max-width:100%;
    display:grid;
    grid-template-columns:repeat(var(--compare-columns), minmax(0,1fr));
    gap:1.25rem;
    align-items:stretch;
}

.compare-page .compare-column{
    min-width:0;
    height:100%;
    display:flex;
    flex-direction:column;
    padding:1.25rem;
    overflow:hidden;
}

.compare-page .compare-cover{
    width:100%;
    height:auto;
    aspect-ratio:2 / 3;
    display:flex;
    align-items:center;
    justify-content:center;
    margin:0 0 1.15rem;
    padding:1rem;
    overflow:hidden;
    border-radius:16px;
    background:#f7f7f5;
}

.compare-page .compare-cover img{
    display:block;
    width:100% !important;
    height:100% !important;
    max-width:100% !important;
    max-height:100% !important;
    object-fit:contain !important;
    object-position:center center !important;
    filter:none !important;
    opacity:1 !important;
}

.compare-page .compare-column h2{
    min-height:2.6em;
    margin-bottom:.35rem;
    line-height:1.3;
    overflow-wrap:anywhere;
}

.compare-page .compare-column > p.small{
    min-height:1.5em;
    margin-bottom:.35rem;
}

.compare-page .compare-price{
    margin:.7rem 0 1rem;
}

.compare-page .compare-specs{
    width:100%;
    grid-template-columns:minmax(82px,100px) minmax(0,1fr);
    flex:1 0 auto;
}

.compare-page .compare-column > .btn{
    margin-top:auto;
}

@media (max-width:1199.98px){
    .compare-page .compare-grid{
        display:grid !important;
        grid-template-columns:repeat(2,minmax(0,1fr));
        overflow:visible;
    }
}

@media (max-width:767.98px){
    .compare-page .compare-grid{
        display:grid !important;
        grid-template-columns:1fr;
        overflow:visible;
    }

    .compare-page .compare-column{
        width:100%;
        max-width:520px;
        margin-inline:auto;
        flex:none;
    }

    .compare-page .compare-cover{
        max-width:340px;
        margin-left:auto;
        margin-right:auto;
    }

    .compare-page .compare-column h2,
    .compare-page .compare-column > p.small{
        min-height:0;
    }
}

@media (max-width:420px){
    .compare-page .compare-column{
        padding:1rem;
    }

    .compare-page .compare-cover{
        max-width:280px;
        padding:.75rem;
    }

    .compare-page .compare-specs{
        grid-template-columns:82px minmax(0,1fr);
        font-size:.84rem;
    }
}
