/* Shared public customer layout; provider-hosted checkout is outside this scope. */
.public-page { font-family:var(--font-body); background:var(--color-background); color:var(--color-text); }
.public-page .body-content { max-width:1440px; margin-inline:auto; }
.public-page :is(.form-section,.ep-card,.thank-card) { background:var(--color-surface); border-color:var(--color-border); }
.public-page :is(.event-title,h2,h3) { font-family:var(--font-heading); color:var(--brand-secondary); }
.public-page :is(.btn-magenta,.app-btn-primary,.active-tab) { background:var(--brand-primary); border-color:var(--brand-primary); color:#fff; }
.public-page :is(.btn-magenta,.app-btn-primary):hover { background:var(--brand-primary-dark); }
.public-page .form-control:focus { border-color:var(--brand-accent); }
.public-page :is(.campaign-grid,.product-grid,.row) > * { min-width:0; }
.public-page :is(.event-description,.event-description *) { max-width:100%; overflow-wrap:anywhere; }
.public-page .event-description img { height:auto; }
@media (max-width:767.98px) {
    .public-page .body-content { padding-inline:12px; }
    .public-page :is(.container,.form-section,.ep-card) { max-width:100%; padding-inline:12px; }
    .public-page .container.donation-layout .amount-row { grid-auto-flow:row !important; grid-template-columns:repeat(3,minmax(0,1fr)) !important; gap:8px !important; }
    .public-page .container.donation-layout :is(.amount-chip,.donation-option) { min-width:0; height:auto; min-height:44px; white-space:normal; }
    .public-page :is(#onetime-other-container,#monthly-other-container) { grid-template-columns:minmax(0,1fr) !important; gap:8px; }
    .public-page .campaign-grid { grid-template-columns:minmax(0,1fr); }
    .public-page :is(.btn-magenta,.btn-outline-pill,.app-btn-primary,.tab-btn) { min-height:44px; max-width:100%; white-space:normal; }
    .public-page :is(.form-check-label,label,.terms-text) { overflow-wrap:anywhere; }
    .public-page .form-check { min-height:44px; }
    .public-page .form-check-input { width:20px; height:20px; }
    .public-page :is(.btn-row,.event-buttons,.amount-row) { flex-wrap:wrap; }
    .public-page .gx-5 { --bs-gutter-x:1rem; }
    .public-page :is(input,select,textarea) { min-width:0; }
    .public-page :is(.table .form-control,input[type=date]) { height:auto; min-height:44px; }
    .public-page :is(.d-none.d-md-table-cell) { display:block !important; }
}

.public-page [aria-busy=true]::before { content:""; display:inline-block; width:1em; height:1em; margin-right:.5em; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; animation:checkout-spin .8s linear infinite; }
@keyframes checkout-spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion:reduce) { .public-page [aria-busy=true]::before { animation:none; } }

/* Remaining customer utility and QR views share customer tokens. */
.public-page :is(.login-layout,.card,.alert) { max-width:100%; overflow-wrap:anywhere; }
.public-page :is(img,svg,canvas) { max-width:100%; }
.public-page #qrcode { width:min(300px,100%) !important; height:auto !important; aspect-ratio:1; }
.public-page :is(.btn-pill:not(.btn-outline),.btn-primary) { background:var(--brand-primary); border-color:var(--brand-primary); color:var(--color-surface); }
.public-page :is(h1,h2,h3,.section-title) { font-family:var(--font-heading); }
@media(max-width:767.98px) {
  .public-page :is(.container-fluid,.row > *) { min-width:0; }
  .public-page #qrcode + * { min-width:0 !important; }
  .public-page :is(.btn,input,select,textarea) { min-height:44px; font-size:16px; white-space:normal; }
  .public-page table { display:block; max-width:100%; overflow-x:auto; }
}
