/* =====================================================
   GIFT FLOW CART — SINGLE SOURCE OF TRUTH
   Mobile → Tablet → Desktop
===================================================== */


/* =====================================================
   MOBILE — BOTTOM CART BAR
===================================================== */
.gf-mobile-cart-bar{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  z-index:999;
  background:#fff;
  border-top:1px solid rgba(0,0,0,.08);
  box-shadow:0 -2px 10px rgba(0,0,0,.08);
}

.gf-mobile-cart-inner{
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-rows:auto auto;
  gap:8px;
  align-items:center;
  padding:10px 16px 12px;
}

.gf-mobile-secure{
  grid-column:1/-1;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  font-size:12px;
  font-weight:700;
  color:#6B7280;
}

.gf-mobile-secure svg{
  width:14px;
  height:14px;
  stroke:#22C55E;
}

.gf-cart-summary{
  font-size:14px;
  font-weight:600;
    margin: 10px;
}

.gf-mobile-cart-inner .gf-btn{
  padding:10px 20px;
  border-radius:999px;
  font-size:14px;
  font-weight:800;
  white-space:nowrap;
}


/* =====================================================
   CART PANEL + SHEET
===================================================== */
.gf-cart-panel{
  position:fixed;
  inset:0;
  z-index:9999;
  display:none;
  background:rgba(0,0,0,.55);
}

.gf-cart-panel.is-open{display:block;}

.gf-cart-sheet{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  background:#fff;
  border-radius:20px 20px 0 0;
  display:flex;
  flex-direction:column;
  max-height:80vh;
  overflow:hidden;
  transform:translateY(100%);
  transition:transform .35s ease;
  box-shadow:0 -15px 50px rgba(0,0,0,.2);
}

.gf-cart-panel.is-open .gf-cart-sheet{
  transform:translateY(0);
}


/* =====================================================
   PANEL HEADER / BODY / FOOTER
===================================================== */
.gf-cart-panel-header{
  position:sticky;
  top:0;
  z-index:20;
  background:linear-gradient(180deg,#f7f6ff 0%,#ffffff 100%);
  border-bottom:1px solid rgba(109,92,255,.12);
  padding:16px 20px;
  font-size:17px;
  font-weight:800;
  display:flex;
  justify-content:space-between;
  align-items:center;
}

.gf-cart-close{
  width:44px;
  height:44px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:none;
  background:none;
  border-radius:12px;
  font-size:26px;
  line-height:1;        /* ← removes vertical offset */
  color:#888;
}

.gf-cart-panel-body{
  flex:1;
  overflow-y:auto;
  padding:20px;
}

.gf-cart-footer{
  position:sticky;
  bottom:0;
  background:#fff;
  border-top:1px solid #eee;
  padding:16px 20px;
  box-shadow:0 -6px 20px rgba(0,0,0,.08);
}

.gf-cart-continue{
  width:100%;
  border:none;
  border-radius:12px;
  padding:16px;
  font-size:16px;
  font-weight:800;
  color:#fff;
  background:#6F5CFF;
  transition:
    transform .16s ease,
    opacity .16s ease,
    box-shadow .16s ease,
    background .16s ease;
}

.gf-cart-continue:not(:disabled):active{
  transform:translateY(1px);
}


/* =====================================================
   CART ITEMS
===================================================== */
/* =========================================
   GIFTFLOW — CART REMOVE (FINAL BIN)
========================================= */

.gf-cart-remove{
  all:unset;
  cursor:pointer;

  display:flex;
  align-items:center;
  justify-content:center;

  width:40px;
  height:40px;
  border-radius:14px; /* more rounded square */

  background:#FFFFFF;
  border:1px solid rgba(0,0,0,.06);

  box-shadow:
    0 6px 16px rgba(20,20,40,.08),
    inset 0 1px 0 rgba(255,255,255,.9);

  transition:
    transform .16s ease,
    box-shadow .16s ease,
    border-color .16s ease;
}

/* icon */
.gf-cart-remove svg{
  width:18px;
  height:18px;
  stroke:#4B5563;   /* GiftFlow charcoal */
  stroke-width:1.9;
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
  display:block;      /* removes inline baseline offset */

}
.gf-cart-remove svg{
  stroke:#6B7280; /* idle soft */
}

.gf-cart-remove:hover svg{
  stroke:#374151; /* hover slightly darker */
}


/* hover */
.gf-cart-remove:hover{
  transform:translateY(-1px);
  border-color:rgba(0,0,0,.12);
  box-shadow:
    0 10px 20px rgba(20,20,40,.12),
    inset 0 1px 0 rgba(255,255,255,.9);
}

/* active */
.gf-cart-remove:active{
  transform:translateY(0);
  box-shadow:
    0 4px 10px rgba(20,20,40,.12),
    inset 0 1px 0 rgba(255,255,255,.8);
}

.gf-cart-items{
  display:flex;
  flex-direction:column;
  gap:12px;
}

.gf-cart-item{
  display:grid;
  grid-template-columns:64px minmax(0,1fr) auto;
  align-items:center;
  gap:14px;
  padding:16px;
  background:#fff;
  border-radius:18px;
  box-shadow:0 8px 22px rgba(0,0,0,.05);
}

.gf-cart-item-img{
  width:64px;
  height:64px;
  border-radius:14px;
  object-fit:cover;
}

.gf-cart-item-body{
  display:flex;
  flex-direction:column;
  gap:10px;
  min-width:0;
}

.gf-cart-item-title{
  font-size:14px;
  font-weight:600;
  color:#2d2d2d;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.gf-cart-item-controls{
  display:flex;
  align-items:center;
  gap:10px;
}

.gf-cart-controls{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:4px;
  background:#f6f7fb;
  border-radius:14px;
}

.gf-qty-btn{
  width:34px;
  height:34px;
  border:1px solid rgba(0,0,0,.04);
  background:#fff !important;
  border-radius:10px;
  font-size:18px;
  font-weight:900;
  color:#6b7280 !important;
  display:flex;
  align-items:center;
  justify-content:center;
}

.gf-cart-qty-value{
  width:34px;
  text-align:center;
  font-size:16px;
  font-weight:900;
  color:#111;
}

.gf-cart-item-price{
  justify-self:end;
  font-size:14px;
  font-weight:700;
  color:#2d2d2d;
  white-space:nowrap;
}


/* =====================================================
   SUMMARY
===================================================== */
.gf-cart-summary .gf-cart-line{
  display:flex;
  justify-content:space-between;
  font-size:13.5px;
  color:#666;
}


.gf-cart-total{
  display:flex;
  justify-content:space-between;
  font-size:18px;
  font-weight:900;
  margin-top:10px;
  color:#111;
}


/* =====================================================
   TABLET
===================================================== */
@media (min-width:768px){

  .gf-cart-sheet{max-height:82vh;}

  .gf-cart-item-title{font-size:17px;}
  .gf-cart-item-price{font-size:18px;}

  .gf-cart-remove{
    width:32px;
    height:32px;
  }

}


/* =====================================================
   DESKTOP
===================================================== */
@media (min-width:1024px){

  /* hide mobile bar */
  .gf-mobile-cart-bar{display:none;}

  /* side sheet */
  .gf-cart-sheet{
    top:60px;
    right:20px;
    bottom:20px;
    left:auto;
    width:600px;
    border-radius:16px;
    transform:translateX(100%);
    box-shadow:-24px 0 60px rgba(0,0,0,.15);
  }

  .gf-cart-panel.is-open .gf-cart-sheet{
    transform:translateX(0);
  }

  .gf-cart-item{
    margin-bottom:14px;
    box-shadow:0 6px 18px rgba(30,20,80,.06);
  }

  /* floating trigger */
  .gf-floating-cart-trigger{
    position:fixed;
    right:40px;
    bottom:40px;
    z-index:10001;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:10px;
  }

  .gf-floating-cart-btn{
    position:relative;
    width:78px;
    height:78px;
	border: 2px solid #fff;
    border-radius:50%;
    display:flex;
    align-items:center;
    justify-content:center;

    background:linear-gradient(145deg,#8A5CFF,#6F5CFF);
    box-shadow:
      0 14px 34px rgba(109,92,255,.35),
      inset 0 1px 0 rgba(255,255,255,.25);

    transition:transform .18s ease, box-shadow .18s ease;
  }

  .gf-floating-cart-btn:hover{
    transform:translateY(-2px) scale(1.05);
    box-shadow:
      0 18px 42px rgba(109,92,255,.45),
      inset 0 1px 0 rgba(255,255,255,.25);
  }

  .gf-cart-icon-wrap svg{
    width:30px;
    height:30px;
    stroke:#fff;
  }

  /* badge attached to rim */
  .gf-cart-badge{
    position:absolute;
    top:-6px;
    right:-6px;

    min-width:26px;
    height:26px;
    padding:0 7px;

    display:flex;
    align-items:center;
    justify-content:center;

    border-radius:999px;
    background:linear-gradient(180deg,#8A5CFF,#6F5CFF);
    color:#fff;

    font-size:12px;
    font-weight:900;

    border:2px solid #fff;
    box-shadow:
      0 10px 18px rgba(109,92,255,.28),
      0 4px 10px rgba(0,0,0,.18);
  }

  .gf-secure-text{
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:8px 14px;
    border-radius:999px;

    background:rgba(255,255,255,.92);
    backdrop-filter:blur(6px);

    font-size:13px;
    font-weight:800;
    color:#1F2937;

    border:1px solid rgba(0,0,0,.06);
    box-shadow:0 10px 26px rgba(0,0,0,.12);

    margin-top:-6px;
  }

  .gf-secure-text svg{
    width:16px;
    height:16px;
    stroke:#22C55E;
  }

  .gf-cart-panel.is-open ~ .gf-floating-cart-trigger{
    display:none;
  }

}


/* =====================================================
   SCROLL LOCK
===================================================== */
html.gf-cart-open,
body.gf-cart-open{
  height:100%;
  overflow:hidden;
  position:fixed;
  width:100%;
}

/* =====================================================
   VISIBILITY RULES — CART TRIGGERS
   Mobile+Tablet: bottom bar
   Desktop: floating button
===================================================== */

/* show bottom bar by default */
.gf-mobile-cart-bar{
  display:block;
}

/* hide floating trigger by default */
.gf-floating-cart-trigger{
  display:none;
}

/* desktop switch */
@media (min-width:1024px){

  .gf-mobile-cart-bar{
    display:none !important;
  }

  .gf-floating-cart-trigger{
    display:flex;
  }

}
/* COMPLETION OF CHECKOUT */
.gf-checkout-card{
  max-width:920px;
  margin:0 auto;
  padding:28px;
}

.gf-checkout-header{
  margin-bottom:22px;
}

.gf-checkout-title{
  font-size:22px;
  font-weight:700;
  color:#1F2937;
}

.gf-checkout-ref{
  font-size:12px;
  color:#6B7280;
  margin-top:4px;
}

.gf-checkout-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:24px;
}

.gf-checkout-section-title{
  font-weight:600;
  margin-bottom:12px;
}

.gf-checkout-items{
  display:flex;
  flex-direction:column;
  gap:12px;
}

.gf-checkout-item{
  display:flex;
  gap:12px;
  align-items:center;
}

.gf-checkout-item-img img{
  width:56px;
  height:56px;
  object-fit:cover;
  border-radius:12px;
}

.gf-checkout-item-title{
  font-weight:600;
}

.gf-checkout-item-price{
  font-size:13px;
  color:#6B7280;
}

.gf-checkout-message{
  background:#F8F7FC;
  border-radius:14px;
  padding:14px;
  font-size:14px;
}

.gf-checkout-footer{
  margin-top:28px;
  border-top:1px solid #EEE;
  padding-top:20px;
  text-align:center;
}

.gf-checkout-total{
  font-size:20px;
  font-weight:700;
  margin-bottom:12px;
}

.gf-checkout-btn{
  width:100%;
  max-width:320px;
}

.gf-checkout-success{
  color:#16A34A;
  font-weight:600;
}

.gf-checkout-legal{
  font-size:12px;
  color:#6B7280;
  margin-top:10px;
}

@media(max-width:768px){
  .gf-checkout-grid{
    grid-template-columns:1fr;
  }
}

.gf-cart-item-img {
  width: 64px;
  height: 64px;
  object-fit: cover;
  background: #f8f8f8;
  transition: opacity 0.25s ease;
  opacity: 0.9;
}

.gf-img-placeholder {
  width: 64px;
  height: 64px;
  background: #f0f0f0 url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%23ddd"><path d="M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z"/></svg>') center / 28px no-repeat;
  border-radius: 6px;
}

/* ===== ANON TOGGLE ===== */
.gf-cart-anon{
  display:flex;
  align-items:center;
  gap:10px;
  font-size:14px;
  font-weight:600;
}

.gf-switch{
  position:relative;
  width:42px;
  height:24px;
}

.gf-switch input{
  opacity:0;
  width:0;
  height:0;
}

.gf-slider{
  position:absolute;
  inset:0;
  border-radius:999px;
  background:#ddd;
  transition:.25s;
}

.gf-slider:before{
  content:"";
  position:absolute;
  width:18px;
  height:18px;
  left:3px;
  top:3px;
  border-radius:50%;
  background:#fff;
  box-shadow:0 2px 4px rgba(0,0,0,.2);
  transition:.25s;
}

.gf-switch input:checked + .gf-slider{
  background:#8A5CFF;
}

.gf-switch input:checked + .gf-slider:before{
  transform:translateX(18px);
}

/* ===== CONFIRM PANEL ===== */
.gf-cart-confirm{
  margin-top:18px;
  display:flex;
  flex-direction:column;
  gap:10px;
  font-size:13px;
}

.gf-check{
  display:flex;
  gap:8px;
  align-items:flex-start;
}

.gf-check input{
  margin-top:2px;
}

.gf-cart-agreement-status{
  min-height:18px;
  margin-top:8px;
  font-size:12px;
  line-height:1.4;
  font-weight:700;
  color:#6f35ff;
  opacity:0;
  transition:opacity .16s ease;
}

.gf-cart-agreement-status.is-saving,
.gf-cart-agreement-status.is-saved{
  opacity:1;
}

.gf-cart-agreement-status.is-saved{
  color:#2f8f5b;
}

/* Disable Continue to payment until they confirm over 18 and what the purchase is for */
.gf-cart-continue:disabled{
  opacity:.45;
  pointer-events:none;
}
/* =====================================================
   CART MESSAGE ACCORDION — SINGLE SOURCE
===================================================== */

.gf-cart-message{
  margin-top:16px;
  border-radius:16px;
  border:1px solid rgba(109,92,255,.18);
  background:#fff;
  overflow:hidden;
  box-shadow:0 10px 28px rgba(30,20,80,.06);
}

/* header button (neutral — not CTA) */
.gf-cart-message-toggle{
  all:unset;
  box-sizing:border-box;
  display:flex;
  align-items:center;
  justify-content:space-between;
  width:100%;
  padding:14px 16px;
  cursor:pointer;

  font-size:14px;
  font-weight:700;
  color:#2d2d2d !important;

  background:linear-gradient(180deg,#e4dcff 0%,#ffffff 100%);
}

/* chevron */
.gf-cart-chevron{
  transition:transform .2s ease;
  font-size:16px;
  color:#6F5CFF;
}

/* open state */
.gf-cart-message.is-open .gf-cart-chevron{
  transform:rotate(180deg);
}

/* panel container */
.gf-cart-message-panel{
  max-height:0;
  overflow:hidden;
  transition:max-height .25s ease;
  padding:0 16px;
}

/* spacing when open */
.gf-cart-message.is-open .gf-cart-message-panel{
  padding:12px 16px 16px;
}

/* fields */
.gf-cart-field{
  display:flex;
  flex-direction:column;
  gap:6px;
  margin-top:10px;
}

.gf-cart-input,
.gf-cart-textarea{
  border:1px solid rgba(109,92,255,.25);
  border-radius:10px;
  padding:10px 12px;
  font-size:14px;
  background:#fafbff;
}

.gf-cart-textarea{
  min-height:70px;
  resize:vertical;
}

/* anonymous row */
.gf-cart-anon{
  display:flex;
  align-items:center;
  gap:10px;
  font-size:13px;
  color:#444;
  margin-bottom:4px;
}

/* toggle switch */
.gf-switch{
  position:relative;
  width:42px;
  height:24px;
}

.gf-switch input{
  opacity:0;
  width:0;
  height:0;
}

.gf-slider{
  position:absolute;
  inset:0;
  border-radius:999px;
  background:#ddd;
  transition:.25s;
}

.gf-slider:before{
  content:"";
  position:absolute;
  width:18px;
  height:18px;
  left:3px;
  top:3px;
  border-radius:50%;
  background:#fff;
  box-shadow:0 2px 4px rgba(0,0,0,.2);
  transition:.25s;
}

.gf-switch input:checked + .gf-slider{
  background:#8A5CFF;
}

.gf-switch input:checked + .gf-slider:before{
  transform:translateX(18px);
}

.gf-cart-textarea{
  min-height:70px;
  resize:vertical;
}

/* anonymous row */
.gf-cart-anon{
  display:flex;
  align-items:center;
  gap:10px;
  font-size:13px;
  color:#444;
}

/* =====================================================
   CART BIN — FINAL HOVER + ALIGN
===================================================== */
.gf-cart-remove{
  width:36px;
  height:36px;
  border-radius:10px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(0,0,0,0.03);
  transition:background .18s ease, transform .18s ease;
}

.gf-cart-remove svg{
  width:18px;
  height:18px;
  stroke:#6B7280; /* soft neutral */
}

.gf-cart-remove:hover{
  background:rgba(0,0,0,0.06); /* pale grey */
  transform:none;
}

.gf-cart-remove:active{
  background:rgba(0,0,0,0.08);
}


/* =====================================================
   CART MESSAGE ACCORDION — PREMIUM PURPLE
===================================================== */
.gf-cart-message{
  border:1px solid rgba(138,92,255,.18);
  border-radius:14px;
  overflow:hidden;
  background:#fff;
}

/* header button */
.gf-cart-message-head{
  all:unset;
  box-sizing:border-box;
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 16px;
  cursor:pointer;

  font-size:14px;
  font-weight:700;
  color:#2d2d2d;

  background:linear-gradient(180deg,#f6f3ff 0%,#ffffff 100%);
  transition:background .18s ease, color .18s ease;
}

/* desktop hover — subtle, keep text dark */
@media (hover:hover){
  .gf-cart-message-head:hover{
    background:linear-gradient(180deg,#f3f0ff 0%,#ffffff 100%);
    color:#2d2d2d;
  }
}

/* remove blue focus ring everywhere */
.gf-cart-message-head:focus,
.gf-cart-message-head:active{
  outline:none;
  box-shadow:none;
}

/* OPEN STATE — purple two-tone */
.gf-cart-message.is-open .gf-cart-message-head{
  background:linear-gradient(135deg,#8A5CFF 0%,#6F5CFF 100%);
  color:#fff;
}

.gf-cart-message.is-open .gf-acc-chevron{
  color:#fff;
}

/* panel */
.gf-cart-message-body{
  padding:16px;
  border-top:1px solid rgba(138,92,255,.12);
  background:#fff;
}

/* =========================================
   CART BUTTONS — CLEAN STATES (NO STICK)
========================================= */

.gf-qty-btn,
.gf-cart-remove{
  appearance:none;
  -webkit-appearance:none;
  background:#fff;
  border:0;
  outline:0;
  box-shadow:none;
  cursor:pointer;
  transition:background .12s ease;
  -webkit-tap-highlight-color:transparent;
}

/* hover */
.gf-qty-btn:hover,
.gf-cart-remove:hover{
  background:#f1f1f1 !important;
}

/* press */
.gf-qty-btn:active,
.gf-cart-remove:active{
  background:#e2e2e2 !important;
}

/* focus MUST NOT set background */
.gf-qty-btn:focus,
.gf-cart-remove:focus{
  outline:none;
  box-shadow:none;
}

/* ensure active overrides focus */
.gf-qty-btn:focus:active,
.gf-cart-remove:focus:active{
  background:#e2e2e2;
}

/* =====================================================
   HIDE CART TRIGGERS WHEN CART OPEN
===================================================== */

/* =====================================================
   HIDE CART TRIGGERS WHEN CART OPEN (HARD OVERRIDE)
===================================================== */
html.gf-cart-open .gf-mobile-cart-bar,
body.gf-cart-open .gf-mobile-cart-bar,
html.gf-cart-open .gf-floating-cart-trigger,
body.gf-cart-open .gf-floating-cart-trigger{
  display:none !important;
}

/* ==========================================
GF CART IMAGE SKELETON
========================================== */

.gf-cart-img-wrap{
  width:60px;
  height:60px;
  border-radius:12px;
  background:#f2f2f5;
  overflow:hidden;
  position:relative;
}

.gf-cart-img-wrap::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(
    90deg,
    #f2f2f5 25%,
    #e8e8ee 50%,
    #f2f2f5 75%
  );
  background-size:200% 100%;
  animation:gf-cart-skeleton 1.2s infinite;
}

.gf-cart-img-wrap img{
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:0;
  transition:opacity .25s ease;
}

.gf-cart-img-wrap img.loaded{
  opacity:1;
}

@keyframes gf-cart-skeleton{
  0%{background-position:200% 0;}
  100%{background-position:-200% 0;}
}

/* ==========================================
   GiftFlow Cart Image Loader
========================================== */

..gf-cart-item-img{
  background:#f6f6f8;
  border-radius:12px;
  object-fit:cover;
  transition:opacity .2s ease;
}
.gf-cart-item-img[src]{
  background:transparent;
}

.gf-img-loading{
  opacity:0;
}

.gf-img-loaded{
  opacity:1;
}

/* subtle shimmer loader */

.gf-img-loading::before{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(
    90deg,
    #f0f0f3 25%,
    #f6f6fa 50%,
    #f0f0f3 75%
  );
  background-size:200% 100%;
  animation:gf-img-shimmer 1.2s infinite;
  border-radius:10px;
}

@keyframes gf-img-shimmer{
  0%{background-position:200% 0}
  100%{background-position:-200% 0}
}

.gf-cart-empty{
  text-align:center;
  padding:36px 20px;
  color:#6b7280;
}

.gf-cart-empty-title{
  font-size:16px;
  font-weight:600;
  margin-bottom:6px;
  color:#111827;
}

.gf-cart-empty-sub{
  font-size:14px;
  opacity:.75;
}

.gf-cart-empty-icon{
  width:44px;
  height:44px;
  border-radius:14px;
  margin:0 auto 14px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:linear-gradient(135deg,#8A5CFF,#7c3aed);
  color:white;
}

/* =========================================
   GF AMOUNT MODAL
========================================= */

.gf-amount-modal{
  width:min(420px, calc(100vw - 32px));
  background:#fff;
  border-radius:20px;

  box-shadow:
    0 20px 50px rgba(0,0,0,.25),
    0 10px 25px rgba(138,92,255,.18);
}

/* Header */

.gf-amount-modal .gf-modal-header{
  padding:20px 22px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  border-bottom:1px solid rgba(0,0,0,.06);
}

.gf-amount-modal h3{
  margin:0;
  font-size:20px;
  font-weight:600;
}

/* Close button */

.gf-close-amount-modal{
  appearance:none;
  border:none;
  width:36px;
  height:36px;
  border-radius:10px;
  background:#f3efff;
  color:#6f5cff;
  font-size:18px;
  cursor:pointer;
}

/* Body */

.gf-amount-modal .gf-modal-body{
  padding:20px 22px;
}

/* Input */

.gf-amount-input{
  width:100%;
  margin-top:10px;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid rgba(0,0,0,.12);
  font-size:16px;
}

/* Footer */

.gf-amount-modal .gf-modal-footer{
  padding:18px 22px;
  border-top:1px solid rgba(0,0,0,.06);
}

/* Button */

.gf-amount-modal #gf-confirm-amount{
  width:100%;
  height:46px;
  font-size:15px;
  font-weight:600;
  border-radius:14px;

  background:linear-gradient(
    135deg,
    #8A5CFF,
    #6f5cff
  );

  color:#fff;
}

/* Hide floating cart triggers when cart is open */
.gf-cart-open .gf-floating-cart-btn,
.gf-cart-open #gf-floating-cart-trigger,
.gf-cart-open #gf-cart-badge {
  display: none;
}

/* =====================================================
   FIX: floating cart conflicts with sticky checkout bar
===================================================== */

body.gf-cart-open .gf-floating-cart {
  opacity: 0;
  pointer-events: none;
  transform: scale(0.9);
}

.gf-input-locked {
  opacity: 0.6;
  pointer-events: none;
}

/* =====================================================
   CART — RESTRICTED STATE
===================================================== */

.gf-cart-restricted-state {
  padding: 28px 20px;
  margin: 8px 0 0;
  border-radius: 18px;
  background: linear-gradient(180deg, #fff7ed 0%, #ffffff 100%);
  border: 1px solid #fed7aa;
  text-align: center;
}

.gf-cart-restricted-state__icon {
  width: 34px;
  height: 34px;
  margin: 0 auto 12px;
  border-radius: 50%;
  background: #fef3c7;
  color: #b45309;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  font-weight: 700;
  line-height: 1;
}

.gf-cart-restricted-state__title {
  margin: 0 0 8px;
  font-size: 20px;
  font-weight: 700;
  color: #111827;
}

.gf-cart-restricted-state__text {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
  color: #6b7280;
}

@media (min-width: 768px) {
  .gf-cart-restricted-state {
    padding: 32px 24px;
  }

  .gf-cart-restricted-state__title {
    font-size: 22px;
  }
}

/* ================================
   3DS OVERLAY
================================ */
.gf-3ds-overlay {
  position: fixed;
  inset: 0;
  background: rgba(20, 20, 30, 0.65);
  backdrop-filter: blur(6px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
}

/* ================================
   3DS MODAL
================================ */
.gf-3ds-modal {
  width: 100%;
  max-width: 420px;
  background: #fff;
  border-radius: 20px;
  padding: 28px;
  box-shadow: 0 30px 60px rgba(0,0,0,0.25);
  text-align: center;
}

/* HEADER */
.gf-3ds-header {
  font-size: 20px;
  font-weight: 600;
  margin-bottom: 14px;
}

/* BODY */
.gf-3ds-body p {
  margin: 0 0 8px;
  font-size: 15px;
}

.gf-3ds-sub {
  opacity: 0.6;
  font-size: 14px;
}

/* ACTIONS */
.gf-3ds-actions {
  margin-top: 20px;
  display: flex;
  gap: 12px;
  justify-content: center;
}

/* BUTTON VARIANTS */
.gf-btn-ghost {
  background: transparent;
  border: 1px solid #ddd;
  color: #333;
}

/* =====================================================
   CART — CHECKOUT LOADING STATE
   File: /assets/css/gf-cart.css

   Purpose:
   Shows supporters that checkout is being prepared and
   prevents the cart flow from feeling stuck during redirect.
===================================================== */

.gf-cart-continue.is-loading {
  opacity: 0.92;
  cursor: wait;
}

/* =====================================================
   CART — CHECKOUT LOADING STATE
   File: /assets/css/gf-cart.css

   Purpose:
   Makes the cart → checkout wait feel intentional.
   Keeps the continue button branded, prevents double-click,
   and shows a compact status message while checkout prepares.
===================================================== */

/* Keep the disabled loading button looking active, not washed out */
.gf-cart-continue.is-loading,
.gf-cart-continue.is-loading:disabled {
  opacity: 1;
  cursor: wait;
  pointer-events: none;

  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;

  background: linear-gradient(135deg, #8a5cff 0%, #6f35ff 100%);
  color: #ffffff;

  box-shadow:
    0 14px 30px rgba(138, 92, 255, 0.28),
    0 0 0 1px rgba(255, 255, 255, 0.18) inset;
}

/* Spinner inside the button */
.gf-cart-continue.is-loading::before {
  content: "";
  width: 16px;
  height: 16px;
  border-radius: 999px;
  border: 2px solid rgba(255, 255, 255, 0.35);
  border-top-color: #ffffff;
  animation: gfCartCheckoutSpin 0.75s linear infinite;
}

/* Compact reassurance message below the button */
.gf-cart-checkout-status {
  margin: 10px auto 0;
  width: fit-content;
  max-width: calc(100% - 24px);

  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;

  padding: 8px 12px;
  border-radius: 999px;

  background: rgba(138, 92, 255, 0.08);
  border: 1px solid rgba(138, 92, 255, 0.14);

  font-size: 12px;
  line-height: 1.25;
  font-weight: 700;
  color: #6f35ff;
  text-align: center;
}

/* Spinner beside the reassurance message */
.gf-cart-checkout-spinner {
  flex: 0 0 auto;
  width: 13px;
  height: 13px;
  border-radius: 999px;
  border: 2px solid rgba(111, 53, 255, 0.18);
  border-top-color: #6f35ff;
  animation: gfCartCheckoutSpin 0.75s linear infinite;
}

@keyframes gfCartCheckoutSpin {
  to {
    transform: rotate(360deg);
  }
}

/* Mobile: keep it tidy and avoid oversized text */
@media (max-width: 767px) {

  .gf-cart-checkout-status {
    margin-top: 9px;
    padding: 7px 10px;
    font-size: 11.5px;
    max-width: calc(100% - 34px);
  }

  .gf-cart-checkout-spinner {
    width: 12px;
    height: 12px;
  }
}
