/* ==========================================================================
   Hizjaab — Shared Components
   Every page loads: base.css → components.css → <page>.css
   Anything reused on more than one page lives here. Page-specific layout
   (hero, editorial sections, filter rails) stays in the page's own file.
   ========================================================================== */

/* ---------- layout helpers ---------- */
.container{
  max-width:var(--container-max);
  margin:0 auto;
  padding:0 56px;
}
@media (max-width:900px){
  .container{padding:0 24px}
}

/* ---------- header / nav ---------- */
.site-header{background:var(--surface-base);transition:background-color .25s ease}
.navbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:24px 56px;
}
@media (max-width:900px){
  .navbar{padding:18px 24px;flex-wrap:wrap}
}
.logo{
  font-family:var(--font-script);
  font-size:30px;
  color:var(--text-on-base);
  letter-spacing:.01em;
}
.logo-wrap{display:flex;align-items:center}
.logo-img{height:38px;width:auto;display:block}
.nav-pills{
  display:flex;
  align-items:center;
  gap:6px;
  background:var(--pill-bg);
  border:1px solid var(--pill-border);
  border-radius:var(--radius-pill);
  padding:6px;
}
@media (max-width:760px){
  .nav-pills{display:none}
}
.nav-pill{
  font-size:13px;
  color:var(--text-on-base-muted);
  padding:11px 22px;
  border-radius:var(--radius-pill);
  cursor:pointer;
  border:none;
  background:transparent;
  font-family:var(--font-sans);
  text-decoration:none;
  display:inline-block;
  line-height:1;
}
.nav-pill:hover{color:var(--text-on-base)}
.nav-pill.is-active{
  font-weight:600;
  color:var(--pill-active-text);
  background:var(--pill-active-bg);
}
.nav-pill.is-active:hover{color:var(--pill-active-text)}
.navbar-actions{display:flex;align-items:center;gap:14px}
.icon-btn{
  width:42px;height:42px;border-radius:50%;
  background:var(--pill-bg);
  border:1px solid var(--pill-border);
  color:var(--text-on-base);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  position:relative;
}
.icon-btn svg{width:16px;height:16px}
.theme-toggle svg{transition:transform .3s ease}
/* Cart count bubble — needed from the listing page onward. */
.icon-btn__count{
  position:absolute;top:-2px;right:-2px;
  min-width:18px;height:18px;padding:0 5px;
  border-radius:var(--radius-pill);
  background:var(--taupe-400);color:var(--plum-950);
  font-size:10px;font-weight:600;
  display:flex;align-items:center;justify-content:center;
}

/* ---------- buttons ---------- */
/* Works as both <button> and <a> — the navbar login and several CTAs are links. */
.btn{
  font-family:var(--font-sans);
  font-size:13px;
  font-weight:600;
  padding:13px 28px;
  border-radius:var(--radius-pill);
  background:var(--mauve-500);
  color:#fff;
  border:none;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  text-decoration:none;
  line-height:1;
  white-space:nowrap;
}
.btn:hover{background:var(--accent-primary-hover);color:#fff}
.btn-primary{
  background:var(--plum-900);
  font-size:12px;
  letter-spacing:var(--tracking-wide);
  text-transform:uppercase;
  padding:14px 30px;
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.btn-primary svg{width:14px;height:14px}
/* Outline variant on base surfaces — filter reset, "load more", etc. */
.btn-ghost{
  font-family:var(--font-sans);
  font-size:12px;
  letter-spacing:var(--tracking-wide);
  text-transform:uppercase;
  padding:14px 30px;
  border-radius:var(--radius-pill);
  background:transparent;
  color:var(--text-on-base);
  border:1px solid var(--hairline-on-base);
  cursor:pointer;
  display:inline-flex;align-items:center;gap:8px;
}
.btn-ghost:hover{background:var(--pill-bg)}
.btn-ghost svg{width:14px;height:14px}

.round-arrow{
  width:52px;height:52px;border-radius:50%;
  background:var(--umber-800);border:none;color:#fff;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;cursor:pointer;
}
.round-arrow svg{width:20px;height:20px}
.round-ghost{
  width:38px;height:38px;border-radius:50%;border:1px solid var(--border-subtle);
  background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;
}
.round-ghost svg{width:15px;height:15px;color:var(--text-primary)}
.round-fill{
  width:30px;height:30px;border-radius:50%;background:var(--taupe-400);border:none;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
}
.round-fill svg{width:13px;height:13px;color:var(--plum-950)}
.round-outline{
  width:30px;height:30px;border-radius:50%;background:transparent;border:1px solid var(--surface-inverse-control-border);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
}
.round-outline svg{width:13px;height:13px;color:var(--text-on-base-muted)}

/* ---------- chips ---------- */
.chip-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:28px}
/* Also used as an <a> on the 404 page, so it needs a block-level display. */
.chip{
  display:inline-flex;align-items:center;gap:6px;line-height:1;text-decoration:none;
  font-family:var(--font-sans);font-size:13px;padding:9px 20px;border-radius:var(--radius-pill);
  border:1px solid var(--border-subtle);background:transparent;color:var(--text-secondary);cursor:pointer;
}
.chip.is-active{border:none;background:var(--umber-800);color:#fff}
/* On dark base surfaces the pale hairline disappears, so chips get a
   theme-aware variant instead of the cream-section one. */
.chip-row--on-base .chip{
  border-color:var(--hairline-on-base);
  color:var(--text-on-base-muted);
}
.chip-row--on-base .chip:hover{color:var(--text-on-base);border-color:var(--text-on-base-muted)}
.chip-row--on-base .chip.is-active{
  background:var(--pill-active-bg);color:var(--pill-active-text);border-color:transparent;font-weight:600;
}

/* ---------- colour swatches + size pills (filters and product options) ---------- */
.swatch-grid{display:flex;flex-wrap:wrap;gap:10px}
.swatch{
  width:30px;height:30px;border-radius:50%;cursor:pointer;padding:0;
  border:1px solid var(--surface-inverse-control-border);
  position:relative;
}
.swatch.is-active{box-shadow:0 0 0 2px var(--surface-inverse-card),0 0 0 3px var(--taupe-400)}
.swatch svg{
  width:13px;height:13px;color:#fff;position:absolute;top:50%;left:50%;
  transform:translate(-50%,-50%);opacity:0;filter:drop-shadow(0 0 2px rgba(0,0,0,.6));
}
.swatch.is-active svg{opacity:1}
.swatch--lg{width:38px;height:38px}
.swatch--lg svg{width:15px;height:15px}

.size-grid{display:flex;flex-wrap:wrap;gap:8px}
.size-btn{
  min-width:44px;padding:9px 12px;border-radius:var(--radius-pill);
  font-family:var(--font-sans);font-size:12px;
  background:transparent;color:var(--text-on-base-muted);
  border:1px solid var(--surface-inverse-control-border);cursor:pointer;
}
.size-btn:hover{color:var(--text-on-base)}
.size-btn.is-active{background:var(--pill-active-bg);color:var(--pill-active-text);border-color:transparent;font-weight:600}
.size-btn:disabled{opacity:.35;cursor:not-allowed;text-decoration:line-through}
.size-btn--lg{min-width:54px;padding:12px 16px;font-size:13px}

/* ---------- quantity stepper ----------
   The +/- glyphs are inline SVG rather than lucide placeholders: this control
   is re-rendered on every variant change, and a missed icon pass leaves the
   customer with two invisible buttons. */
.qty{
  display:inline-flex;align-items:center;flex-shrink:0;
  border:1px solid var(--surface-inverse-control-border);
  border-radius:var(--radius-pill);padding:3px;
}
.qty button{
  width:32px;height:32px;border-radius:50%;border:none;background:transparent;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  color:var(--text-on-base);padding:0;
}
.qty button:hover{background:var(--pill-bg)}
.qty button:disabled{opacity:.35;cursor:not-allowed}
.qty button:disabled:hover{background:transparent}
.qty button svg{width:14px;height:14px;display:block}
.qty .n{
  min-width:30px;text-align:center;
  font-size:14px;color:var(--text-on-base);font-variant-numeric:tabular-nums;
}

/* ---------- section heads ---------- */
.section-head{
  display:flex;justify-content:space-between;align-items:flex-start;gap:32px;flex-wrap:wrap;
}
.section-head__lede{
  max-width:280px;font-family:var(--font-serif);font-size:17px;font-style:italic;
  color:var(--text-muted);margin:0;line-height:1.5;
}
.section-head__title{
  font-family:var(--font-display);font-size:40px;color:var(--plum-900);text-align:left;margin:0;
}
.dark-section-head{
  display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:44px;flex-wrap:wrap;gap:16px;
}
.dark-section-head h2{font-family:var(--font-display);font-size:30px;color:var(--text-on-base-heading);margin:0}
.dark-section-head p{font-size:13px;color:var(--text-on-base-muted);margin:6px 0 0}
.view-all-link{font-size:13px;color:var(--text-on-base-muted);display:flex;align-items:center;gap:6px}
.view-all-link svg{width:14px;height:14px}
.carousel-nav{display:flex;gap:10px;align-items:center}
.carousel-nav .round-ghost{border-color:var(--surface-inverse-control-border)}
.carousel-nav .round-ghost svg{color:var(--text-on-base-muted)}

/* ---------- breadcrumb + page head (listing, detail, cart, static pages) ---------- */
.breadcrumb{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-size:12px;color:var(--text-on-base-muted);
}
.breadcrumb a{color:var(--text-on-base-muted)}
.breadcrumb a:hover{color:var(--text-on-base)}
.breadcrumb svg{width:12px;height:12px;opacity:.6}
.breadcrumb .is-current{color:var(--text-on-base)}

.page-head{padding:8px 0 40px}
.page-head__eyebrow{
  font-size:11px;letter-spacing:var(--tracking-wider);text-transform:uppercase;
  color:var(--taupe-400);margin:28px 0 14px;
}
.page-head__title{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(34px,5vw,56px);line-height:var(--leading-snug);
  color:var(--text-on-base-heading);margin:0;
}
.page-head__lede{
  font-family:var(--font-serif);font-style:italic;font-size:18px;
  color:var(--text-on-base-muted);margin:14px 0 0;max-width:520px;line-height:1.5;
}

/* ---------- collection cards ---------- */
.collection-grid, .product-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:20px;
}
@media (max-width:1000px){
  .collection-grid, .product-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
  .collection-grid, .product-grid{grid-template-columns:1fr}
}
.collection-card{
  background:var(--surface-inverse-card);border:1px solid var(--surface-inverse-card-border);border-radius:25px;padding:16px;
  transition:background-color .25s ease,border-color .25s ease;
}
.collection-card__media{position:relative;margin-bottom:16px}
.collection-card__icon{
  position:absolute;top:12px;left:12px;width:36px;height:36px;border-radius:50%;
  background:rgba(20,15,17,.55);border:1px solid var(--surface-inverse-control-border);
  display:flex;align-items:center;justify-content:center;z-index:1;
}
.collection-card__icon svg{width:15px;height:15px;color:var(--taupe-400)}
.collection-card .img-slot{width:100%;height:309px;border-radius:16px}
.collection-card__name{font-family:var(--font-display);font-size:18px;color:var(--text-on-base-heading)}
.collection-card__count{font-size:12px;color:var(--text-on-base-muted);margin:4px 0 12px}
.collection-card__link{font-size:12px;color:var(--taupe-400);display:flex;align-items:center;gap:6px}
.collection-card__link svg{width:12px;height:12px;flex-shrink:0}

/* ---------- product cards ---------- */
.product-card{
  background:var(--surface-inverse-card);border:1px solid var(--surface-inverse-card-border);border-radius:25px;padding:16px;
  box-sizing:border-box;position:relative;
  transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease,transform .25s ease;
}
.product-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-card-hover)}
/* Whole-card hit area. Sits above the media but below the action buttons so
   "add to bag" and "wishlist" stay clickable without nesting them in a link. */
.product-card__hit{position:absolute;inset:0;z-index:1;border-radius:25px}
.product-card__media{position:relative;margin-bottom:16px}
.product-wish, .product-actions{position:relative;z-index:2}
.product-card .img-slot{width:100%;height:361px;border-radius:16px}
.product-tag{
  position:absolute;top:10px;left:10px;z-index:1;color:#fff;font-size:9px;
  letter-spacing:var(--tracking-wider);text-transform:uppercase;padding:4px 10px;border-radius:var(--radius-pill);
}
.product-wish{
  position:absolute;top:10px;right:10px;z-index:1;
  width:30px;height:30px;border-radius:50%;
  background:rgba(20,15,17,.45);border:1px solid rgba(255,255,255,.18);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  opacity:0;transition:opacity .2s ease;
}
.product-card:hover .product-wish{opacity:1}
.product-wish svg{width:14px;height:14px;color:#fff}
.product-card__footer{display:flex;justify-content:space-between;align-items:center;position:relative}
.product-card__overlay{
  position:absolute;left:-1px;top:-119px;width:calc(100% + 2px);height:104px;
  display:flex;flex-direction:column;justify-content:flex-end;gap:4px;padding:0 14px 12px;
  background:linear-gradient(180deg, #18061400, #3E2833F3);
}
/* Name/price/size sit on a fixed dark photo scrim (not the themed card
   surface), so they stay light regardless of site theme. */
.product-card__title-row{display:flex;align-items:baseline;gap:8px;color:#fff}
.product-card__title-row .name{font-family:var(--font-display);font-size:15px}
.product-card__title-row .price{font-size:12px;color:var(--mauve-300)}
.product-card__title-row .price-was{font-size:11px;color:rgba(255,255,255,.5);text-decoration:line-through}
.product-card__size{font-size:10px;color:var(--cream-100)}
.product-colors{display:flex;gap:5px}
.product-colors span{
  width:12px;height:12px;border-radius:50%;display:inline-block;border:1px solid rgba(255,255,255,.3);
}
.product-actions{display:flex;gap:6px}
.color-dots{display:flex;gap:5px;margin-top:4px}
.color-dot{width:10px;height:10px;border-radius:50%}
.badge-new{
  position:absolute;top:14px;left:14px;
  background:var(--plum-900);color:#fff;
  font-size:10px;letter-spacing:var(--tracking-wider);text-transform:uppercase;
  padding:4px 10px;border-radius:var(--radius-pill);
}

/* ---------- size chart (homepage "why" block + product detail) ---------- */
.size-label{
  font-size:11px;letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--text-muted);
  text-align:center;margin-bottom:6px;
}
.size-chart{display:flex;align-items:center;gap:6px}
.size-chart .axis{font-size:11px;color:var(--text-muted);writing-mode:vertical-rl}
.size-chart table{
  flex:1;border:1px solid var(--border-subtle);border-radius:12px;overflow:hidden;
  border-collapse:collapse;width:100%;
}
.size-chart thead td{background:var(--umber-600);color:#fff;font-size:11px;padding:6px;text-align:center}
.size-chart tbody td{background:#fff;color:var(--text-muted);font-size:11px;padding:6px;text-align:center}

/* ---------- talk-to-us button ---------- */
/* Support, not a third CTA — kept visually quieter than the buy buttons. */
.help-btn{
  width:100%;cursor:pointer;
  display:flex;align-items:center;gap:11px;text-align:left;
  padding:10px 14px;border-radius:var(--radius-pill);
  background:linear-gradient(100deg,var(--umber-800),var(--plum-800));
  border:1px solid var(--surface-inverse-control-border);
  transition:transform .18s ease,box-shadow .18s ease;
}
.help-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.help-btn__icon{
  width:30px;height:30px;border-radius:50%;flex-shrink:0;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2);
  display:flex;align-items:center;justify-content:center;position:relative;
}
.help-btn__icon svg{width:14px;height:14px;color:#fff}
.help-btn__icon::after{
  content:"";position:absolute;top:0;right:0;
  width:8px;height:8px;border-radius:50%;
  background:var(--state-success);border:2px solid var(--umber-800);
  animation:help-pulse 2.4s ease-in-out infinite;
}
@keyframes help-pulse{
  0%,100%{transform:scale(1);opacity:1}
  50%{transform:scale(1.18);opacity:.75}
}
@media (prefers-reduced-motion:reduce){
  .help-btn__icon::after{animation:none}
}
.help-btn__copy strong{
  display:block;font-family:var(--font-sans);font-size:12px;font-weight:600;color:#fff;
}
.help-btn__copy span{display:block;font-size:10px;color:var(--cream-200);margin-top:1px}
.help-btn__arrow{margin-left:auto;flex-shrink:0}
.help-btn__arrow svg{width:14px;height:14px;color:var(--cream-200)}

/* ---------- contact popup ---------- */
.contact-modal{width:min(420px,100%);text-align:center}
.contact-modal__icon{
  width:62px;height:62px;border-radius:50%;margin:4px auto 18px;
  background:linear-gradient(100deg,var(--umber-800),var(--plum-800));
  border:1px solid var(--surface-inverse-control-border);
  display:flex;align-items:center;justify-content:center;
}
.contact-modal__icon svg{width:24px;height:24px;color:#fff}
.contact-modal h3{margin-bottom:8px}
.contact-modal .number{
  font-family:var(--font-display);font-size:22px;color:var(--text-on-base-heading);
  letter-spacing:.02em;margin:0 0 6px;
}
.contact-modal .hours{font-size:12px;color:var(--text-on-base-muted);margin:0 0 24px}
.contact-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:420px){.contact-options{grid-template-columns:1fr}}
.contact-option{
  display:flex;flex-direction:column;align-items:center;gap:9px;
  padding:22px 16px;border-radius:20px;cursor:pointer;text-decoration:none;
  border:1px solid var(--surface-inverse-control-border);
  background:var(--surface-inverse-media);
  transition:transform .18s ease,border-color .18s ease;
}
.contact-option:hover{transform:translateY(-3px);border-color:var(--taupe-400)}
.contact-option .ic{
  width:44px;height:44px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
}
.contact-option .ic svg{width:19px;height:19px;color:#fff}
.contact-option--call .ic{background:var(--umber-800)}
.contact-option--wa .ic{background:#25D366}
.contact-option strong{font-size:13px;color:var(--text-on-base-heading)}
.contact-option span{font-size:11px;color:var(--text-on-base-muted);text-align:center;line-height:1.4}
.contact-modal__note{font-size:11px;color:var(--text-on-base-muted);margin:20px 0 0}

/* ---------- forms (checkout, contact, account) ---------- */
.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:620px){.field-grid{grid-template-columns:1fr}}
.field{display:flex;flex-direction:column}
.field--full{grid-column:1 / -1}
.field label{
  font-size:11px;letter-spacing:var(--tracking-wider);text-transform:uppercase;
  color:var(--text-on-base-muted);margin-bottom:9px;
}
.field label .req{color:var(--state-error)}
.field input, .field textarea, .field select{
  font-family:var(--font-sans);font-size:14px;
  color:var(--text-on-base);
  background:var(--surface-inverse-media);
  border:1px solid var(--surface-inverse-control-border);
  border-radius:14px;padding:14px 16px;width:100%;
  transition:border-color .18s ease;
}
.field textarea{resize:vertical;min-height:88px;line-height:1.55}
.field select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:40px}
.field input:focus, .field textarea:focus, .field select:focus{
  outline:none;border-color:var(--taupe-400);
}
.field input::placeholder, .field textarea::placeholder{color:var(--text-on-base-muted);opacity:.7}
.field .help{font-size:11px;color:var(--text-on-base-muted);margin-top:8px}
.field.has-error input, .field.has-error textarea, .field.has-error select{border-color:var(--state-error)}
.field .error{
  display:none;font-size:11px;color:var(--state-error);margin-top:8px;
  align-items:center;gap:6px;
}
.field.has-error .error{display:flex}
.field .error svg{width:12px;height:12px}

.field--phone{position:relative}
.phone-wrap{display:flex;align-items:stretch}
.phone-prefix{
  display:flex;align-items:center;padding:0 14px;
  font-size:14px;color:var(--text-on-base-muted);
  background:var(--surface-inverse-media);
  border:1px solid var(--surface-inverse-control-border);
  border-right:none;border-radius:14px 0 0 14px;
}
.phone-wrap input{border-radius:0 14px 14px 0}
.select-arrow{position:relative}
.select-arrow > svg{
  position:absolute;right:16px;top:50%;transform:translateY(-50%);
  width:14px;height:14px;color:var(--text-on-base-muted);pointer-events:none;
}

.switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;color:var(--text-on-base)}
.switch{position:relative;width:40px;height:22px;flex-shrink:0}
.switch input{position:absolute;opacity:0;pointer-events:none}
.switch .track{
  position:absolute;inset:0;border-radius:var(--radius-pill);cursor:pointer;
  background:var(--pill-bg);border:1px solid var(--surface-inverse-control-border);
  transition:background-color .2s ease;
}
.switch .track::after{
  content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;
  background:var(--text-on-base-muted);transition:transform .2s ease,background-color .2s ease;
}
.switch input:checked + .track{background:var(--pill-active-bg);border-color:transparent}
.switch input:checked + .track::after{transform:translateX(18px);background:var(--pill-active-text)}


.btn-submit{
  margin-top:22px;
  font-family:var(--font-sans);font-size:12px;font-weight:600;
  letter-spacing:var(--tracking-wide);text-transform:uppercase;
  padding:17px 36px;border-radius:var(--radius-pill);
  background:var(--taupe-400);color:var(--plum-950);border:none;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  transition:background-color .2s ease;
}
.btn-submit:hover{background:var(--taupe-600);color:#fff}
.btn-submit svg{width:15px;height:15px}

/* ---------- order summary blocks (cart + checkout) ---------- */
.coupon{display:flex;gap:10px}
.coupon input{
  flex:1;min-width:0;font-family:var(--font-sans);font-size:13px;
  color:var(--text-on-base);background:var(--surface-inverse-media);
  border:1px solid var(--surface-inverse-control-border);
  border-radius:var(--radius-pill);padding:13px 18px;
}
.coupon input:focus{outline:none;border-color:var(--taupe-400)}
.coupon input::placeholder{color:var(--text-on-base-muted);opacity:.7}
.coupon button{
  flex-shrink:0;font-family:var(--font-sans);font-size:11px;font-weight:600;
  letter-spacing:var(--tracking-wide);text-transform:uppercase;
  padding:13px 20px;border-radius:var(--radius-pill);
  background:var(--pill-bg);color:var(--text-on-base);
  border:1px solid var(--surface-inverse-control-border);cursor:pointer;
}
.coupon button:hover{border-color:var(--taupe-400)}
.coupon-msg{font-size:11px;margin-top:10px;display:none}
.coupon-msg.is-ok{display:block;color:var(--state-success)}
.coupon-msg.is-bad{display:block;color:var(--state-error)}

.totals{display:grid;gap:12px}
.total-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:13px}
.total-row span:first-child{color:var(--text-on-base-muted)}
.total-row span:last-child{color:var(--text-on-base);text-align:right}
.total-row.is-free span:last-child{color:var(--state-success)}
.total-row.is-discount span:last-child{color:var(--state-success)}
.total-row--grand{border-top:1px solid var(--hairline-on-base);padding-top:16px;margin-top:4px}
.total-row--grand span:first-child{
  font-size:12px;letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--text-on-base-muted);
}
.total-row--grand span:last-child{
  font-family:var(--font-display);font-size:26px;color:var(--text-on-base-heading);
}

.summary-trust{display:grid;gap:11px}
.summary-trust div{display:flex;align-items:center;gap:9px;font-size:11px;color:var(--text-on-base-muted)}
.summary-trust svg{width:14px;height:14px;color:var(--taupe-400);flex-shrink:0}

/* Payment method colours, used as both option logos and footer chips. */
.logo-cod{background:var(--state-success)}
.logo-bkash{background:#E2136E}
.logo-nagad{background:#EE7F25}
.logo-card{background:var(--plum-800)}

/* ---------- dialogs ---------- */
.modal-scrim{
  position:fixed;inset:0;z-index:60;
  background:rgba(20,12,16,.6);
  display:flex;align-items:center;justify-content:center;padding:24px;
  opacity:0;pointer-events:none;transition:opacity .25s ease;
}
body.modal-open .modal-scrim{opacity:1;pointer-events:auto}
.modal{
  background:var(--surface-inverse-card);border:1px solid var(--surface-inverse-card-border);
  border-radius:25px;padding:30px;width:min(560px,100%);max-height:86vh;overflow-y:auto;
  transform:translateY(12px);transition:transform .25s ease;
}
body.modal-open .modal{transform:translateY(0)}
.modal__head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:6px}
.modal__head h3{font-family:var(--font-display);font-size:24px;color:var(--text-on-base-heading);margin:0}
.modal__close{
  width:34px;height:34px;border-radius:50%;flex-shrink:0;
  background:var(--pill-bg);border:1px solid var(--pill-border);
  color:var(--text-on-base);display:flex;align-items:center;justify-content:center;cursor:pointer;
}
.modal__close svg{width:15px;height:15px}
.modal p{font-size:13px;line-height:1.6;color:var(--text-on-base-muted);margin:0 0 20px}
.modal table{width:100%;border-collapse:collapse;border-radius:14px;overflow:hidden}
.modal thead td{
  background:var(--umber-600);color:#fff;font-size:11px;padding:11px 8px;text-align:center;
  letter-spacing:var(--tracking-wide);text-transform:uppercase;
}
.modal tbody td{
  background:var(--surface-inverse-media);color:var(--text-on-base);
  font-size:12px;padding:11px 8px;text-align:center;
  border-top:1px solid var(--surface-inverse-card-border);
}
.modal tbody td:first-child{color:var(--text-on-base-heading);font-weight:600}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);
  z-index:70;display:flex;align-items:center;gap:10px;
  background:var(--plum-950);color:var(--cream-100);
  border:1px solid var(--plum-700);border-radius:var(--radius-pill);
  padding:14px 24px;font-size:13px;
  opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease;
}
.toast.is-visible{opacity:1;transform:translate(-50%,0)}
.toast svg{width:15px;height:15px;color:var(--state-success)}

/* ---------- footer ---------- */
.site-footer{
  background:var(--surface-inverse);color:var(--text-on-base);
  transition:background-color .25s ease;
  padding:64px 56px 32px;
}
@media (max-width:900px){.site-footer{padding:48px 24px 24px}}
.footer-top{display:flex;justify-content:space-between;flex-wrap:wrap;gap:40px;margin-bottom:48px}
.footer-brand{max-width:260px}
.footer-brand .logo{font-family:var(--font-display);font-size:26px;margin-bottom:12px;color:var(--text-on-base-heading)}
.footer-brand .logo-img{height:34px;margin-bottom:12px}
.footer-brand p{font-size:13px;color:var(--text-on-base-muted);line-height:1.6;margin:0}
.footer-col-title{
  font-size:11px;letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--text-on-base-muted);
  margin-bottom:16px;
}
.footer-link{
  display:block;font-size:13px;margin-bottom:11px;
  color:var(--text-on-base-muted);opacity:.85;cursor:pointer;text-decoration:none;
}
.footer-link:hover{opacity:1;color:var(--text-on-base)}
.footer-legal a{color:var(--text-on-base-muted)}
.footer-legal a:hover{color:var(--text-on-base)}
.footer-bottom{
  display:flex;justify-content:space-between;align-items:center;padding-top:24px;
  border-top:1px solid var(--hairline-on-base);flex-wrap:wrap;gap:16px;
}
.footer-copy{font-size:12px;color:var(--text-on-base-muted)}
.footer-legal{display:flex;gap:20px;font-size:12px;color:var(--text-on-base-muted)}
.footer-legal span{cursor:pointer}
.footer-social{display:flex;gap:10px}
.footer-social a{
  width:32px;height:32px;border-radius:50%;border:1px solid var(--hairline-on-base);background:transparent;
  display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:11px;
  color:var(--text-on-base-muted);text-decoration:none;
  transition:border-color .18s ease,color .18s ease;
}
.footer-social a:hover{border-color:var(--taupe-400);color:var(--taupe-400)}
