/* ==================================================================
   Hipstoeren Headless — side cart (slide-in drawer)
   z-index 100 = highest in the stack (above header, drawer, search, modals).
   Closed state is unclickable: visibility + pointer-events, never opacity alone.
================================================================== */
.hsh-side-cart-root{position:fixed;inset:0;z-index:100;visibility:hidden;pointer-events:none}
.hsh-side-cart-root.is-open{visibility:visible;pointer-events:auto}
.hsh-side-cart__backdrop{position:absolute;inset:0;background:rgba(47,44,39,.45);opacity:0;transition:opacity .5s var(--ease)}
.hsh-side-cart-root.is-open .hsh-side-cart__backdrop{opacity:1}
.hsh-side-cart__panel{position:absolute;top:0;right:0;width:min(94vw,440px);height:100dvh;background:#fff;display:flex;flex-direction:column;
  transform:translateX(100%);transition:transform .6s var(--ease);box-shadow:-20px 0 60px rgba(47,44,39,.12)}
.hsh-side-cart-root.is-open .hsh-side-cart__panel{transform:none}
.hsh-side-cart__head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px clamp(18px,3vw,26px);border-bottom:1px solid var(--line)}
.hsh-side-cart__head h2{font-size:21px;font-weight:300}
.hsh-side-cart__body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:6px clamp(18px,3vw,26px) 20px}
.hsh-side-cart__items{list-style:none;margin:0;padding:0}
.hsh-side-cart__item{display:flex;gap:14px;padding:18px 0;border-bottom:1px solid var(--line-soft)}
.hsh-side-cart__thumb{flex:none;width:72px}
.hsh-side-cart__thumb img{width:72px;height:auto;aspect-ratio:3/4;object-fit:cover;background:var(--field)}
.hsh-side-cart__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.hsh-side-cart__name{font-size:13.5px;font-weight:500;color:var(--ink);line-height:1.4}
.hsh-side-cart__meta{font-size:11.5px;color:var(--olive);line-height:1.5}
.hsh-side-cart__meta dl,.hsh-side-cart__meta dd,.hsh-side-cart__meta p{margin:0}
.hsh-side-cart__meta dt{float:left;margin-right:4px;font-weight:500}
.hsh-side-cart__row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:4px}
.hsh-side-cart__price{font-size:13px;font-weight:500;color:var(--ink);white-space:nowrap}
.qty--sm button{width:34px;min-height:38px}
.qty--sm input{width:34px;min-height:38px;font-size:13px}
.hsh-side-cart__remove{align-self:flex-start;font-size:9.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--sage);
  border-bottom:1px solid var(--line-hair);padding-bottom:2px}
.hsh-side-cart__remove:hover{color:var(--ink);border-color:var(--ink)}
.hsh-side-cart__item.is-busy{opacity:.45;pointer-events:none}
.hsh-side-cart__empty{padding:40px 0;text-align:center;color:var(--olive)}
.hsh-side-cart__empty p{margin:0 0 18px;font-family:var(--d);font-size:19px;font-weight:300;color:var(--ink)}
.hsh-side-cart__upsells[hidden]{display:none}
.hsh-side-cart__foot{flex:none;margin-top:auto;padding:18px clamp(18px,3vw,26px) calc(18px + env(safe-area-inset-bottom));border-top:1px solid var(--line);display:grid;gap:10px;background:#fff}
.hsh-side-cart__foot[hidden]{display:none}
.hsh-side-cart__totals{display:flex;align-items:baseline;justify-content:space-between}
.hsh-side-cart__totals span{font-size:10.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink)}
.hsh-side-cart__totals strong{font-family:var(--d);font-size:22px;font-weight:300;color:var(--ink)}
.hsh-side-cart__note{margin:0;font-size:11.5px;color:var(--sage)}
.hsh-side-cart__foot .btn{min-width:100%}
.hsh-cart-badge.is-bump{animation:hshBump .5s var(--ease)}
@keyframes hshBump{40%{transform:scale(1.35)}}
.hsh-toast{position:fixed;left:50%;bottom:24px;z-index:110;translate:-50% 0;background:var(--ink);color:#fff;padding:13px 18px;font-size:12.5px;
  max-width:min(92vw,520px);box-shadow:0 12px 30px rgba(0,0,0,.25);opacity:0;transform:translateY(10px);transition:opacity .4s var(--ease),transform .4s var(--ease);pointer-events:none}
.hsh-toast.is-on{opacity:1;transform:none}
