/* Donation Portal shared frontend/admin styles.
   Inline CSS was moved here for stricter CSP compatibility. */
:root {
  --portal-primary: #0d6efd;
  --portal-accent: #20c997;
  --portal-bg: #f6f8fb;
  --portal-radius: 1.25rem;
}

body { background: var(--portal-bg); }
.btn-primary, .text-bg-primary, .nav-pills .nav-link.active { background-color: var(--portal-primary) !important; border-color: var(--portal-primary) !important; }
.btn-outline-primary { color: var(--portal-primary); border-color: var(--portal-primary); }
.btn-outline-primary:hover { background-color: var(--portal-primary); border-color: var(--portal-primary); }
.text-primary { color: var(--portal-primary) !important; }
.border-primary { border-color: var(--portal-primary) !important; }
.donation-card { max-width: 760px; margin: 40px auto; border: 0; border-radius: var(--portal-radius); box-shadow: 0 1rem 3rem rgba(0,0,0,.08); }
.card, .rounded-4 { border-radius: var(--portal-radius) !important; }
.brand-icon { width: 52px; height: 52px; display: inline-grid; place-items: center; border-radius: 16px; background: color-mix(in srgb, var(--portal-primary) 12%, white); color: var(--portal-primary); }
.amount-btn input { display: none; }
.amount-btn span { cursor: pointer; }
.amount-btn input:checked + span { background: var(--portal-primary); color: #fff; border-color: var(--portal-primary); }
.portal-logo { max-height: 34px; max-width: 180px; width: auto; object-fit: contain; }
.language-selector-form .language-selector-submit { display: inline-flex; }
.js .language-selector-form .language-selector-submit { display: none; }
.consent-check { display: flex; align-items: flex-start; gap: .75rem; }
.consent-check .form-check-input { flex: 0 0 auto; float: none; margin-left: 0; margin-top: .25rem; }
.consent-check .form-check-label { flex: 1 1 auto; }
.consent-check .invalid-feedback { margin-left: calc(1.25rem + .75rem); }
.twofa-card { max-width: 420px; }
.install-card { max-width: 980px; margin: 36px auto; border: 0; border-radius: 1.25rem; box-shadow: 0 1rem 3rem rgba(0,0,0,.08); }
.campaign-hero-image { max-height: 360px; object-fit: cover; }
.campaign-list-image { height: 190px; object-fit: cover; }
.campaign-progress-lg { height: 14px; }
.campaign-progress-sm { height: 10px; }
.return-summary-box { max-width: 440px; }
.gdpr-action-cell { min-width: 280px; }
.backup-password-input { width: 190px; }
.confirm-anonymize-input { width: 150px; }
.chart-box-lg { height: 320px; }
.chart-box-md { height: 300px; }
.theme-preview-panel { background: var(--portal-bg); }
.progress-bar[data-progress-width] { width: 0%; }
