/* Galo — estilos propios. Variables centrales para personalizar el diseño. */
.galo-cart-dialog,
.galo-cart-dialog::backdrop,
.galo-cart-page,
.galo-cart-trigger {
    --galo-cart-ink: #061130;
    --galo-cart-paper: #fff7f4;
    --galo-cart-border: #d3bfbc;
    --galo-cart-focus: #576697;
    --galo-cart-width: 470px;
    --galo-cart-space: 24px;
    --galo-cart-duration: .28s;
    --galo-cart-easing: cubic-bezier(.22, 1, .36, 1);
    color: var(--galo-cart-ink);
    font-family: "Nunito Sans", Arial, sans-serif;
}
.galo-cart-trigger {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    min-width: 36px;
    min-height: 36px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 3px;
    background: transparent;
    text-decoration: none;
    line-height: 0;
    transition: background-color .15s ease;
}
.galo-cart-trigger svg { width: 16px; height: 16px; display: block; margin: 0; pointer-events: none; }
.galo-cart-trigger:hover, .galo-cart-trigger:focus { color: var(--galo-cart-ink); }
.galo-cart-badge {
    position: absolute;
    top: -2px;
    right: -4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 17px;
    height: 17px;
    min-width: 17px;
    margin: 0;
    padding: 0;
    background: #be8a41;
    color: #061130;
    border-radius: 50%;
    font-size: 10px;
    font-weight: 800;
    line-height: 1;
    text-align: center;
    pointer-events: none;
}
.galo-cart-dialog:not([open]),
.galo-cart-dialog [hidden],
.galo-cart-page [hidden],
.galo-cart-trigger [hidden] { display: none !important; }
.galo-cart-dialog {
    position: fixed;
    inset: 0 0 0 auto;
    width: min(100%, var(--galo-cart-width));
    max-width: 100%;
    height: 100vh;
    height: 100dvh;
    max-height: 100vh;
    max-height: 100dvh;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: var(--galo-cart-paper);
    box-shadow: -15px 0 40px #06113029;
    overflow: hidden;
    font-size: 14px;
    line-height: 1.5;
    overscroll-behavior: contain;
    opacity: 0;
    transform: translateX(100%);
    transition: transform var(--galo-cart-duration) var(--galo-cart-easing), opacity var(--galo-cart-duration) ease;
}
.galo-cart-dialog.galo-cart-visible { opacity: 1; transform: translateX(0); }
.galo-cart-dialog::backdrop { background: #061130a6; opacity: 0; transition: opacity var(--galo-cart-duration) ease; }
.galo-cart-dialog.galo-cart-visible::backdrop { opacity: 1; }
.galo-cart-dialog *, .galo-cart-dialog *::before, .galo-cart-dialog *::after { box-sizing: border-box; }
.galo-cart-shell { height: 100%; display: flex; flex-direction: column; min-height: 0; }
.galo-cart-header {
    position: relative;
    flex: 0 0 auto;
    padding: 28px var(--galo-cart-space) 24px;
    border-bottom: 1px solid var(--galo-cart-border);
}
.galo-cart-dialog .galo-cart-kicker {
    margin: 0 40px 8px 0;
    color: var(--galo-cart-ink);
    font-size: 10px;
    font-weight: 800;
    line-height: 1.5;
    letter-spacing: .18em;
    text-transform: uppercase;
}
.galo-cart-dialog #galo-cart-title {
    margin: 0;
    padding-right: 40px;
    color: var(--galo-cart-ink);
    font-family: "Cormorant Garamond", Georgia, serif;
    font-size: 2.25rem;
    font-weight: 400;
    line-height: .91em;
    letter-spacing: 0;
    text-transform: none;
}
.galo-cart-title-count { font-size: 1.5rem; white-space: nowrap; }
dialog.galo-cart-dialog a { color: var(--galo-cart-ink); text-decoration: none; }
dialog.galo-cart-dialog button,
dialog.galo-cart-dialog button:hover,
dialog.galo-cart-dialog button:focus {
    appearance: none;
    font-family: inherit;
    font-size: inherit;
    font-weight: 400;
    line-height: 1;
    letter-spacing: 0;
    text-transform: none;
    color: var(--galo-cart-ink);
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    cursor: pointer;
    margin: 0;
    transition: background-color .15s ease, color .15s ease;
}
.galo-cart-dialog button:disabled { opacity: .4; cursor: default; }
.galo-cart-dialog .galo-cart-close { position: absolute; top: 46px; right: 18px; width: 36px; height: 36px; padding: 6px; }
.galo-cart-dialog svg { display: block; width: 20px; height: 20px; pointer-events: none; }
.galo-cart-dialog .galo-cart-close svg { width: 24px; height: 24px; }
.galo-cart-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 16px var(--galo-cart-space); overscroll-behavior: contain; }
.galo-cart-status { margin: 0; min-height: 0; font-size: 12px; }
.galo-cart-status:not(:empty) { margin: 0 0 12px; }
.galo-cart-error { margin: 0 0 16px; padding: 12px; border: 1px solid #9a3940; color: #7b272d; }
.galo-cart-error p { margin: 0 0 8px; }
.galo-cart-dialog .galo-cart-retry { padding: 4px 0; text-decoration: underline; }
.galo-cart-items { list-style: none; margin: 0; padding: 0; }
.galo-cart-item { display: grid; grid-template-columns: 80px minmax(0, 1fr) 36px; gap: 16px; align-items: start; margin: 0; padding: 20px 0; border-bottom: 1px solid var(--galo-cart-border); }
.galo-cart-item:last-child { border-bottom: 0; }
.galo-cart-image { display: block; aspect-ratio: 5 / 7; background: #f9eeea; overflow: hidden; }
.galo-cart-image img { display: block; width: 100%; height: 100%; object-fit: contain; }
.galo-cart-details { min-width: 0; }
.galo-cart-name { display: block; color: var(--galo-cart-ink); text-decoration: none; font-size: 16px; font-weight: 600; line-height: 1.375; overflow-wrap: anywhere; }
.galo-cart-variation { font-size: 12px; margin: 4px 0 0; }
.galo-cart-item-price { margin: 8px 0 12px; font-size: 15px; }
.galo-cart-quantity { display: inline-flex; align-items: center; border: 1px solid var(--galo-cart-border); min-width: 116px; height: 44px; max-width: 100%; }
.galo-cart-dialog .galo-cart-quantity button { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 42px; padding: 0; }
.galo-cart-quantity output { flex: 1; min-width: 36px; padding: 0 4px; text-align: center; font-size: 15px; }
.galo-cart-fixed-quantity { font-size: 13px; margin: 0; }
dialog.galo-cart-dialog button.galo-cart-remove { align-self: end; width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; padding: 0; border-radius: 3px; transition: background-color .15s ease; }
.galo-cart-dialog .galo-cart-remove svg { width: 16px; height: 16px; color: #061130; }
.galo-cart-empty { text-align: center; }
.galo-cart-dialog .galo-cart-body-empty { padding: 24px; }
.galo-cart-dialog .galo-cart-empty { padding: 80px 0 0; }
.galo-cart-dialog .galo-cart-empty > svg { width: 40px; height: 40px; margin: 0 auto 20px; color: #061130; }
.galo-cart-dialog .galo-cart-empty-title, .galo-cart-page .galo-cart-empty-title { margin: 0; padding: 0; color: #061130; font-family: "Cormorant Garamond", Georgia, serif; font-size: 2.25rem; font-weight: 400; line-height: .91; letter-spacing: 0; text-transform: none; }
.galo-cart-dialog .galo-cart-empty-description { margin: 12px 0 0; color: #575e6c; font-family: "Nunito Sans", Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 1.4; }
/* Un enlace propio evita que el reset de botones en hover modifique su margen. */
.galo-cart-dialog a.galo-cart-empty-action, .galo-cart-page a.galo-cart-empty-action { display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; vertical-align: top; max-width: 100%; height: 36px; min-height: 36px; margin: 28px 0 0; padding: 8px 16px; border: 0; border-radius: 3px; background: #061130; color: #fff6f4; font-family: "Nunito Sans", Arial, sans-serif; font-size: 14px; font-weight: 500; line-height: 1.4; letter-spacing: 0; text-transform: none; text-decoration: none; box-shadow: none; transform: none; cursor: pointer; transition: background-color .15s ease; }
.galo-cart-footer { flex: 0 0 auto; border-top: 1px solid var(--galo-cart-border); padding: 20px var(--galo-cart-space) max(24px, env(safe-area-inset-bottom)); background: var(--galo-cart-paper); }
.galo-cart-subtotal { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; margin: 0 0 12px; font-size: 15px; font-weight: 600; }
.galo-cart-subtotal strong { font-weight: 700; }
.galo-cart-action { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 8px 16px; border: 1px solid var(--galo-cart-ink); border-radius: 3px; text-decoration: none; color: var(--galo-cart-ink); font-size: 14px; font-weight: 600; line-height: 1.4; transition: background-color .15s ease, color .15s ease; }
.galo-cart-dialog .galo-cart-checkout { background: var(--galo-cart-ink); color: #fff6f4; }
.galo-cart-dialog .galo-cart-checkout svg { width: 16px; height: 16px; }
.galo-cart-view { margin-top: 8px; background: transparent; }
.galo-cart-action[aria-disabled="true"] { opacity: .5; cursor: default; }
.galo-cart-dialog :focus-visible, .galo-cart-trigger:focus-visible { outline: 2px solid var(--galo-cart-focus); outline-offset: 2px; }
html.galo-cart-modal-open { overflow: hidden; }
@media (hover: hover) and (pointer: fine) {
    .galo-cart-trigger:hover { background: #f7e7e3; }
    .galo-cart-dialog .galo-cart-view:hover { background: var(--galo-cart-ink); color: #fff6f4; }
    .galo-cart-dialog .galo-cart-checkout:not([aria-disabled="true"]):hover { background: #172546; color: #fff6f4; }
    .galo-cart-dialog button:not(:disabled):hover { background: #f7e7e3; }
    .galo-cart-dialog a.galo-cart-empty-action:hover, .galo-cart-page a.galo-cart-empty-action:hover { background: #061130e6; color: #fff6f4; text-decoration: none; }
}
@media (max-width: 380px) {
    .galo-cart-dialog { --galo-cart-space: 16px; }
    .galo-cart-item { grid-template-columns: 64px minmax(0, 1fr) 36px; gap: 12px; }
    .galo-cart-name { font-size: 14px; }
}
@media (max-height: 500px) {
    .galo-cart-header { padding-top: 16px; padding-bottom: 16px; }
    .galo-cart-kicker { display: none; }
    .galo-cart-dialog .galo-cart-close { top: 16px; }
    .galo-cart-footer { padding-top: 12px; padding-bottom: 12px; }
}
@media (prefers-reduced-motion: reduce) {
    .galo-cart-dialog, .galo-cart-dialog::backdrop { transition: none; }
}

/* Página: el contenedor exterior no aporta margen ni padding. */
.galo-cart-page { width: 100%; min-width: 0; margin: 0; padding: 0; font-size: 16px; line-height: 1.5; }
.galo-cart-page *, .galo-cart-page *::before, .galo-cart-page *::after { box-sizing: border-box; }
.galo-cart-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 48px; align-items: start; margin: 0; padding: 0; }
.galo-cart-page .galo-cart-items { min-width: 0; margin: 0; padding: 0; }
.galo-cart-page .galo-cart-item { grid-template-columns: 128px minmax(0, 1fr); gap: 20px; padding: 24px 0; border: 0; border-top: 1px solid #d3bfbc; }
.galo-cart-page .galo-cart-image { width: 128px; height: 160px; aspect-ratio: auto; }
/* La categoría comparte la línea de 24 px del contenedor, como en Lovable. */
.galo-cart-page .galo-cart-category { display: inline; margin: 0; color: #575e6c; text-transform: uppercase; letter-spacing: .18em; font-size: 10px; font-weight: 800; font-family: "Nunito Sans", Arial, sans-serif; line-height: 1.5; }
.galo-cart-page .galo-cart-name { margin: 8px 0 0; font-family: "Cormorant Garamond", Georgia, serif; letter-spacing: 0; font-weight: 400; line-height: .91; font-size: 2.25rem; color: #061130; text-decoration: none; }
.galo-cart-page .galo-cart-details > .galo-cart-name:first-child { margin-top: 0; }
.galo-cart-page .galo-cart-item-price { margin: 12px 0 0; font-family: "Nunito Sans", Arial, sans-serif; color: #061130; font-weight: bolder; line-height: 1.5; font-size: 16px; }
.galo-cart-product-actions { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-top: 20px; }
.galo-cart-page .galo-cart-quantity { flex: 0 0 auto; margin: 0; }
.galo-cart-page .galo-cart-quantity output { font-size: 16px; }
.galo-cart-page button, .galo-cart-page button:hover, .galo-cart-page button:focus { appearance: none; margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; color: #061130; font: inherit; text-transform: none; letter-spacing: 0; line-height: 1; box-shadow: none; cursor: pointer; transition: background-color .15s ease, color .15s ease; }
.galo-cart-page button:disabled { opacity: .4; cursor: default; }
.galo-cart-page svg { display: block; width: 16px; height: 16px; pointer-events: none; }
.galo-cart-page .galo-cart-quantity button { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 42px; padding: 0; }
.galo-cart-page button.galo-cart-remove { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 36px; width: 36px; height: 36px; margin-left: auto; padding: 0; border-radius: 3px; transition: background-color .15s ease; }
.galo-cart-page .galo-cart-remove svg { width: 16px; height: 16px; color: #061130; }
.galo-cart-page .galo-cart-fixed-quantity { margin: 0; font-size: 16px; }
.galo-cart-summary { min-width: 0; margin: 0; padding: 20px 0 0; border-top: 1px solid #061130; }
.galo-cart-page .galo-cart-summary-title { margin: 0; padding: 0; color: #061130; font-family: "Cormorant Garamond", Georgia, serif; font-size: 2.25rem; font-weight: 400; line-height: .91; letter-spacing: 0; }
.galo-cart-summary-totals { display: grid; gap: 12px; padding: 28px 0; border-bottom: 1px solid #d3bfbc; }
.galo-cart-total-row { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; color: #061130; font-family: "Nunito Sans", Arial, sans-serif; font-size: 16px; line-height: 1.5; }
.galo-cart-total-row > span { min-width: 0; overflow-wrap: anywhere; }
.galo-cart-total-row strong { flex-shrink: 0; margin: 0; font-size: 16px; font-weight: bolder; line-height: 1.5; }
.galo-cart-grand-total > span { font-weight: 700; }
.galo-cart-page .galo-cart-action { font-family: "Nunito Sans", Arial, sans-serif; text-decoration: none; font-size: 14px; font-weight: 500; gap: 8px; height: 48px; }
.galo-cart-page .galo-cart-checkout { width: 100%; margin-top: 28px; background: #061130; color: #fff6f4; border-radius: 3px; }
.galo-cart-page .galo-cart-action svg { width: 16px; height: 16px; }
.galo-cart-page .galo-cart-shipping-note { margin: 12px 0 0; color: #575e6c; font-size: 12px; line-height: 1.5; }
.galo-cart-page .galo-cart-empty { margin: 0; padding: 0; text-align: left; }
.galo-cart-page .galo-cart-empty-title { font-size: 3rem; }
.galo-cart-page a.galo-cart-empty-action { margin-top: 32px; }
dialog.galo-cart-dialog .galo-cart-name:hover, .galo-cart-page .galo-cart-name:hover { color: #061130; text-decoration: none; }
.galo-cart-page .galo-cart-error { margin: 0 0 20px; }
.galo-cart-error-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 20px; }
.galo-cart-page .galo-cart-retry, .galo-cart-page .galo-cart-error-actions a { padding: 4px 0; color: #061130; font-size: 13px; text-decoration: underline; }
.galo-cart-coupon { margin-top: 16px; color: #061130; font-size: 13px; }
.galo-cart-coupon > summary { width: fit-content; cursor: pointer; }
.galo-cart-coupon-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; margin: 12px 0 0; }
.galo-cart-coupon-form label { display: block; min-width: 0; }
.galo-cart-page .galo-cart-coupon-form input { display: block; width: 100%; min-width: 0; height: 40px; padding: 8px; border: 1px solid #d3bfbc; border-radius: 0; background: transparent; color: #061130; font: inherit; }
.galo-cart-page .galo-cart-coupon-form button { height: 40px; padding: 8px 12px; border: 1px solid #061130; border-radius: 3px; font-size: 13px; }
.galo-cart-page .galo-cart-remove-coupon { display: block; padding: 3px 0; color: #575e6c; font-size: 12px; line-height: 1.5; text-decoration: underline; }
.galo-cart-page :focus-visible { outline: 2px solid #576697; outline-offset: 2px; }
.galo-cart-sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
@media (hover: hover) and (pointer: fine) {
    .galo-cart-page button:not(:disabled):hover { background: #f7e7e3; }
    .galo-cart-page .galo-cart-checkout:not([aria-disabled="true"]):hover { background: #172546; color: #fff6f4; }
}
@media (max-width: 1024px) { .galo-cart-layout { grid-template-columns: minmax(0, 1fr); gap: 48px; } }
@media (max-width: 767px) {
    .galo-cart-page .galo-cart-item { grid-template-columns: 96px minmax(0, 1fr); }
    .galo-cart-page .galo-cart-image { width: 96px; height: 128px; }
    .galo-cart-page .galo-cart-name { font-size: 1.5rem; }
}
