/**
 * Cart page (Figma 21:129). Loaded only on is_cart().
 * Roboto (self-hosted) for body/labels, Inter for the summary title + buttons.
 */
@font-face {
    font-family: 'Roboto';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('../fonts/roboto-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Roboto';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('../fonts/roboto-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

.udi-cart {
    --cart-pink: #ed3166;
    --cart-soft: #fbf7f8;
    --cart-box: #fef4fa;
    --cart-ink: #000;
    --cart-muted: #6b6b6b;
    --cart-help: #848484;
    --font-roboto: 'Roboto', var(--font-sans);
    display: grid;
    grid-template-columns: minmax(0, 1fr) 480px;
    gap: clamp(40px, 7vw, 120px);
    align-items: start;
    margin-block: 48px clamp(60px, 9vw, 112px);
    font-family: var(--font-roboto);
    color: var(--cart-ink);
}

.udi-cart__main {
    min-width: 0;
}

/* Steps -------------------------------------------------------------------- */
.udi-cart-steps {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 40px;
}

.udi-cart-steps__active {
    font-family: var(--font-roboto);
    font-size: clamp(28px, 4vw, 40px);
    font-weight: 700;
    line-height: 1.2;
    color: var(--cart-ink);
}

.udi-cart-steps__rest {
    display: flex;
    gap: 20px;
    font-weight: 700;
    font-size: 16px;
    color: #d390a2;
    text-align: right;
}

/* Item list ---------------------------------------------------------------- */
.udi-cart__items {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.udi-cart-item {
    display: flex;
    gap: 20px;
    padding: 20px;
    background: var(--cart-soft);
}

.udi-cart-item.is-loading {
    opacity: 0.55;
    pointer-events: none;
}

.udi-cart-item.is-removing {
    opacity: 0.4;
    pointer-events: none;
    transition: opacity 0.2s ease;
}

.udi-cart-item__media {
    flex: 0 0 150px;
    width: 150px;
    height: 150px;
}

.udi-cart-item__media a,
.udi-cart-item__img {
    display: block;
    width: 150px;
    height: 150px;
}

.udi-cart-item__img {
    object-fit: cover;
}

.udi-cart-item__body {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
    min-height: 150px;
}

.udi-cart-item__info {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.udi-cart-item__name {
    font-weight: 600;
    font-size: 16px;
    line-height: 1.5;
    color: var(--cart-pink);
    text-decoration: underline;
    text-underline-position: from-font;
}

.udi-cart-item__name:hover,
.udi-cart-item__name:focus-visible {
    text-decoration: none;
}

.udi-cart-item__variation {
    font-size: 13px;
    line-height: 1.4;
    color: var(--cart-muted);
}

.udi-cart-item__variation p {
    margin: 0;
}

.udi-cart-item__price {
    font-size: 16px;
    color: var(--cart-muted);
}

.udi-cart-item__price ins {
    text-decoration: none;
    color: var(--cart-pink);
    font-weight: 600;
}

.udi-cart-item__price del {
    color: #969696;
    margin-right: 6px;
}

.udi-cart-item__controls {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 12px;
}

/* Quantity stepper: bare −/+ icons around a bordered pill. */
.udi-cart-item__qty {
    display: flex;
    align-items: center;
    gap: 16px;
}

.udi-qty__btn {
    display: grid;
    place-items: center;
    width: 24px;
    height: 24px;
    color: var(--cart-ink);
    transition: color 0.15s ease;
}

.udi-qty__btn:hover,
.udi-qty__btn:focus-visible {
    color: var(--cart-pink);
}

.udi-qty__btn svg {
    width: 24px;
    height: 24px;
}

.udi-qty__input {
    width: 57px;
    padding: 11px 8px;
    border: 1px solid var(--cart-ink);
    border-radius: 100px;
    background: transparent;
    font-family: var(--font-roboto);
    font-size: 16px;
    line-height: 1;
    text-align: center;
    color: var(--cart-ink);
    -moz-appearance: textfield;
    appearance: textfield;
}

.udi-qty__input::-webkit-outer-spin-button,
.udi-qty__input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.udi-cart-item__actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 16px;
}

.udi-cart-item__fav {
    color: var(--cart-ink);
    transition: color 0.15s ease;
}

.udi-cart-item__fav:hover,
.udi-cart-item__fav:focus-visible {
    color: var(--cart-pink);
}

.udi-cart-item__fav svg {
    width: 24px;
    height: 24px;
}

.udi-cart-item__remove {
    display: grid;
    place-items: center;
    width: 24px;
    height: 24px;
    color: var(--cart-muted);
    transition: color 0.15s ease;
}

.udi-cart-item__remove:hover,
.udi-cart-item__remove:focus-visible {
    color: var(--cart-pink);
}

.udi-cart-item__remove svg {
    width: 24px;
    height: 24px;
}

.udi-cart__update {
    display: none;
}

/* Back to shop (pink outline pill) ----------------------------------------- */
.udi-cart__back {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-top: 24px;
    padding: 12px 24px;
    border: 1px solid var(--cart-pink);
    border-radius: 100px;
    font-family: var(--font-sans);
    font-size: 15px;
    color: var(--cart-pink);
    transition: background 0.15s ease, color 0.15s ease;
}

.udi-cart__back:hover,
.udi-cart__back:focus-visible {
    background: var(--cart-pink);
    color: #fff;
}

/* Summary ------------------------------------------------------------------ */
.udi-cart__aside {
    display: flex;
    flex-direction: column;
    gap: 40px;
}

.udi-cart-summary {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.udi-cart-summary__box {
    display: flex;
    flex-direction: column;
    gap: 28px;
    padding: 28px;
    background: var(--cart-box);
}

.udi-cart-summary__title {
    margin: 0;
    font-family: var(--font-sans);
    font-weight: 700;
    font-size: 24px;
    line-height: 1.2;
    color: var(--cart-ink);
}

/* Coupon */
.udi-cart-coupon__toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    cursor: pointer;
    background: none;
    border: 0;
    padding: 0;
}

.udi-cart-coupon__label {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    font-family: var(--font-sans);
    font-weight: 500;
    font-size: 18px;
    color: var(--cart-ink);
}

.udi-cart-coupon__label svg {
    width: 24px;
    height: 24px;
    color: var(--cart-ink);
}

.udi-cart-coupon__chev {
    display: grid;
    place-items: center;
    transition: transform 0.2s ease;
}

.udi-cart-coupon__toggle[aria-expanded='true'] .udi-cart-coupon__chev {
    transform: rotate(180deg);
}

.udi-cart-coupon__panel {
    margin-top: 16px;
}

.udi-cart-coupon__form {
    display: flex;
    gap: 8px;
}

.udi-cart-coupon__input {
    flex: 1 1 auto;
    min-width: 0;
    padding: 11px 16px;
    border: 1px solid #d0c4c9;
    border-radius: 8px;
    background: #fff;
    font-family: var(--font-roboto);
    font-size: 15px;
    color: var(--cart-ink);
}

.udi-cart-coupon__input:focus-visible {
    outline: 2px solid var(--cart-pink);
    outline-offset: -1px;
}

.udi-cart-coupon__apply {
    flex: 0 0 auto;
    padding: 11px 22px;
    border: 0;
    border-radius: 100px;
    background: var(--cart-ink);
    color: #fff;
    font-family: var(--font-sans);
    font-size: 14px;
    cursor: pointer;
    transition: background 0.15s ease;
}

.udi-cart-coupon__apply:hover,
.udi-cart-coupon__apply:focus-visible {
    background: var(--cart-pink);
}

.udi-cart-coupon__msg {
    margin: 8px 0 0;
    font-size: 13px;
    line-height: 1.4;
    color: var(--cart-muted);
}

.udi-cart-coupon__msg.is-error {
    color: #c0143c;
}

.udi-cart-coupon__msg.is-ok {
    color: #1a7f4b;
}

.udi-cart-coupon__msg:empty {
    display: none;
}

.udi-cart-coupon__applied {
    list-style: none;
    margin: 12px 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.udi-cart-coupon__applied li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    font-size: 14px;
    color: var(--cart-ink);
}

.udi-cart-coupon__applied a {
    display: grid;
    place-items: center;
    color: var(--cart-muted);
}

.udi-cart-coupon__applied a:hover {
    color: var(--cart-pink);
}

.udi-cart-coupon__applied svg {
    width: 18px;
    height: 18px;
}

/* Costs */
.udi-cart-summary__costs {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.udi-cart-summary__row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    font-size: 18px;
    line-height: 1.5;
}

.udi-cart-summary__row > span:first-child {
    font-weight: 400;
}

.udi-cart-summary__val {
    font-weight: 600;
    white-space: nowrap;
}

.udi-cart-summary__row--discount .udi-cart-summary__val {
    color: var(--cart-pink);
}

/* Free-shipping progress */
.udi-cart-freeship {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.udi-cart-freeship__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
}

.udi-cart-freeship__label {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    font-weight: 600;
    font-size: 18px;
    line-height: 1.5;
    color: var(--cart-ink);
}

.udi-cart-freeship__label svg {
    flex: 0 0 auto;
    width: 24px;
    height: 24px;
}

.udi-cart-freeship__val {
    font-weight: 600;
    font-size: 18px;
    white-space: nowrap;
}

.udi-cart-freeship__bar {
    position: relative;
    height: 3px;
    background: #e5e5e5;
    border-radius: 100px;
    overflow: hidden;
}

.udi-cart-freeship__fill {
    position: absolute;
    inset: 0 auto 0 0;
    height: 100%;
    background: var(--cart-ink);
    border-radius: 100px;
    transition: width 0.3s ease;
}

/* Checkout button */
.udi-cart-summary__actions {
    display: flex;
    justify-content: flex-end;
}

.udi-cart-summary__checkout {
    padding: 12px 64px;
    letter-spacing: 0.75px;
}

/* Help block --------------------------------------------------------------- */
.udi-cart-help {
    text-align: right;
}

.udi-cart-help__q {
    margin: 0 0 12px;
    font-size: 16px;
    color: var(--cart-help);
}

.udi-cart-help__contact {
    display: flex;
    align-items: flex-start;
    justify-content: flex-end;
    gap: 12px;
}

.udi-cart-help__contact svg {
    width: 24px;
    height: 24px;
    color: var(--cart-ink);
    margin-top: 2px;
}

.udi-cart-help__lines {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.udi-cart-help__phone {
    font-weight: 700;
    font-size: 16px;
    color: var(--cart-ink);
}

.udi-cart-help__hours {
    font-size: 14px;
    color: var(--cart-help);
}

/* Empty cart --------------------------------------------------------------- */
.udi-cart--empty {
    display: block;
    margin-block: 48px clamp(60px, 9vw, 112px);
}

.udi-cart-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
    padding: 40px 0 20px;
    text-align: center;
}

.udi-cart-empty__icon svg {
    width: 56px;
    height: 56px;
    color: var(--cart-pink);
}

.udi-cart-empty__msg {
    margin: 0;
    font-size: 20px;
    color: var(--cart-ink);
}

/* Cross-sell recommendations ---------------------------------------------- */
.udi-cart-cross {
    margin-bottom: clamp(60px, 9vw, 112px);
}

.udi-cart-cross__title {
    margin: 0 0 40px;
    font-family: var(--font-sans);
    font-weight: 700;
    font-size: clamp(28px, 4vw, 40px);
    line-height: 1.2;
    color: var(--c-black, #000);
}

.udi-cart-cross__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 40px;
}

.udi-cart-cross__grid .pcard {
    width: auto;
}

/* Recommendation add-to-cart button (pink outline) — must beat .woocommerce a.button. */
.udi-cart-cross .udi-cart-cross__grid a.pcard__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    min-height: 40px;
    margin-top: 16px;
    padding: 8px 20px;
    background: transparent;
    border: 1px solid var(--c-primary);
    border-radius: 100px;
    color: var(--c-primary);
    font-family: var(--font-sans);
    font-size: 16px;
    font-weight: 400;
    line-height: 1.5;
    text-align: center;
    text-decoration: none;
    transition: background 0.15s ease, color 0.15s ease;
}

.udi-cart-cross .udi-cart-cross__grid a.pcard__btn:hover,
.udi-cart-cross .udi-cart-cross__grid a.pcard__btn:focus-visible {
    background: var(--c-primary);
    color: #fff;
}

.udi-cart-cross .udi-cart-cross__grid .added_to_cart {
    display: none;
}

/* Responsive --------------------------------------------------------------- */
@media (max-width: 991px) {
    .udi-cart {
        grid-template-columns: 1fr;
        gap: 40px;
    }
    .udi-cart-cross__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .udi-cart-steps {
        flex-direction: column;
        align-items: flex-start;
        gap: 12px;
    }
    .udi-cart-steps__rest {
        text-align: left;
    }
    .udi-cart-summary__checkout {
        width: 100%;
    }
    .udi-cart-summary__actions {
        justify-content: stretch;
    }
    .udi-cart-cross__grid {
        grid-template-columns: 1fr;
    }
}
