/**
 * Happy Cappy — Side-cart drawer (v5 design, WooCommerce-backed).
 * File: hapcapstaging-child/assets/css/hc-cart.css
 *
 * Slide-in mini-cart used site-wide by the V2 chrome. Markup:
 * template-parts/product-v2/cart-drawer.php (+ cart-drawer-contents.php).
 * Behaviour: js/hc-cart.js. Opens via `html.cart-open`.
 *
 * Design tokens (--teal, --ink-surface, --accent, --radius-sm, …) come from
 * tokens.css / hc-header.css, which load first. The `.cart-dot` badge itself is
 * styled in hc-header.css; this file only styles the drawer + its contents.
 */

/* mini-cart drawer (slides from right) */
.cart-switch{position:relative}
.cart-scrim{position:fixed;inset:0;background:rgba(7,26,31,.58);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s;z-index:120}
html.cart-open .cart-scrim{opacity:1;visibility:visible}
.cart-menu{position:fixed;top:0;right:0;height:100dvh;width:400px;max-width:100vw;background:var(--cart-surface,var(--surf));border:none;border-radius:0;box-shadow:none;visibility:hidden;padding:0;display:flex;flex-direction:column;overflow:hidden;transform:translateX(100%);transition:transform .32s cubic-bezier(.4,0,.2,1);z-index:121}
html.cart-open .cart-menu{transform:translateX(0);visibility:visible;box-shadow:-20px 0 60px -16px rgba(7,26,31,.55)}
.cart-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 18px 11px;background:var(--ink-surface);flex-shrink:0}
.cart-head .ch-title{font-family:var(--font-display);font-weight:600;font-size:17px;color:#fff;margin-right:auto}
.cart-head .ch-count{font-size:12px;font-weight:600;color:#fff;background:rgba(255,255,255,.16);padding:3px 9px;border-radius:99px}
.cart-close{width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:#fff;background:rgba(255,255,255,.14);border:0;cursor:pointer;transition:background .14s,color .14s}
.cart-close svg{width:17px;height:17px;stroke:currentColor;stroke-width:2.2;fill:none}
.cart-close:hover{background:rgba(255,255,255,.27);color:#fff}
html.cart-open{overflow:hidden;padding-right:var(--sbw,0px)}
.cart-ship{padding:4px 18px 15px;background:var(--ink-surface)}
.cart-ship .cs-txt{font-size:12px;color:rgba(255,255,255,.9);margin-bottom:8px;line-height:1.35}
.cart-ship .cs-txt b{font-weight:700;color:#e8915b}
.cart-ship .cs-ck{color:#fff;font-weight:800;font-size:13px;margin-right:2px}
.cart-ship .cs-bar{height:6px;border-radius:99px;background:rgba(255,255,255,.34);overflow:hidden}
.cart-ship .cs-bar span{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#2f6fa8,#e8915b);transition:width .35s ease}
.cart-menu{--cart-surface:#fff;--cart-2:#eef2f8;--cart-line:#e4e9ee;font-family:var(--font-body)}
/* Buttons inherit the drawer font (Inter) instead of the parent theme's Poppins
   off product pages, and a normal line-height instead of the theme's button{line-height:1}. */
.cart-menu button{font-family:inherit;line-height:normal}
/* WooCommerce wraps every price in .woocommerce-Price-amount, which the parent
   _s style.css hard-codes to `font-weight:400 !important` + its own colour/font.
   Make the amount fully inherit its row (ci-price 700, cf-sub b Poppins/600,
   cx-meta b 700, struck s muted) so prices render as designed. */
.cart-menu .woocommerce-Price-amount{font-weight:inherit!important;color:inherit;font-family:inherit;font-size:inherit}
/* Dynamic fragment wrapper: must itself be the flex column that fills the drawer
   under the header, otherwise .cart-body can't take remaining height and scroll. */
#hcCartInner{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}
.cart-ship,.cart-xsell,.cart-foot{flex-shrink:0}
/* Icon buttons must ignore the theme's global <button> padding. product-v2.css
   resets it on product pages, but the drawer renders site-wide — without this
   the padding overflows these fixed-size buttons and collapses their SVGs to
   0 width (delete icon "disappears" off product pages). */
.cart-close,.ci-remove,.ci-qty button{padding:0}
/* Same story for links: the parent _s style.css (underline + a:visited #800080)
   leaks into the drawer off product pages. Kill the underline and keep the
   button/link colours on :visited (scoped so component colours still apply). */
.cart-menu a,.cart-menu a:visited{text-decoration:none}
.cart-menu .cf-checkout,.cart-menu .cf-checkout:visited,.cart-menu .cf-checkout:hover,.cart-menu .cf-checkout:focus{color:#fff}
.cart-menu .cf-view:visited,.cart-menu .ce-shop:visited{color:var(--teal)}
.cart-body{flex:1 1 auto;min-height:0;overflow-y:auto}
.cart-body[hidden],.cart-ship[hidden],.cart-foot[hidden],.cart-empty[hidden],.cart-item[hidden]{display:none}
.cart-item{display:flex;gap:12px;padding:14px 18px;position:relative;border-bottom:1px solid var(--cart-line)}
.ci-thumb{width:60px;height:60px;flex-shrink:0;border-radius:var(--radius);background:#fff;border:1px solid var(--cart-line);overflow:hidden;display:flex;align-items:center;justify-content:center}
.ci-thumb img{width:100%;height:100%;object-fit:contain}
.ci-main{flex:1;min-width:0}
.ci-title{font-size:13px;font-weight:600;color:var(--teal-ink);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ci-metarow{display:flex;align-items:flex-start;gap:8px;margin-top:5px}
.ci-variant{font-size:11.5px;color:var(--muted)}
.ci-chips{display:flex;flex-wrap:wrap;gap:5px;flex:1;min-width:0}
.ci-chip{font-size:10.5px;font-weight:600;color:var(--muted);background:var(--card-2);padding:2px 8px;border-radius:6px;white-space:nowrap}
.ci-chip-soft{color:var(--teal);background:color-mix(in srgb,var(--teal) 10%,var(--surf))}
.ci-metarow .ci-remove{margin-left:auto;flex:0 0 auto}
.ci-plan{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-top:8px}
.ci-plan-opt{flex:1;min-width:0;padding:6px 8px;text-align:center;font-family:var(--font-body);font-size:11.5px;font-weight:600;line-height:1.2;color:var(--muted);background:transparent;border:0;cursor:pointer;transition:background .14s,color .14s}
.ci-plan-opt.active{background:var(--teal);color:#fff}
.ci-plan-opt:not(.active):hover{background:var(--card-2);color:var(--teal-ink)}
.ci-freq{font-size:11px;font-weight:600;color:var(--teal);margin-top:3px;display:flex;align-items:center;gap:4px}
.ci-freq svg{width:12px;height:12px;stroke:currentColor;stroke-width:2;fill:none;flex-shrink:0}
.ci-row{display:flex;align-items:center;justify-content:space-between;margin-top:9px}
.ci-qty{display:flex;align-items:center;border:1px solid var(--cart-line);border-radius:var(--radius-sm);overflow:hidden}
.ci-qty button{width:26px;height:26px;font-size:15px;font-weight:600;color:var(--teal-ink);background:#fff;border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s}
.ci-qty button:hover{background:var(--card-2)}
.ci-qty button[disabled]{opacity:.4;cursor:default}
.ci-qty span{min-width:26px;text-align:center;font-size:13px;font-weight:700;color:var(--teal-ink)}
.ci-price{font-size:14px;font-weight:700;color:var(--teal-ink)}
.ci-remove{flex-shrink:0;margin-left:auto;width:24px;height:24px;border-radius:7px;display:flex;align-items:center;justify-content:center;color:var(--muted);border:0;background:transparent;cursor:pointer;transition:background .12s,color .12s}
.ci-remove svg{width:15px;height:15px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
.ci-remove:hover{background:color-mix(in srgb,var(--accent) 13%,var(--surf));color:var(--accent-deep)}
/* loading state while an AJAX cart update is in flight */
.cart-menu.is-loading{pointer-events:none}
.cart-menu.is-loading .cart-body{opacity:.55;transition:opacity .15s}
/* free gift line */
.cart-item.gift{border-top:1px dashed var(--line);background:color-mix(in srgb, var(--teal) 7%, var(--surf))}
.ci-giftbadge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--teal);margin-bottom:3px}
.ci-giftbadge svg{width:13px;height:13px;stroke:var(--teal);stroke-width:1.8;fill:none}
.ci-giftqty{font-size:12px;font-weight:600;color:var(--muted)}
.ci-price .ci-free{color:var(--teal);font-weight:800;letter-spacing:.02em}
.ci-price s{color:var(--muted);font-weight:500;font-size:12px;margin-right:3px}
.cart-empty{padding:30px 16px 26px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px;border-top:1px solid var(--line)}
.cart-empty svg{width:34px;height:34px;stroke:var(--line-2);stroke-width:1.6;fill:none}
.cart-empty p{font-size:13px;font-weight:600;color:var(--muted)}
.cart-empty .ce-shop{font-size:13px;font-weight:700;color:var(--teal);margin-top:4px}
.cart-foot{padding:14px 18px 18px;border-top:1px solid var(--cart-line);background:var(--cart-2);flex-shrink:0}
.cf-sub{display:flex;align-items:baseline;justify-content:space-between;font-size:13px;font-weight:600;color:var(--teal-ink)}
.cf-sub b{font-family:var(--font-display);font-size:18px;font-weight:600}
.cf-note{font-size:11px;color:var(--muted);margin:3px 0 11px}
.cf-savings{display:flex;align-items:center;gap:7px;background:#e1f5ee;color:#0f6e56;font-size:12px;font-weight:600;padding:8px 11px;border-radius:9px;margin-bottom:11px}
.cf-savings svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linejoin:round;flex-shrink:0}
.cf-checkout{display:block;text-align:center;background:var(--cta);color:#fff;font-weight:700;font-size:14px;padding:12px;border-radius:var(--radius-sm);transition:background .14s,transform .14s}
.cf-checkout:hover{background:var(--cta-deep);transform:translateY(-1px)}
.cf-view{display:block;text-align:center;font-size:12.5px;font-weight:600;color:var(--teal);margin-top:9px}
.cf-secure{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:11px;font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.01em}
.cf-secure svg{width:13px;height:13px;stroke:var(--green);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
/* cross-sell / upsell strip */
.cart-xsell{border-top:1px solid var(--cart-line);padding:14px 18px 6px;background:var(--cart-surface)}
.cart-xsell[hidden]{display:none}
.cx-head{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.cx-head svg{width:14px;height:14px;fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.cx-row{display:flex;flex-direction:column;gap:8px}
.cx-card{display:flex;align-items:center;gap:11px;padding:8px;border:1px solid var(--cart-line);border-radius:var(--radius);background:var(--cart-2);transition:border-color .14s,box-shadow .14s}
.cx-card:hover{border-color:color-mix(in srgb,var(--teal) 40%,var(--line));box-shadow:0 3px 10px rgba(0,0,0,.05)}
.cx-thumb{width:46px;height:46px;flex-shrink:0;border-radius:var(--radius-sm);background:#fff;border:1px solid var(--cart-line);overflow:hidden;display:flex;align-items:center;justify-content:center}
.cx-thumb img{width:100%;height:100%;object-fit:contain}
.cx-info{flex:1;min-width:0}
.cx-name{font-size:12.5px;font-weight:700;color:var(--teal-ink);line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cx-meta{font-size:11px;color:var(--muted);margin-top:1px}
.cx-meta b{color:#163e63;font-weight:700}
.cx-add{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;background:var(--teal);color:#fff;border:1px solid var(--teal);font-weight:700;font-size:12px;padding:7px 12px;border-radius:var(--radius-sm);cursor:pointer;box-shadow:0 1px 3px rgba(7,26,31,.18);transition:background .14s,border-color .14s,transform .12s,box-shadow .14s}
.cx-add svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}
.cx-add:hover{background:#235a8c;border-color:#235a8c;transform:translateY(-1px);box-shadow:0 4px 11px rgba(1,134,155,.32)}
.cx-add:active{transform:translateY(0);box-shadow:0 1px 3px rgba(7,26,31,.2)}
.cx-add.added{background:var(--green);color:#fff;border-color:var(--green);box-shadow:none}
/* dark: cart drawer surfaces + POP the + Add button */
html[data-theme="dark"] .cart-menu{--cart-surface:#1c282a;--cart-2:#243234;--cart-line:#34433f}
html[data-theme="dark"] .cx-add{background:var(--teal);border-color:var(--teal);color:#06262f}
html[data-theme="dark"] .cx-add:hover{background:color-mix(in srgb, var(--teal) 70%, #000);border-color:color-mix(in srgb, var(--teal) 70%, #000);color:#fff;box-shadow:0 4px 12px rgba(55,183,204,.3)}
html[data-theme="dark"] .cx-add.added{background:var(--green);border-color:var(--green);color:#06262f}
@media(max-width:460px){
  .cart-menu{width:100vw;border-left:none}
}

/* ---- Dark-mode drawer overrides relocated from product-v2.css. ---- */
html[data-theme="dark"] .cart-dot b{background:color-mix(in srgb, var(--accent) 64%, #000)}
html[data-theme="dark"] .cf-checkout{background:color-mix(in srgb, var(--accent) 82%, #000)}
html[data-theme="dark"] .cf-checkout:hover{background:color-mix(in srgb, var(--accent) 62%, #000)}
html[data-theme="dark"] .cf-checkout,html[data-theme="dark"] .cart-dot b{background:var(--cta) !important}
html[data-theme="dark"] .cf-checkout:hover{background:var(--cta-deep) !important}

