/* Chain Assembly: the stock SHOPLINE cart drawer (components/cart/cart-drawer.html) and cart page
   (sections/info-cart, built on stock main-cart) styled to the theme's existing cart look.
   Loaded by components/cart/cart-drawer.html and sections/info-cart/info-cart.html, after site.css / pages.css /
   x-info.css, whose .cd-* / .co-* rules (classes kept beside the stock ones) still apply. Stock cart-drawer.css and
   main-cart.css are not loaded; the few functional rules they carry (loading states, empty error tips, disabled lines)
   are repeated here. Unlayered, so it outranks base/index.css (layer stock-base) and modal/index.css (layer component). */

/* ---------- shared: stock line widgets ---------- */
.cart-item .cart-item__product,
.cart-item .cart-item__product-infos{display:contents}
.cart-item__picture a{display:block}
.cart-item__picture img{object-fit:cover;display:block}
.cart-item__product-infos-text{display:grid;gap:4px;align-content:start;min-width:0}
.cart-item .font-bold{font-weight:inherit}
.cart-item__options:empty{display:none}
.cart-item__discount{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.cart-item__discount li{display:flex;gap:6px;align-items:center}
.cart-item__discount svg{width:12px;height:12px;flex:none}
.cart-item .ca-gift-label{color:var(--butter,#dea414);font-weight:700;letter-spacing:.04em;opacity:1}
.cart-item__total{display:grid;justify-items:end}
.cart-item__total-loading{display:none}
.cart-item__total-loading.loading{display:block}
.cart-item__total-loading.loading ~ *{visibility:hidden}
.cart-item__total-loading svg{width:16px;height:16px;animation:ca-cart-spin 1s linear infinite}
.cart-item__total-original{opacity:.55;font-weight:400;text-decoration:line-through;font-size:calc(13px * var(--fs-b))}
.cart-item__disabled{opacity:.5;pointer-events:none}
.cart-item__amount{display:grid;gap:6px;justify-items:start}
.cart-item__amount-operator{display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.cart-item__fail{display:flex;gap:6px;align-items:center;color:#e05a4b;font-size:calc(13px * var(--fs-b))}
.cart-item__fail svg{width:14px;height:14px}
.cart-item__fail-tip:empty,.cart-item__fail-tip:empty + svg{display:none}
.cart-item__remove{cursor:pointer;display:inline-flex;align-items:center}
.cart-item__remove:has(.ca-rm-text) svg{display:none}
.cart-item__remove svg{width:16px;height:16px}
.cart-item theme-input-number{width:auto;background:none;color:inherit;border-radius:0}
.cart-item theme-input-number::before,.cart-item theme-input-number::after{display:none}
.cart-item theme-input-number input[type=number]{appearance:textfield;-moz-appearance:textfield;background:transparent;border:0;color:inherit;text-align:center;padding:0}
.cart-item theme-input-number input::-webkit-outer-spin-button,.cart-item theme-input-number input::-webkit-inner-spin-button{margin:0;appearance:none}
.cart-item theme-input-number button[name=minus],.cart-item theme-input-number button[name=plus]{color:inherit;display:grid;place-content:center}
.cart-item theme-input-number button .icon{width:10px;height:10px}
.cart-amount{list-style:none;margin:0;padding:0}
.cart-amount em{font-style:normal}
.cart-amount__discount-label{display:flex;gap:6px;align-items:center}
.cart-amount__discount-label svg{width:12px;height:12px}
.cart-checkout{display:grid;gap:12px}
.cart-checkout form{display:block}
.cart-coupon{display:grid;gap:8px;margin-bottom:16px}
.cart-coupon__form{display:flex;gap:8px}
.cart-coupon__form .field{flex:1;position:relative}
.cart-coupon__form .field__label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.cart-coupon__form input{width:100%;background:#1d1c1b;border:1px solid rgba(241,238,231,.18);color:#f1eee7;padding:10px 12px;font:400 calc(14px * var(--fs-b))/calc(20px * var(--fs-b)) var(--f-body);border-radius:0}
.cart-coupon__button{border:1px solid #dea414;color:#dea414;padding:0 14px;font:800 calc(12px * var(--fs-b))/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase}
.cart-coupon__button .button__spinner{display:none}
.cart-coupon__error{color:#e05a4b;font-size:calc(13px * var(--fs-b))}
.cart-coupon__error:empty{display:none}
.cart-coupon__list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.cart-coupon__list-item{display:inline-flex;gap:6px;align-items:center;border:1px solid rgba(241,238,231,.25);padding:4px 8px;font-size:calc(13px * var(--fs-b))}
.cart-coupon__list-item svg{width:12px;height:12px}
.cart-coupon__list-close{cursor:pointer;font-style:normal}
@keyframes ca-cart-spin{to{transform:rotate(360deg)}}

/* ---------- drawer (stock theme-modal right placement; the old .cd shell) ---------- */
theme-cart-drawer details.cart-drawer > summary{display:none}
theme-cart-drawer details.cart-drawer{--z-index:90}
theme-cart-drawer details.cart-drawer[open]::before{background:rgba(0,0,0,.55)}
theme-cart-drawer .cart-drawer__body.ca-cd{position:fixed;inset:0 0 0 auto;margin:0;z-index:91;width:min(440px,100vw);height:100%;max-height:none;background:#151515;color:#f1eee7;display:flex;flex-direction:column;box-shadow:-24px 0 64px rgba(0,0,0,.5);overflow:hidden}
theme-cart-drawer .cart-drawer__body.ca-cd:focus{outline:none}
.ca-cd .cart-drawer__header h2{margin:0}
.ca-cd .cart-drawer__close{color:inherit;background:none;border:0}
.ca-cd .cart-drawer__close svg{width:16px;height:16px}
.ca-cd form{display:block}
.ca-cd .cart-drawer__inner{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}
.ca-cd .cart-drawer__inner > .cd-body{flex:1;min-height:0}
.ca-cd .cart-drawer__loading{display:none;position:absolute;inset:0;z-index:2;place-content:center;justify-items:center;gap:8px;background:rgba(21,21,21,.6)}
.ca-cd .cart-drawer__inner--loading .cart-drawer__loading{display:grid}
.ca-cd .cart-drawer__loading svg{width:28px;height:28px;animation:ca-cart-spin 1s linear infinite}
.ca-cd .cart-drawer__payment{padding:20px 24px 0;border-top:1px solid rgba(241,238,231,.1)}
.ca-cd .cart-drawer__fixed-checkout{padding:4px 24px 28px}
.ca-cd .cart-drawer__fixed-checkout + .cd-view-cart{margin:-12px 24px 28px}
/* the stock fixed-checkout total, taxes line and collapsed amounts repeat what the amounts above show: hidden, kept in the markup */
.ca-cd .cart-fixed-checkout__inner,.ca-cd .cart-fixed-checkout .cart-taxes,.ca-cd .cart-fixed-checkout__total{display:none}
.ca-cd .cart-fixed-checkout__note{margin:4px 0 16px}
.ca-cd .cart-empty.cd-empty{padding:64px 0;text-align:center}
.ca-cd .cart-empty__body{display:grid;justify-items:center}
/* drawer line: picture | info + quantity | total (the old .cd-l) */
.cd-l.cart-item{grid-template-rows:auto 1fr}
.cd-l .cart-item__picture{grid-column:1;grid-row:1 / span 2}
.cd-l .cart-item__picture img{width:64px;height:80px}
.cd-l .cart-item__product-infos-text{grid-column:2;grid-row:1;font:400 calc(14px * var(--fs-b))/calc(20px * var(--fs-b)) var(--f-body)}
.cd-l .cart-item__amount{grid-column:2;grid-row:2}
.cd-l .cart-item__total-wrapper{grid-column:3;grid-row:1}
.cd-l .cart-item__title a{font:600 calc(15px * var(--fs-h))/calc(20px * var(--fs-h)) var(--f-head);color:#f1eee7}
.cd-l .cart-item__option,.cd-l .cart-item__property,.cd-l .cart-item__selling-plan,.cd-l .cart-item__discount{font-size:calc(13px * var(--fs-b));opacity:.7}
.cd-l .cart-item__price{font-size:calc(14px * var(--fs-b));opacity:.6}
.cd-l .cart-item__total-final{font:700 calc(15px * var(--fs-b))/calc(20px * var(--fs-b)) var(--f-body)}
.cd-l .cart-item__amount-operator{margin-top:2px}
.cd-l theme-input-number{gap:4px}
.cd-l theme-input-number button[name=minus],.cd-l theme-input-number button[name=plus]{width:28px;height:28px;border:1px solid rgba(241,238,231,.25)}
.cd-l theme-input-number input[type=number]{width:28px;flex:none;font:700 calc(14px * var(--fs-b))/1 var(--f-body)}
.cd-l .cart-item__remove{margin-left:12px;font:600 calc(12px * var(--fs-b))/1 var(--f-body);letter-spacing:.08em;text-decoration:underline;opacity:.6}
.cd-gift .cart-item__amount{display:none}
.ca-cd .cd-sub em{font-style:normal}

/* ---------- cart page (stock main-cart blocks in the old two-column .co layout) ---------- */
.co--main{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);column-gap:80px;row-gap:20px}
.co--main:has(.cart-empty){display:block}
/* empty cart page: the stock body holds both the message and KEEP SHOPPING; live spaces them 24px apart */
.co-empty .cart-empty__body{display:grid;gap:24px;justify-items:start}
.co--main > .main-cart-items__container{grid-column:1}
/* the $cart-footer block keeps the editor wrapper div Sline adds (stock schema has no "tag": ""): it is unboxed too */
.co--main > :has(> .main-cart-footer__container),.co--main .main-cart-footer__container,.co--main theme-main-cart-footer,.co--main .main-cart-footer__inner,.co--main .main-cart-footer__infos,.co--main .main-cart-footer__payment-info{display:contents}
.co--main .co-rest{grid-column:1;max-width:none}
.co--main .co-sum{grid-column:2;grid-row:1 / span 2}
.co--main > :not(.main-cart-items__container):not(:has(> .main-cart-footer__container)){grid-column:1}
.co--main .co-note{display:grid;gap:20px}
.main-cart-items__header{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* stock taxes line and mobile sticky checkout bar: the page already shows shipping, payment and the checkout button; hidden, kept in the markup */
.co--main .main-cart-footer__tips,.co--main .cart-fixed-checkout{display:none}
.co-ed.cart-item{grid-template-columns:56px minmax(0,1fr) auto auto}
.co-ed .cart-item__picture img{width:56px;height:70px}
.co-ed .cart-item__product-infos-text .cart-item__total{display:none}
.co-ed .cart-item__title a{display:block;color:#f1eee7;font-weight:600}
.co-ed .cart-item__option,.co-ed .cart-item__property,.co-ed .cart-item__selling-plan,.co-ed .cart-item__discount,.co-ed .cart-item__price{opacity:.7;font-size:calc(13px * var(--fs-b))}
.co-ed .cart-item__amount{justify-items:center}
.co-ed .cart-item__amount-operator{flex-direction:column;gap:6px}
.co-ed theme-input-number{background:#1d1c1b;border:1px solid rgba(241,238,231,.18)}
.co-ed theme-input-number:focus-within{border-color:#dea414}
.co-ed theme-input-number button[name=minus],.co-ed theme-input-number button[name=plus]{width:28px}
.co-ed theme-input-number input[type=number]{width:36px;flex:none;padding:10px 0;font:400 calc(15px * var(--fs-b))/calc(20px * var(--fs-b)) var(--f-body)}
.co-ed .cart-item__remove{font:800 calc(11px * var(--fs-b))/calc(16px * var(--fs-b)) var(--f-body);letter-spacing:.16em;text-transform:uppercase}
.co-ed .cart-item__total-final{font-weight:700}
.co-gift .cart-item__amount{visibility:hidden}
.co--main .main-cart-footer__amount{margin-top:4px}
.co--main .co-t.total span{font:inherit}
@media (max-width:1023px){.co--main{grid-template-columns:1fr;gap:40px}.co--main .co-sum{grid-column:1;grid-row:auto;order:-1;position:static}}
@media (max-width:767px){.co-ed.cart-item{grid-template-columns:56px minmax(0,1fr) auto;row-gap:8px}.co-ed.cart-item > .cart-item__total-wrapper{grid-column:2 / -1;justify-self:end}}

/* ---------- P3b: differences vs live (appearance only; every stock element and class kept) ---------- */
/* cart page: the checkout button is auto width, left-aligned, as live (stock .button--fill sets width:100%) */
.co--main .main-cart-footer__checkout .co-place.button--fill{width:auto;justify-self:start}
/* cart page: the order note sits outside the re-rendered items; when the last line is removed (stock Ajax) the empty
   state is rendered and the note is hidden, as live (on a page load the empty cart prints no note at all) */
.main-cart-items__container:has(.cart-empty) .co-note{display:none}
/* drawer: no rule under the subtotal row (the stock fixed-checkout wrapper also carries .cd-foot, whose border-top drew
   it); the payment block's top rule stays. Subtotal / total labels use the row's heading font, as live */
.ca-cd .cart-drawer__fixed-checkout.cd-foot{border-top:0}
.ca-cd .cd-sub > em,.ca-cd .cd-sub > span,.ca-cd .cd-sub .cart-amount__discount-label em{font:inherit;letter-spacing:inherit}
/* line total: struck regular price before the price paid, as live (stock prints the final price first) */
.cart-item__total-amount{display:flex;flex-direction:row-reverse;justify-content:flex-start;align-items:baseline;gap:8px}
.cart-item__total-original{font-size:inherit}
/* free-gift line: discount text (no tag icon) before the unit price, as live */
.cd-gift .cart-item__product-infos-text,.co-gift .cart-item__product-infos-text{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.cd-gift .cart-item__discount,.co-gift .cart-item__discount{order:1}
.cd-gift .cart-item__price,.co-gift .cart-item__price{order:2}
.cd-gift .cart-item__discount svg,.co-gift .cart-item__discount svg{display:none}
.cd-gift.cart-item{row-gap:0}
