/* ============================================================
   AMOO · CESTA Y CHECKOUT · DESKTOP / TABLET
============================================================ */

.main_cesta {
    width: min(100%, var(--page-max));
    margin: 0 auto;
    padding: 0 1rem 2rem;
}


/* ============================================================
   ESTRUCTURA GENERAL
============================================================ */

.cart-layout {
    display: grid;
    grid-template-columns:
        minmax(0, 1fr)
        19rem;

    align-items: start;
    gap: 2rem;
}

.cart-main {
    min-width: 0;
}


/* ============================================================
   TÍTULO
============================================================ */

.cart-main > h1 {
    width: 100%;

    margin: 0 0 1.35rem;
    padding: .58rem 1.25rem;

    border-radius: 999px;

    background: var(--amoo-primary);
    color: var(--amoo-on-primary, #ffffff);

    font-size: 1.18rem;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: .015em;
    text-align: left;
}


/* ============================================================
   LISTADO DE PRODUCTOS
============================================================ */

.cart-table,
.cart-table tbody {
    display: block;

    width: 100%;
    margin: 0;
    padding: 0;

    border: 0;
    border-collapse: separate;
}

.cart-item {
    position: relative;

    width: 100%;

    display: grid;
    grid-template-columns:
        7.2rem
        minmax(0, 1fr)
        max-content
        2rem;

    grid-template-rows:
        auto
        auto;

    grid-template-areas:
        "photo product people remove"
        "photo product price  remove";

    column-gap: 1rem;
    row-gap: .3rem;

    margin: 0 0 .8rem;
    padding: .85rem .9rem;

    border: 1px solid var(--amoo-border);
    border-radius: 1rem;

    background:
        color-mix(
            in srgb,
            var(--amoo-primary) 1.8%,
            var(--amoo-surface)
        );

    box-shadow:
        0 2px 8px rgba(0, 0, 0, .025),
        0 8px 22px rgba(0, 0, 0, .045);
}

.cart-table td {
    display: block;

    width: auto;
    min-width: 0;

    padding: 0;
    vertical-align: top;
}


/* ============================================================
   FOTO
============================================================ */

.cart-item__photo {
    grid-area: photo;

    width: 7.2rem;
}

.cart-item__photo picture {
    display: block;
}

.cart-item__photo img {
    display: block;

    width: 100%;
    aspect-ratio: 16 / 10;

    object-fit: cover;

    border-radius:
        calc(var(--amoo-radius) - 8px);
}


/* ============================================================
   INFORMACIÓN DEL PRODUCTO
============================================================ */

.cart-item__product {
    grid-area: product;

    min-width: 0;
}

.cart-item__product h2 {
    margin: 0 0 .38rem;
    padding: 0;

    color: var(--amoo-text);

    font-size: 1.07rem;
    font-weight: 600;
    line-height: 1.25;
}

.cart-item__product p {
    margin: .18rem 0;
    padding: 0;

    color: var(--amoo-muted);

    font-size: .87rem;
    line-height: 1.35;
}

.cart-item__product strong {
    color: var(--amoo-text);
    font-weight: 500;
}


/* ============================================================
   PERSONAS Y PRECIO DE LÍNEA
============================================================ */

.cart-item__people {
    grid-area: people;

    align-self: start;

    padding-top: .1rem;

    color: var(--amoo-text);

    font-size: .88rem;
    line-height: 1.35;
    white-space: nowrap;
}

.cart-item__price {
    grid-area: price;

    align-self: end;

    color: var(--amoo-text);

    font-size: 1.03rem;
    line-height: 1.2;
    text-align: right;
    white-space: nowrap;
}

.cart-item__price strong {
    font-weight: 600;
}


/* ============================================================
   ELIMINAR LÍNEA
============================================================ */

.cart-item__remove {
    grid-area: remove;

    justify-self: end;
    align-self: start;
}

.cart-item__remove a:link,
.cart-item__remove a:visited {
    width: 1.65rem;
    height: 1.65rem;

    display: grid;
    place-items: center;

    border: 1px solid
        color-mix(
            in srgb,
            #d9534f 38%,
            var(--amoo-border)
        );

    border-radius: 50%;

    background: var(--amoo-surface);
    color: #d9534f;

    font-size: .86rem;
    line-height: 1;
    text-align: center;
    text-decoration: none;

    transition:
        border-color .16s ease,
        background-color .16s ease,
        transform .16s ease;
}

.cart-item__remove a:hover {
    border-color: #d9534f;

    background:
        color-mix(
            in srgb,
            #d9534f 7%,
            var(--amoo-surface)
        );

    color: #d9534f;
    text-decoration: none;
}

.cart-item__remove a:active {
    transform: scale(.94);
}


/* ============================================================
   TOTAL Y SEGUIR MIRANDO
============================================================ */

.cart-after-lines {
    margin: .9rem 0 1.4rem;
}

.cart-total-line {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;

    padding: .75rem .9rem;

    border: 1px solid var(--amoo-border);
    border-radius: .85rem;

    background:
        color-mix(
            in srgb,
            var(--amoo-primary) 2.5%,
            var(--amoo-surface)
        );
}

.cart-continue,
.cart-continue:visited {
    color: var(--amoo-muted);

    font-size: .87rem;
    font-weight: 500;
    text-decoration: none;
}

.cart-continue:hover {
    color: var(--amoo-primary);
    text-decoration: none;
}

.cart-grand-total {
    display: inline-flex;
    align-items: baseline;
    gap: .55rem;

    white-space: nowrap;
}

.cart-grand-total span {
    color: var(--amoo-text);

    font-size: .92rem;
}

.cart-grand-total strong {
    color: var(--amoo-text);

    font-size: 1.5rem;
    font-weight: 600;
    line-height: 1;
}


/* ============================================================
   CÓDIGO PROMOCIONAL
============================================================ */

.cart-code-line {
    width: min(100%, 24rem);

    display: grid;
    grid-template-columns:
        auto
        minmax(5rem, 1fr)
        auto;

    align-items: center;
    gap: .55rem;

    margin-top: .75rem;
    padding: .58rem .65rem .58rem .8rem;

    border: 1px solid var(--amoo-border);
    border-radius: 999px;

    background:
        color-mix(
            in srgb,
            var(--amoo-primary) 4%,
            var(--amoo-surface)
        );
}

.cart-code-line label {
    color: var(--amoo-muted);

    font-size: .84rem;
    line-height: 1.2;
    white-space: nowrap;
}

.cart-code-line input {
    width: 100%;
    min-width: 0;

    padding: .28rem .1rem;

    border: 0;
    border-bottom: 1px solid var(--amoo-border);
    border-radius: 0;

    background: transparent;
    color: var(--amoo-text);

    font: inherit;
    font-size: .9rem;
}

.cart-code-line input:focus {
    outline: none;
    border-bottom-color: var(--amoo-primary);
}

.cart-code-line button {
    min-height: 2.15rem;

    padding: .4rem .78rem;

    border: 1px solid var(--amoo-primary);
    border-radius: 999px;

    background: var(--amoo-primary);
    color: var(--amoo-on-primary, #ffffff);

    font: inherit;
    font-size: .84rem;
    font-weight: 600;

    cursor: pointer;

    transition:
        transform .16s ease,
        box-shadow .16s ease;
}

.cart-code-line button:hover {
    box-shadow:
        0 5px 14px
        color-mix(
            in srgb,
            var(--amoo-primary) 22%,
            transparent
        );
}

.cart-code-line button:active {
    transform: scale(.97);
}


/* ============================================================
   FORMULARIO DEL COMPRADOR
============================================================ */

.checkout-form {
    margin-top: 1.1rem;
}

.checkout-form__fields_out {
    padding: 1rem 1.15rem .8rem;

    border: 1px solid var(--amoo-border);
    border-radius: 0 1rem 1rem 0;

    background:
        color-mix(
            in srgb,
            var(--amoo-primary) 2.2%,
            var(--amoo-surface)
        );

    box-shadow:
        0 2px 8px rgba(0, 0, 0, .02),
        0 8px 22px rgba(0, 0, 0, .035);
}

.checkout-form__fields_out > h2 {
    margin: 0 0 .8rem;
    padding: 0;

    color: var(--amoo-text);

    font-size: 1.08rem;
    font-weight: 600;
    line-height: 1.25;
}

.checkout-form__fields {
    display: grid;
    grid-template-columns:
        minmax(0, 1fr)
        minmax(0, 1fr);

    align-items: start;
    gap: .8rem 2rem;
}


/* ============================================================
   CAMPOS
============================================================ */

.checkout-field {
    min-width: 0;

    display: grid;
    gap: .28rem;

    margin: 0;
}

.checkout-field__label {
    color: var(--amoo-text);

    font-size: .88rem;
    font-weight: 500;
    line-height: 1.3;
}

.checkout-field__control {
    position: relative;

    min-width: 0;
}

.checkout-field__control input,
.checkout-phone select,
.checkout-field textarea {
    width: 100%;
    min-width: 0;

    border: 1px solid var(--amoo-border);
    border-radius: .72rem;

    background: var(--amoo-surface);
    color: var(--amoo-text);

    font: inherit;
    font-size: .9rem;

    transition:
        border-color .16s ease,
        box-shadow .16s ease,
        background-color .16s ease;
}

.checkout-field__control input {
    min-height: 2.65rem;

    padding: .58rem 2.2rem .58rem .75rem;
}

.checkout-field textarea {
    min-height: 5rem;

    padding: .65rem .75rem;

    resize: vertical;
}

.checkout-phone select:focus,
.checkout-field textarea:focus,
.checkout-field__control input:focus {
    outline: none;

    border-color: var(--amoo-primary);

    box-shadow:
        inset 0 1px 3px rgba(0, 0, 0, .025),
        0 0 0 3px
        color-mix(
            in srgb,
            var(--amoo-primary) 12%,
            transparent
        );
}


/* ============================================================
   TELÉFONO
============================================================ */

.checkout-phone {
    min-width: 0;

    display: grid;
    grid-template-columns:
        minmax(9.5rem, 42%)
        minmax(0, 1fr);

    align-items: start;
    gap: .5rem;
}

.checkout-phone select {
    height: 2.65rem;

    padding: 0 .65rem;

    overflow: hidden;

    text-overflow: ellipsis;
    white-space: nowrap;
}

.checkout-phone .checkout-field__control,
.checkout-phone input {
    width: 100%;
    min-width: 0;
}


/* ============================================================
   VALIDACIÓN DEL COPILOTO
============================================================ */

.checkout-field__state {
    position: absolute;

    top: 50%;
    right: .7rem;

    transform: translateY(-50%);

    font-weight: 600;
}

.checkout-field__control[data-state="ok"]
.checkout-field__state {
    color: #28a745;
    font-size: 1.3rem;
}

.checkout-field__control[data-state="warning"]
.checkout-field__state {
    color: #d99500;
    font-size: 1.35rem;
}

.checkout-field__control[data-state="error"]
.checkout-field__state {
    color: #d9534f;
    font-size: 1.35rem;
}

.checkout-field__control[data-state="ok"] input {
    border-color: #28a745;
}

.checkout-field__control[data-state="warning"] input {
    border-color: #d99500;
}

.checkout-field__control[data-state="error"] input {
    border-color: #d9534f;
}

.checkout-field__message {
    min-height: 1.15rem;

    color: var(--amoo-muted);

    font-size: .78rem;
    line-height: 1.3;

    transition:
        opacity .22s ease,
        transform .22s ease;
}

.checkout-field__message[hidden] {
    display: block !important;

    visibility: hidden;
    opacity: 0;
    pointer-events: none;
}

.checkout-field__message[data-mode="soft"] {
    color: var(--amoo-muted);
}

.checkout-field__message[data-mode="final"] {
    width: fit-content;
    max-width: 100%;

    padding: .22rem .65rem;

    border: 1px solid
        color-mix(
            in srgb,
            var(--amoo-primary) 18%,
            var(--amoo-border)
        );

    border-radius: .65rem;

    background:
        color-mix(
            in srgb,
            var(--amoo-primary) 7%,
            var(--amoo-surface)
        );

    color: var(--amoo-text);

    font-size: .8rem;
}

.checkout-field__message[data-hiding="1"] {
    opacity: 0;
    transform: translateY(-.15rem);
}

.checkout-message__accept {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    margin-left: .45rem;
    padding: .18rem .6rem;

    border: 1px solid var(--amoo-primary);
    border-radius: 999px;

    background: var(--amoo-primary);
    color: var(--amoo-on-primary, #ffffff);

    font: inherit;
    font-size: .78rem;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;

    cursor: pointer;
}

.checkout-message__accept:hover {
    box-shadow:
        0 5px 14px
        color-mix(
            in srgb,
            var(--amoo-primary) 20%,
            transparent
        );
}

.checkout-message__text strong {
    color: var(--amoo-text);
    font-weight: 600;
}

.checkout-required-note {
    margin: .55rem 0 0;
    padding: 0;

    color: var(--amoo-muted);

    font-size: .76rem;
    line-height: 1.3;
}


/* ============================================================
   MÉTODO DE PAGO
============================================================ */

.checkout-payment {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .55rem 1.35rem;

    margin-top: .85rem;
    padding: .75rem .95rem;

    border: 1px solid var(--amoo-border);
    border-radius: .85rem;

    background:
        color-mix(
            in srgb,
            var(--amoo-primary) 2.5%,
            var(--amoo-surface)
        );
}

.checkout-payment h3 {
    margin: 0 .25rem 0 0;
    padding: 0;

    color: var(--amoo-text);

    font-size: .95rem;
    font-weight: 600;
    line-height: 1.25;
}

.checkout-payment__option {
    width: fit-content;

    display: inline-flex;
    align-items: center;
    gap: .45rem;

    margin: 0;

    color: var(--amoo-text);

    font-size: .87rem;
    line-height: 1.3;

    cursor: pointer;
}

.checkout-payment__option input,
.checkout-terms input {
    flex: 0 0 auto;

    accent-color: var(--amoo-primary);
}


/* ============================================================
   CONDICIONES
============================================================ */

.checkout-terms {
    display: flex;
    align-items: flex-start;
    gap: .55rem;

    margin-top: .65rem;
    padding: .68rem .8rem;

    border: 1px solid var(--amoo-border);
    border-radius: .78rem;

    background:
        color-mix(
            in srgb,
            var(--amoo-primary) 4%,
            var(--amoo-surface)
        );

    color: var(--amoo-text);

    font-size: .86rem;
    line-height: 1.35;

    cursor: pointer;
}

.checkout-terms input {
    margin-top: .12rem;
}


/* ============================================================
   BOTÓN COMPRAR
============================================================ */

.checkout-submit {
    width: min(100%, 34rem);
    min-height: 3rem;

    display: block;

    margin: .8rem auto 0;
    padding: .65rem 1.1rem;

    border: 1px solid var(--amoo-primary);
    border-radius: 999px;

    background: var(--amoo-primary);
    color: var(--amoo-on-primary, #ffffff);

    font: inherit;
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.2;

    cursor: pointer;

    box-shadow:
        0 7px 18px
        color-mix(
            in srgb,
            var(--amoo-primary) 22%,
            transparent
        );

    transition:
        transform .16s ease,
        box-shadow .16s ease,
        opacity .16s ease;
}

.checkout-submit:not(:disabled):hover {
    box-shadow:
        0 9px 24px
        color-mix(
            in srgb,
            var(--amoo-primary) 29%,
            transparent
        );
}

.checkout-submit:not(:disabled):active {
    transform: scale(.985);
}

.checkout-submit:disabled {
    opacity: .4;

    cursor: not-allowed;
    box-shadow: none;
}

.checkout-submit-note,
.checkout-products-count {
    margin: .4rem 0 0;
    padding: 0;

    color: var(--amoo-muted);

    font-size: .76rem;
    line-height: 1.35;
    text-align: center;
}


/* ============================================================
   COLUMNA LATERAL
============================================================ */

.cart-side {
    position: sticky;
    top: 1rem;

    display: grid;
    gap: 1rem;

    /*
        Compensa el título de la columna principal para que
        la ayuda comience alineada con la línea de producto.
    */
    margin-top: 3.85rem;
}

.cart-side__box {
    min-width: 0;

    margin: 0;
    padding: 1rem;

    border: 1px solid var(--amoo-border);
    border-radius: 1rem;

    background:
        color-mix(
            in srgb,
            var(--amoo-primary) 3%,
            var(--amoo-surface)
        );

    box-shadow:
        0 2px 8px rgba(0, 0, 0, .025),
        0 8px 22px rgba(0, 0, 0, .05);
}

.cart-side__box h2 {
    margin: 0 0 .6rem;
    padding: 0;

    color: var(--amoo-text);

    font-size: 1rem;
    font-weight: 600;
    line-height: 1.25;
}

.cart-side__box p {
    margin: 0;
    padding: 0;

    color: var(--amoo-muted);

    font-size: .84rem;
    line-height: 1.48;
}

.cart-side__box a,
.cart-side__box a:visited {
    color: var(--amoo-text);
    text-decoration: none;
}

.cart-side__box a:hover {
    color: var(--amoo-primary);
    text-decoration: none;
}


/* ============================================================
   CONTACTO DEL LATERAL
============================================================ */

.cart-side__box--support > .whatsapp,
.cart-side__box--support > .phone,
.cart-side__box--support > div:not([class]),
.cart-side__box--support > .horario {
    margin-top: .6rem;
}


/* WhatsApp y teléfono contienen un enlace completo */

.cart-side__box--support > .whatsapp,
.cart-side__box--support > .phone {
    display: block;
}

.cart-side__box--support .whatsapp > a,
.cart-side__box--support .phone > a {
    width: 100%;
    min-width: 0;

    display: grid;
    grid-template-columns:
        1.25rem
        minmax(0, 1fr);

    align-items: center;
    gap: .55rem;

    color: var(--amoo-text);

    font-size: .84rem;
    line-height: 1.3;
}


/* Email y horario ya contienen el icono directamente */

.cart-side__box--support > div:not([class]),
.cart-side__box--support > .horario {
    min-width: 0;

    display: grid;
    grid-template-columns:
        1.25rem
        minmax(0, 1fr);

    align-items: center;
    gap: .55rem;

    color: var(--amoo-muted);

    font-size: .84rem;
    line-height: 1.35;
}

.cart-side__box--support > .horario {
    align-items: start;
}

.cart-side__box--support .icon {
    width: 1.25rem;
    height: 1.25rem;

    color: var(--amoo-muted);

    stroke-width: 1.6;
}

.cart-side__box--support .whatsapp .icon {
    color: #25d366;
}

.cart-side__box--support .horario .icon {
    margin-top: .05rem;
}

.cart-side__box--support .phone span {
    white-space: nowrap;
}

.cart-side__box--support .whatsapp span {
    white-space: nowrap;
}

.cart-side__box--support span,
.cart-side__box--support a {
    min-width: 0;
}


/* ============================================================
   DESKTOP ESTRECHO / TABLET HORIZONTAL
============================================================ */

@media (max-width: 1180px) {

    .cart-layout {
        grid-template-columns:
            minmax(0, 1fr)
            17.5rem;

        gap: 1.4rem;
    }

    .checkout-form__fields {
        gap: .8rem 1.25rem;
    }

    .checkout-phone {
        grid-template-columns:
            minmax(8.5rem, 42%)
            minmax(0, 1fr);
    }

}


/* ============================================================
   TABLET
============================================================ */

@media (max-width: 980px) {

    .cart-layout {
        grid-template-columns: minmax(0, 1fr);
    }

    .cart-side {
        position: static;

        grid-template-columns:
            minmax(0, 1fr)
            minmax(0, 1fr);

        margin-top: 1.2rem;
    }

    .cart-side__box {
        height: 100%;
    }

}


/* ============================================================
   TABLET ESTRECHA
============================================================ */

@media (max-width: 760px) {

    .checkout-form__fields {
        grid-template-columns: minmax(0, 1fr);
    }

    .checkout-payment {
        align-items: flex-start;
    }

    .checkout-payment h3 {
        width: 100%;
    }

    .cart-side {
        grid-template-columns: minmax(0, 1fr);
    }

    .cart-item {
        grid-template-columns:
            6.4rem
            minmax(0, 1fr)
            max-content
            1.8rem;
    }

    .cart-item__photo {
        width: 6.4rem;
    }

}


/* ============================================================
   DARK MODE
============================================================ */

@media (prefers-color-scheme: dark) {

    .cart-item,
    .checkout-form__fields_out,
    .cart-side__box {
        box-shadow:
            0 2px 8px rgba(0, 0, 0, .18),
            0 10px 26px rgba(0, 0, 0, .22);
    }

}


/* ============================================================
   REDUCCIÓN DE MOVIMIENTO
============================================================ */

@media (prefers-reduced-motion: reduce) {

    .cart-item__remove a,
    .cart-code-line button,
    .checkout-field__control input,
    .checkout-phone select,
    .checkout-field textarea,
    .checkout-field__message,
    .checkout-submit {
        transition: none;
    }

}