/* Govindani GiveWP Smart Donations — frontend styles */
.ggsd-shell{--ggsd-primary:#d29a00;--ggsd-dark:#15213d;--ggsd-surface:#fffaf0;--ggsd-radius:18px;font-family:inherit;color:#2b2b2b;width:100%;max-width:720px;margin:0 auto;box-sizing:border-box}
.ggsd-shell *{box-sizing:border-box}
.ggsd-card{width:100%;box-sizing:border-box;background:var(--ggsd-surface);border:1px solid color-mix(in srgb, var(--ggsd-primary) 25%, transparent);border-radius:var(--ggsd-radius);padding:22px 22px 24px;box-shadow:0 10px 40px rgba(21,33,61,.08);overflow:hidden}
.ggsd-card.ggsd-flash{animation:ggsd-flash .7s ease}
@keyframes ggsd-flash{0%,100%{box-shadow:0 10px 40px rgba(21,33,61,.08)}50%{box-shadow:0 0 0 3px var(--ggsd-primary)}}
.ggsd-header{text-align:center;margin-bottom:14px}
.ggsd-kicker{display:inline-block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ggsd-primary);font-weight:700}
.ggsd-header h2{margin:6px 0 4px;color:var(--ggsd-dark);font-size:26px;line-height:1.15}
.ggsd-header p{margin:0;color:#7a725f;font-size:14px}
.ggsd-progress-wrap{margin:14px 0}
.ggsd-progress-top{display:flex;justify-content:space-between;font-size:14px;color:var(--ggsd-dark)}
.ggsd-progress-top span{background:var(--ggsd-primary);color:#fff;border-radius:20px;padding:1px 10px;font-size:12px;font-weight:700}
.ggsd-progress{height:8px;border-radius:20px;background:rgba(21,33,61,.08);overflow:hidden;margin:6px 0 4px}
.ggsd-progress i{display:block;height:100%;background:var(--ggsd-primary);border-radius:20px;transition:width .5s ease}
.ggsd-progress-wrap small{color:#8a8270;font-size:12px}
.ggsd-step-row{display:flex;align-items:center;gap:10px;justify-content:center;margin:12px 0 16px;font-size:13px;color:#8a8270}
.ggsd-step-row b,.ggsd-step-row div{display:flex;align-items:center;gap:6px}
.ggsd-step-row b{color:var(--ggsd-primary)}
.ggsd-step-row span{width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;background:var(--ggsd-primary);color:#fff}
.ggsd-step-row div span{background:rgba(21,33,61,.15)}
.ggsd-step-row em{flex:0 0 40px;height:1px;background:rgba(21,33,61,.15)}
.ggsd-impact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:100%}
.ggsd-impact-card{min-width:0;text-align:left;background:#fff;border:1.5px solid color-mix(in srgb, var(--ggsd-primary) 25%, transparent);border-radius:14px;padding:12px;cursor:pointer;display:flex;flex-direction:column;gap:3px;transition:.15s;overflow-wrap:anywhere}
.ggsd-impact-card:hover{border-color:var(--ggsd-primary);transform:translateY(-1px)}
.ggsd-impact-card.is-selected{border-color:var(--ggsd-primary);box-shadow:0 0 0 2px var(--ggsd-primary) inset;background:color-mix(in srgb, var(--ggsd-primary) 12%, #fff)}
.ggsd-impact-icon{color:var(--ggsd-primary)}
.ggsd-brand-icon-img{width:1em;height:1em;object-fit:contain;vertical-align:middle;display:inline-block}
.ggsd-impact-icon .ggsd-brand-icon-img{width:18px;height:18px}
.ggsd-sticky-heart .ggsd-brand-icon-img{width:20px;height:20px}
.ggsd-sticky-btn .ggsd-brand-icon-img{width:16px;height:16px}
.ggsd-impact-card strong{color:var(--ggsd-dark);font-size:14px}
.ggsd-impact-card small{color:#8a8270;font-size:12px;line-height:1.3}
.ggsd-impact-price{margin-top:4px;font-weight:800;color:var(--ggsd-primary)}
.ggsd-preset-row{display:grid;grid-template-columns:repeat(var(--ggsd-cash-cols,4),minmax(0,1fr));gap:8px;margin:12px 0;max-width:100%}
.ggsd-preset-row button{min-width:0;background:#fff;border:1.5px solid color-mix(in srgb, var(--ggsd-primary) 25%, transparent);border-radius:12px;padding:12px 4px;font-weight:800;color:var(--ggsd-dark);cursor:pointer;transition:.15s}
.ggsd-preset-row button:hover{border-color:var(--ggsd-primary)}
.ggsd-preset-row button.is-selected{border-color:var(--ggsd-primary);background:var(--ggsd-primary);color:#fff}
.ggsd-custom{display:block;margin:6px 0 14px}
.ggsd-custom span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#8a8270;margin-bottom:5px}
.ggsd-custom div{display:flex;align-items:center;background:#fff;border:1.5px solid color-mix(in srgb, var(--ggsd-primary) 25%, transparent);border-radius:12px;padding:0 12px}
.ggsd-custom b{color:var(--ggsd-primary);font-size:18px}
.ggsd-custom input{flex:1;border:0;outline:0;padding:12px;font-size:16px;background:transparent}
.ggsd-main-cta{width:100%;border:0;border-radius:14px;background:var(--ggsd-primary);color:#fff;font-weight:800;font-size:16px;padding:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:.15s}
.ggsd-main-cta:hover{filter:brightness(1.05)}
/* Sticky bar */
.ggsd-sticky{position:fixed;left:0;right:0;bottom:0;z-index:9998;display:flex;align-items:center;gap:12px;background:var(--ggsd-sticky-bg,var(--ggsd-dark));color:#fff;padding:12px 18px;box-shadow:0 -6px 24px rgba(0,0,0,.18)}
.ggsd-sticky-heart{width:36px;height:36px;border-radius:50%;background:var(--ggsd-sticky-btn,var(--ggsd-primary));display:flex;align-items:center;justify-content:center;flex:0 0 36px}
.ggsd-sticky-copy{flex:1;min-width:0}
.ggsd-sticky-copy strong{display:block;font-size:15px;line-height:1.2;color:var(--ggsd-sticky-text,#fff)!important}
.ggsd-sticky-copy small{color:color-mix(in srgb, var(--ggsd-sticky-text,#fff) 70%, transparent)!important;font-size:12px}
.ggsd-sticky-amount{font-weight:800;color:var(--ggsd-primary);font-size:18px;white-space:nowrap}
.ggsd-sticky-btn{border:0;border-radius:12px;background:var(--ggsd-sticky-btn,var(--ggsd-primary));color:#fff;font-weight:800;padding:11px 22px;cursor:pointer;display:flex;align-items:center;gap:6px;white-space:nowrap}
/* Divider separating impact cards from the quick "cash" buttons */
.ggsd-quick-label{display:flex;align-items:center;gap:10px;margin:16px 0 10px;color:#8a8270;font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.ggsd-quick-label::before,.ggsd-quick-label::after{content:"";flex:1;height:1px;background:rgba(21,33,61,.12)}
/* Modal — z-index above any theme sticky header */
.ggsd-modal{position:fixed;inset:0;z-index:2147483000;display:none}
.ggsd-modal.is-open{display:block}
.ggsd-modal-backdrop{position:absolute;inset:0;background:rgba(21,33,61,.6);backdrop-filter:blur(3px)}
.ggsd-modal-panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(420px,93vw);max-height:92vh;background:#fff;border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.4);display:flex;flex-direction:column;animation:ggsd-pop .22s ease;overflow:hidden}
@keyframes ggsd-pop{from{transform:translate(-50%,-46%);opacity:.3}to{transform:translate(-50%,-50%);opacity:1}}
.ggsd-modal-head{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid #eee;background:#fff;z-index:2;border-radius:18px 18px 0 0}
.ggsd-modal-head small{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ggsd-primary);font-weight:700}
.ggsd-modal-head strong{color:var(--ggsd-dark);font-size:17px}
.ggsd-close{border:0;background:#f3f3f3;width:34px;height:34px;border-radius:50%;font-size:20px;cursor:pointer;color:#555}
.ggsd-selected-summary{flex:0 0 auto;padding:9px 16px;font-weight:700;font-size:14px;color:var(--ggsd-dark);background:color-mix(in srgb, var(--ggsd-primary) 12%, #fff)}
.ggsd-selected-summary:empty{display:none}
.ggsd-visual-warning,.ggsd-error{margin:12px 18px;padding:10px 12px;border-radius:10px;background:#fff2f2;border:1px solid #f0a0a0;color:#a12b2b;font-size:13px}
.ggsd-native-form{flex:1 1 auto;min-height:0;overflow-y:auto;padding:6px 16px 16px}
body.ggsd-modal-open{overflow:hidden}
@media(max-width:600px){
  .ggsd-impact-grid{grid-template-columns:1fr 1fr;gap:8px}
  .ggsd-impact-card{padding:10px}
  .ggsd-impact-card strong{font-size:13px}
  .ggsd-impact-card small{display:none}
  .ggsd-product-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .ggsd-preset-row{grid-template-columns:repeat(4,1fr)!important;gap:6px}
  .ggsd-preset-row button{padding:11px 2px;font-size:14px}
  .ggsd-sticky-copy small{display:none}
  /* Full-screen popup on mobile: maximum height, sticky footer keeps Donate in view */
  .ggsd-modal-panel{width:100vw;max-width:100vw;height:100%;max-height:100%;border-radius:0;top:0;left:0;transform:none;animation:none}
  .ggsd-modal-head{border-radius:0}
  .ggsd-selected-summary{top:0}
}

/* ============ PRODUCT / MEAL MODE ============ */
.ggsd-product-grid{display:grid;grid-template-columns:repeat(var(--ggsd-product-cols,2),minmax(0,1fr));gap:12px;max-width:100%}
.ggsd-product{min-width:0;background:#fff;border:1.5px solid color-mix(in srgb, var(--ggsd-primary) 22%, transparent);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;transition:.15s}
.ggsd-product:hover{border-color:var(--ggsd-primary);transform:translateY(-2px);box-shadow:0 8px 24px rgba(21,33,61,.1)}
.ggsd-product.is-active{border-color:var(--ggsd-primary);box-shadow:0 0 0 2px var(--ggsd-primary) inset}
.ggsd-product-img{height:120px;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important;background-color:#f3ecd8;width:100%}
/* Product image shape — admin-selectable (Products / meals -> "Product image shape").
   "classic" keeps the old fixed 120px height; the rest use aspect-ratio so the box
   scales with card width instead of a hardcoded pixel height. All forced !important
   and paired with the hardened background-size/position above so no host theme can
   reintroduce the "wrong half of the image visible" cropping bug. */
.ggsd-imgshape-square .ggsd-product-img{height:auto!important;aspect-ratio:1/1!important}
.ggsd-imgshape-landscape .ggsd-product-img{height:auto!important;aspect-ratio:16/9!important}
.ggsd-imgshape-portrait .ggsd-product-img{height:auto!important;aspect-ratio:4/5!important}
.ggsd-imgshape-classic .ggsd-product-img{height:120px!important}
.ggsd-product-body{padding:12px 13px 13px;display:flex;flex-direction:column;gap:3px;flex:1}
.ggsd-product-body strong{color:var(--ggsd-dark);font-size:15px}
.ggsd-product-body small{color:#8a8270;font-size:12px;line-height:1.35}
.ggsd-product-goal{font-size:11px;color:var(--ggsd-primary);font-weight:700;margin-top:2px}
.ggsd-product-foot{margin-top:auto;padding-top:10px;display:flex;align-items:center;gap:8px;justify-content:space-between;flex-wrap:wrap}
.ggsd-product-cost{font-weight:800;color:var(--ggsd-primary);font-size:16px}
.ggsd-product-cost em{font-size:11px;color:#8a8270;font-style:normal;font-weight:600}
.ggsd-add{border:0;background:var(--ggsd-primary);color:#fff;font-weight:800;padding:8px 18px;border-radius:10px;cursor:pointer}
.ggsd-qty{display:flex;align-items:center;gap:2px;background:var(--ggsd-primary);border-radius:10px;padding:2px}
.ggsd-qty button{border:0;background:transparent;color:#fff;width:30px;height:30px;font-size:18px;font-weight:700;cursor:pointer;line-height:1}
.ggsd-qty b{color:#fff;min-width:22px;text-align:center;font-size:15px}
.ggsd-custom-extra{margin-top:14px}

/* ============ BEAUTIFY THE NATIVE GIVEWP LEGACY FORM (scoped to our panel) ============ */
.ggsd-native-form .give-form{max-width:none}
/* Remove GiveWP's own headings/description & duplicate amount block when hidden */
/* Hiding the WHOLE native amount+recurring section (rather than picking off
   individual pieces below) is what actually prevents orphaned leftovers like a
   standalone "Custom Amount" label with no input/button next to it — GiveWP
   renders several small pieces inside this section that the old granular list
   didn't account for. Hidden inputs/selects inside still submit their value
   fine once our JS sets them, so nothing functional is lost. */
.ggsd-hide-amount .ggsd-native-form section.give-donation-amount-section{display:none!important}
/* Fallback for GiveWP versions/add-ons that don't wrap things in that section: */
.ggsd-hide-amount .ggsd-native-form .give-total-wrap,
.ggsd-hide-amount .ggsd-native-form .give-donation-levels-wrap,
.ggsd-hide-amount .ggsd-native-form #give-donation-level-button-wrap,
.ggsd-hide-amount .ggsd-native-form .give-donation-amount-text,
.ggsd-hide-amount .ggsd-native-form legend.give-fieldset-description,
.ggsd-hide-amount .ggsd-native-form .give-form-title{display:none!important}
/* Trim decorative clutter GiveWP adds */
.ggsd-native-form .give-goal-progress,
.ggsd-native-form .give-donation-gateway-description img,
.ggsd-native-form .give-payment-icons{display:none!important}
/* Section titles */
.ggsd-native-form .give-section-break,
.ggsd-native-form .give-fieldset-description{color:var(--ggsd-dark);font-weight:700;font-size:15px;margin:6px 0 10px;border:0;padding:0}
/* Inputs */
.ggsd-native-form input[type=text],
.ggsd-native-form input[type=email],
.ggsd-native-form input[type=tel],
.ggsd-native-form input[type=number],
.ggsd-native-form input[type=password],
.ggsd-native-form select,
.ggsd-native-form textarea{width:100%!important;box-sizing:border-box;border:1.5px solid rgba(21,33,61,.15)!important;border-radius:12px!important;padding:13px 14px!important;font-size:15px!important;background:#fff!important;box-shadow:none!important;transition:.15s;margin-bottom:4px}
.ggsd-native-form input:focus,.ggsd-native-form select:focus,.ggsd-native-form textarea:focus{border-color:var(--ggsd-primary)!important;outline:0;box-shadow:0 0 0 3px color-mix(in srgb, var(--ggsd-primary) 15%, transparent)!important}
.ggsd-native-form label,.ggsd-native-form .give-label{color:var(--ggsd-dark)!important;font-weight:600!important;font-size:13px!important;margin-bottom:5px;display:block}
.ggsd-native-form .give-input-field-wrapper,.ggsd-native-form p{margin-bottom:14px}
/* Checkboxes (fees / recurring) as clean rows */
.ggsd-native-form .give-fee-message-label,
.ggsd-native-form .give_fee_mode_checkbox,
.ggsd-native-form .give-recurring-donors-choice{display:flex;align-items:center;gap:8px;background:#faf7ef;border:1px solid color-mix(in srgb, var(--ggsd-primary) 20%, transparent);border-radius:12px;padding:12px 14px;font-size:14px;color:#4a4636}
/* Donation summary */
.ggsd-native-form .give-donation-summary-section,
.ggsd-native-form .give_purchase_form_wrap{background:#faf7ef;border-radius:12px;padding:6px 14px}
/* Submit / donate button */
.ggsd-native-form .give-submit,
.ggsd-native-form #give-purchase-button,
.ggsd-native-form input[type=submit]{width:100%!important;background:var(--ggsd-primary)!important;border:0!important;border-radius:14px!important;color:#fff!important;font-weight:800!important;font-size:16px!important;padding:15px!important;cursor:pointer;box-shadow:none!important;text-shadow:none!important;transition:.15s;height:auto!important}
.ggsd-native-form .give-submit:hover{filter:brightness(1.05)}
/* Gateway radios spacing */
.ggsd-native-form #give-payment-mode-select{border:0;padding:0;margin:0 0 12px}
.ggsd-native-form .give-loading-text{color:#8a8270}

/* ============ THEME-BLEED HARDENING (buttons inherit theme styles otherwise) ============ */
.ggsd-shell .ggsd-impact-card{background:#fff!important;color:var(--ggsd-dark)!important;border:1.5px solid color-mix(in srgb, var(--ggsd-primary) 28%, transparent)!important;box-shadow:none!important;text-shadow:none!important}
.ggsd-shell .ggsd-impact-card.is-selected{background:color-mix(in srgb, var(--ggsd-primary) 12%, #fff)!important;box-shadow:0 0 0 2px var(--ggsd-primary) inset!important}
.ggsd-shell .ggsd-impact-card strong{color:var(--ggsd-dark)!important}
.ggsd-shell .ggsd-impact-card small{color:#8a8270!important}
/* Force card text to wrap (themes often set white-space:nowrap on bold/headings) */
.ggsd-shell .ggsd-impact-card strong,.ggsd-shell .ggsd-impact-card small,.ggsd-shell .ggsd-impact-card .ggsd-impact-price,.ggsd-shell .ggsd-product-body strong,.ggsd-shell .ggsd-product-body small{white-space:normal!important;overflow-wrap:break-word;word-break:break-word;max-width:100%;display:block}
.ggsd-shell .ggsd-impact-card .ggsd-impact-price{color:var(--ggsd-primary)!important}
.ggsd-shell .ggsd-impact-icon{color:var(--ggsd-primary)!important}
.ggsd-shell .ggsd-preset-row button{background:#fff!important;color:var(--ggsd-dark)!important;border:1.5px solid color-mix(in srgb, var(--ggsd-primary) 28%, transparent)!important;box-shadow:none!important;text-shadow:none!important}
.ggsd-shell .ggsd-preset-row button.is-selected{background:var(--ggsd-primary)!important;color:#fff!important}
.ggsd-shell .ggsd-main-cta,.ggsd-shell .ggsd-sticky-btn,.ggsd-shell .ggsd-add{background:var(--ggsd-primary)!important;color:#fff!important;border:0!important;box-shadow:none!important;text-shadow:none!important}
.ggsd-shell .ggsd-product{background:#fff!important;color:var(--ggsd-dark)!important}
.ggsd-shell .ggsd-product-img{background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important}
/* Spacing fix: previously the "Or pick a quick amount" divider (and its margin)
   only rendered when Impact Cards were on, so a Products + Quick Cash combo had
   almost no gap between the product grid and the cash-button row. The divider now
   also appears after products (see PHP), and this adds extra breathing room
   specifically for that product->cash transition even if a divider is present. */
.ggsd-product-grid + .ggsd-quick-label{margin-top:20px}
.ggsd-preset-row-after-products{margin-top:20px}
.ggsd-shell .ggsd-product-body strong{color:var(--ggsd-dark)!important}
.ggsd-shell .ggsd-product-cost{color:var(--ggsd-primary)!important}
.ggsd-shell .ggsd-custom input{color:var(--ggsd-dark)!important;background:transparent!important}

/* ============ STICKY PAY FOOTER (always-visible Donate button in popup) ============ */
.ggsd-pay-footer{flex:0 0 auto;background:#fff;border-top:1px solid #eee;padding:12px 18px 14px;box-shadow:0 -6px 18px rgba(0,0,0,.06);z-index:3}
.ggsd-pay-footer .ggsd-pay{width:100%!important;background:var(--ggsd-primary,#d29a00)!important;color:#fff!important;border:0!important;border-radius:13px!important;font-weight:800!important;font-size:16px!important;padding:15px!important;cursor:pointer;letter-spacing:.02em;box-shadow:none!important;text-shadow:none!important}
.ggsd-pay-footer .ggsd-pay:hover{filter:brightness(1.05)}
.ggsd-pay-footer .ggsd-pay:disabled{opacity:.7;cursor:wait}
.ggsd-pay-amount{text-align:center;font-weight:800;color:var(--ggsd-dark,#15213d);font-size:15px;margin:0 0 8px}
.ggsd-pay-amount:empty{display:none}
.ggsd-pay-badges{text-align:center;font-size:11px;color:#8a8270;margin-top:9px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* ============ FRONT ONE-TIME / RECURRING TOGGLE ============ */
.ggsd-shell .ggsd-freq{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px;box-sizing:border-box;max-width:100%}
.ggsd-shell .ggsd-freq-opt{flex:1 1 0;min-width:0;border:1.5px solid color-mix(in srgb, var(--ggsd-primary) 25%, transparent)!important;background:#fff!important;color:var(--ggsd-dark)!important;font-weight:700;font-size:14px;padding:11px 8px;border-radius:11px;cursor:pointer;transition:.15s}
.ggsd-shell .ggsd-freq-opt.is-active{background:var(--ggsd-primary)!important;color:#fff!important;border-color:var(--ggsd-primary)!important}
.ggsd-shell .ggsd-freq-period{flex:1 1 100%;width:100%;box-sizing:border-box;border:1.5px solid color-mix(in srgb, var(--ggsd-primary) 30%, transparent);border-radius:11px;padding:10px 12px;font-weight:600;color:var(--ggsd-dark);background:#fff}

/* Recurring-only period selector (Daily…Yearly) */
.ggsd-shell .ggsd-freq-recurring{border:1.5px solid color-mix(in srgb, var(--ggsd-primary) 25%, transparent);border-radius:12px;padding:8px 10px;gap:6px}
.ggsd-shell .ggsd-freq-lbl{flex:1 1 100%;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#8a8270;font-weight:700;margin-bottom:2px}
.ggsd-shell .ggsd-freq-period-opt{flex:1 1 0;min-width:0;border:1.5px solid color-mix(in srgb, var(--ggsd-primary) 25%, transparent)!important;background:#fff!important;color:var(--ggsd-dark)!important;font-weight:700;font-size:13px;padding:8px 4px;border-radius:9px;cursor:pointer}
.ggsd-shell .ggsd-freq-period-opt.is-active{background:var(--ggsd-primary)!important;color:#fff!important;border-color:var(--ggsd-primary)!important}

/* ============ TEMPLATE LAYOUTS ============ */
/* LIST — impact cards as horizontal rows */
.ggsd-layout-list .ggsd-impact-grid{grid-template-columns:1fr}
.ggsd-layout-list .ggsd-impact-card{flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:14px 16px}
.ggsd-layout-list .ggsd-impact-icon{order:0;font-size:18px}
.ggsd-layout-list .ggsd-impact-card strong{order:1;flex:1 1 auto;min-width:0;font-size:15px}
.ggsd-layout-list .ggsd-impact-price{order:2;margin-left:auto;margin-top:0;font-size:17px}
.ggsd-layout-list .ggsd-impact-card small{order:3;flex:1 1 100%}
/* COMPACT — tighter everything */
.ggsd-layout-compact .ggsd-card{padding:16px 16px 18px}
.ggsd-layout-compact .ggsd-header h2{font-size:21px}
.ggsd-layout-compact .ggsd-impact-grid{gap:8px}
.ggsd-layout-compact .ggsd-impact-card{padding:9px 10px}
.ggsd-layout-compact .ggsd-impact-card strong{font-size:13px}
.ggsd-layout-compact .ggsd-impact-card small{font-size:11px}
.ggsd-layout-compact .ggsd-impact-price{font-size:15px}
.ggsd-layout-compact .ggsd-main-cta{padding:12px;font-size:15px}
/* MINIMAL — no hearts, flat, single column */
.ggsd-layout-minimal .ggsd-impact-icon{display:none}
.ggsd-layout-minimal .ggsd-card{box-shadow:none;border-radius:10px}
.ggsd-layout-minimal .ggsd-impact-grid{grid-template-columns:1fr;gap:8px}
.ggsd-layout-minimal .ggsd-impact-card{border-radius:10px;box-shadow:none;border-width:1px}
.ggsd-layout-minimal .ggsd-impact-card.is-selected{box-shadow:0 0 0 2px var(--ggsd-primary) inset}
.ggsd-layout-minimal .ggsd-header h2{font-weight:700}
/* ELEVATED — big radius, deep shadow, gradient header, floating cards */
.ggsd-layout-elevated .ggsd-card{border-radius:26px;box-shadow:0 24px 60px rgba(21,33,61,.16);padding:26px 24px 28px}
.ggsd-layout-elevated .ggsd-header{background:linear-gradient(135deg,color-mix(in srgb,var(--ggsd-primary) 14%,#fff),transparent);margin:-26px -24px 16px;padding:22px 24px 16px;border-radius:26px 26px 0 0}
.ggsd-layout-elevated .ggsd-impact-card{border:0;border-radius:18px;box-shadow:0 6px 18px rgba(21,33,61,.08)}
.ggsd-layout-elevated .ggsd-impact-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(21,33,61,.14)}
.ggsd-layout-elevated .ggsd-main-cta{border-radius:16px;box-shadow:0 8px 20px color-mix(in srgb,var(--ggsd-primary) 35%,transparent)}
/* Custom box without currency icon */
.ggsd-custom-nosym div{padding-left:14px}

/* Period picker on its own full-width row below the One-time/Recurring toggle */
.ggsd-shell .ggsd-freq-periods{flex:1 1 100%;display:flex;gap:6px;margin-top:8px}
.ggsd-shell .ggsd-freq .ggsd-freq-period{flex:1 1 100%;width:100%;margin-top:8px}
.ggsd-shell .ggsd-freq-periods .ggsd-freq-period-opt{flex:1 1 0;min-width:0}
