PluginProbe
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More / 2.2.0
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More v2.2.0
2.4.1 2.4.0 2.3.4 2.3.3 2.3.2 2.3.1 2.3.0 2.2.2 2.2.1 2.2.0 2.1.2 2.1.1 trunk 0.0.1 0.0.2 0.0.3 0.0.4 0.0.5 0.0.6 0.0.7 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 All 68 releases
better-payment / src / blocks / campaign-display / style.scss

style.scss in Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More 2.2.0, at src/blocks/campaign-display/style.scss

1,403 lines 43.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 // Frontend campaign display styles — loaded on public pages via shortcode + block.
2 @use 'sass:color';
3
4 $primary: #6b63f6;
5 $border: #e2e4e9;
6 $text: #1e1e2d;
7 $muted: #8a8fa6;
8 $bg: #f4f5f8;
9 $white: #fff;
10
11 // Page-level wrapper used by single-bp_campaign.php template.
12 // Prevents any theme body/content area from producing its own horizontal scroll.
13 .bp-campaign-page-wrap {
14 width: 100%;
15 overflow-x: hidden;
16 box-sizing: border-box;
17 }
18
19
20 .bp-campaign {
21 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
22 font-size: 16px;
23 color: $text;
24 line-height: 1.5;
25
26 // Prevent horizontal overflow and constrain content width.
27 width: 100%;
28 max-width: 1200px;
29 margin: 0 auto;
30 padding: 20px 24px 40px;
31 box-sizing: border-box;
32 overflow-x: hidden;
33
34 // ── Column layout ─────────────────────────────────────────────────────────
35 .bp-campaign-columns {
36 display: flex;
37 gap: 24px;
38 align-items: flex-start;
39 width: 100%;
40 }
41
42 // flex-shrink: 1 lets columns compress instead of overflowing the container.
43 // box-sizing: border-box keeps percentage widths accurate.
44 .bp-campaign-column {
45 display: flex;
46 flex-direction: column;
47 gap: 28px;
48 flex-shrink: 1;
49 min-width: 0;
50 box-sizing: border-box;
51 }
52
53 // ── Title ─────────────────────────────────────────────────────────────────
54 .bp-campaign-title {
55 margin: 0;
56 font-size: 32px;
57 line-height: 1.2;
58 }
59
60 // ── Description ───────────────────────────────────────────────────────────
61 .bp-campaign-description {
62 line-height: 1.6;
63 p { margin: 0 0 8px; }
64 p:last-child { margin: 0; }
65 }
66
67 .bp-campaign-description-headline {
68 font-size: 22px;
69 font-weight: 700;
70 color: $text;
71 margin: 0 0 8px;
72 }
73
74 .bp-campaign-description-content {
75 line-height: 1.6;
76 font-size: 16px;
77
78 // Rich text editor headings
79 h1 { font-size: 28px; font-weight: 700; margin: 0 0 12px; line-height: 1.2; }
80 h2 { font-size: 24px; font-weight: 700; margin: 0 0 10px; line-height: 1.2; }
81 h3 { font-size: 20px; font-weight: 600; margin: 0 0 8px; line-height: 1.3; }
82 h4 { font-size: 18px; font-weight: 600; margin: 0 0 8px; line-height: 1.3; }
83 h5 { font-size: 16px; font-weight: 600; margin: 0 0 6px; }
84 h6 { font-size: 15px; font-weight: 600; margin: 0 0 6px; }
85
86 p { font-size: 16px; margin: 0 0 10px; }
87 p:last-child { margin: 0; }
88
89 ul, ol { font-size: 16px; padding-left: 20px; margin: 0 0 10px; }
90 li { margin-bottom: 4px; }
91
92 strong, b { font-size: 16px; font-weight: 700; }
93 em, i { font-style: italic; }
94
95 a { color: $primary; text-decoration: underline; }
96 }
97
98 // ── Photo ─────────────────────────────────────────────────────────────────
99 .bp-campaign-photo {
100 .bp-campaign-photo-wrap { border-radius: 8px; overflow: hidden; }
101 .bp-campaign-image { width: auto; max-width: 100%; height: auto; display: block; }
102 }
103
104 .bp-campaign-photo-placeholder {
105 display: flex;
106 align-items: center;
107 justify-content: center;
108 width: 100%;
109 aspect-ratio: 16 / 9;
110 background: #e8e8e8;
111 border-radius: 4px;
112 }
113
114 // ── Progress bar ──────────────────────────────────────────────────────────
115 .bp-campaign-progress { display: flex; flex-direction: column; }
116
117 .bp-progress-headline { margin: 0 0 8px; font-size: 22px; font-weight: 600; }
118
119 .bp-progress-bar-wrap { height: 10px; background: #e5e5e5; border-radius: 999px; overflow: hidden; }
120
121 .bp-progress-bar { height: 100%; border-radius: 999px; transition: width 0.4s ease; }
122
123 .bp-progress-labels {
124 display: flex;
125 justify-content: space-between;
126 font-size: 13px;
127 color: $muted;
128 margin-top: 6px;
129 }
130
131 .bp-progress-no-goal-note { font-size: 14px; color: $muted; margin: 0; }
132
133 // ── Summary stats ─────────────────────────────────────────────────────────
134 .bp-summary-headline {
135 font-size: 22px;
136 font-weight: 600;
137 color: $text;
138 margin: 0 0 10px;
139 }
140
141 .bp-campaign-summary {
142 display: flex;
143 gap: 12px;
144 flex-wrap: wrap;
145 }
146
147 .bp-summary-item {
148 flex: 1;
149 text-align: center;
150 padding: 12px 8px;
151 background: $bg;
152 border-radius: 8px;
153 border: 1px solid $border;
154
155 strong { display: block; font-size: 16px; font-weight: 700; margin-bottom: 2px; }
156 span { font-size: 12px; color: $muted; text-transform: uppercase; letter-spacing: 0.5px; }
157 }
158
159 // ── Donate amount selector (radio-based, matches fundraising-campaign.js) ──
160 .bp-donate_amounts {
161 display: flex;
162 flex-wrap: wrap;
163 gap: 8px;
164 }
165
166 // Hide the actual radio input; the label is the visible button
167 input.bp-option-amount { display: none; }
168
169 .bp-amount-label {
170 display: inline-flex;
171 align-items: center;
172 justify-content: center;
173 padding: 10px 16px;
174 border: 1.5px solid $border;
175 border-radius: 6px;
176 background: $white;
177 font-size: 15px;
178 font-weight: 500;
179 color: $text;
180 cursor: pointer;
181 transition: border-color 0.15s, background 0.15s, color 0.15s;
182
183 &:hover {
184 border-color: $primary;
185 background: color.adjust($primary, $lightness: 44%);
186 color: $primary;
187 }
188 }
189
190 // Checked state — sibling selector works because input + label are adjacent
191 input.bp-option-amount:checked + .bp-amount-label {
192 border-color: $primary;
193 background: color.adjust($primary, $lightness: 44%);
194 color: $primary;
195 }
196
197 .other_amount_section {
198 display: flex;
199 align-items: center;
200 border: 1.5px solid $border;
201 border-radius: 6px;
202 overflow: hidden;
203 background: $white;
204
205 &:focus-within { border-color: $primary; }
206 }
207
208 .bp-amount-currency {
209 padding: 0 10px;
210 color: $muted;
211 font-size: 15px;
212 font-weight: 500;
213 border-right: 1px solid $border;
214 background: $bg;
215 align-self: stretch;
216 display: flex;
217 align-items: center;
218 }
219
220 .campaign-custom-amount {
221 flex: 1;
222 border: none;
223 outline: none;
224 padding: 10px 12px;
225 font-size: 15px;
226 color: $text;
227 background: transparent;
228 min-width: 0;
229
230 &::placeholder { color: $muted; }
231 &::-webkit-outer-spin-button,
232 &::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
233 }
234
235 // ── Minimum donation notice ───────────────────────────────────────────────
236 .bp-min-donation-notice {
237 margin: 0;
238 padding: 10px 14px;
239 border-radius: 6px;
240 font-size: 14px;
241 background: $bg;
242 border: 1px solid $border;
243 color: $muted;
244 transition: background 0.2s, border-color 0.2s, color 0.2s;
245
246 &.is-error {
247 background: #fff5f5;
248 border-color: #f87171;
249 color: #dc2626;
250 font-weight: 500;
251 }
252 }
253
254 // ── Donate button ─────────────────────────────────────────────────────────
255 .bp-campaign-donate,
256 .bp-campaign-donate-wrap {
257 display: flex;
258 flex-direction: column;
259 gap: 10px;
260 }
261
262 .bp-donate_btn {
263 display: block;
264 padding: 13px 28px;
265 border-radius: 6px;
266 text-decoration: none;
267 font-weight: 600;
268 font-size: 16px;
269 text-align: center;
270 color: #fff;
271 transition: opacity 0.15s;
272
273 // No URL configured — make the button visually inactive and non-interactive.
274 &.bp-donate_btn--no-url {
275 opacity: 0.45;
276 cursor: not-allowed;
277 pointer-events: none;
278 filter: grayscale(0.3);
279 }
280
281 &:hover,
282 &:focus { opacity: 0.9; color: #fff; text-decoration: none; }
283 }
284
285 // ── Social sharing & Social links (shared structure) ─────────────────────
286
287 .bp-social-sharing,
288 .bp-social-links {
289 border: 1px solid $border;
290 border-radius: 12px;
291 padding: 16px 20px;
292 }
293
294 .bp-social-headline {
295 font-size: 18px;
296 font-weight: 700;
297 color: $text;
298 margin: 0 0 12px;
299 }
300
301 .bp-social-icons {
302 display: flex;
303 flex-wrap: wrap;
304 gap: 8px;
305 }
306
307 .bp-social-icon {
308 display: flex;
309 align-items: center;
310 justify-content: center;
311 width: 40px;
312 height: 40px;
313 border-radius: 50%;
314 border: 1.5px solid $border;
315 color: $text;
316 text-decoration: none;
317 flex-shrink: 0;
318 transition: border-color 0.15s, color 0.15s, background 0.15s;
319
320 &:hover,
321 &:focus {
322 border-color: $primary;
323 color: $primary;
324 background: color.adjust($primary, $lightness: 44%);
325 text-decoration: none;
326 }
327
328 svg { display: block; }
329 }
330
331 // ── Organizer ─────────────────────────────────────────────────────────────
332 .bp-campaign-organizer {
333 display: flex;
334 align-items: flex-start;
335 gap: 14px;
336 }
337
338 .bp-organizer-avatar {
339 flex-shrink: 0;
340
341 img {
342 width: 64px;
343 height: 64px;
344 border-radius: 50%;
345 display: block;
346 }
347 }
348
349 .bp-organizer-info {
350 display: flex;
351 flex-direction: column;
352 gap: 2px;
353 min-width: 0;
354 }
355
356 .bp-organizer-name {
357 font-size: 18px;
358 font-weight: 700;
359 color: $text;
360 display: block;
361 }
362
363 .bp-organizer-role {
364 font-size: 14px;
365 color: #1e1e2d;
366 display: block;
367 margin-bottom: 2px;
368 }
369
370 .bp-organizer-description {
371 margin-top: 4px;
372 font-size: 14px;
373 color: $text;
374 line-height: 1.5;
375
376 p { margin: 0 0 6px; }
377 p:last-child { margin: 0; }
378 strong, b { font-size: 16px; font-weight: 700; }
379 }
380
381 // ── Responsive ────────────────────────────────────────────────────────────
382
383 // Tablet: tighten gap and reduce outer padding.
384 @media (max-width: 900px) {
385 padding: 20px 20px 32px;
386
387 .bp-campaign-columns { gap: 16px; }
388 }
389
390 // Mobile: stack columns, full-width each, tighter padding.
391 @media (max-width: 680px) {
392 padding: 16px 16px 24px;
393
394 .bp-campaign-columns {
395 flex-direction: column;
396 gap: 20px;
397 }
398
399 .bp-campaign-column {
400 width: 100% !important;
401 flex-shrink: 1;
402 }
403
404 // Tighten summary cards on small screens.
405 .bp-campaign-summary { gap: 8px; }
406 .bp-summary-item { min-width: calc(50% - 4px); }
407 }
408
409 // Very small screens.
410 @media (max-width: 380px) {
411 padding: 16px 12px;
412
413 .bp-summary-item { min-width: 100%; }
414 }
415 }
416
417 // ── Golf Destinations theme ───────────────────────────────────────────────────
418 .bp-campaign.golf-destinations {
419 border-radius: 0;
420 overflow: hidden;
421 padding: 0;
422 max-width: 1200px;
423
424 .bp-campaign-columns {
425 gap: 0;
426 align-items: stretch;
427 }
428
429 .bp-campaign-column {
430 gap: 0;
431
432 // Left column: cream background; first photo bleeds edge-to-edge via negative margin
433 &:first-child {
434 background: #f5f0e8;
435 padding: 20px 36px 40px;
436 display: flex;
437 flex-direction: column;
438 gap: 28px;
439 }
440
441 // Right column: dark olive background
442 &:last-child {
443 background: #3a4535;
444 padding: 40px 36px;
445 display: flex;
446 flex-direction: column;
447 gap: 24px;
448 color: #e8e4d4;
449 }
450 }
451
452 // First photo in left column bleeds edge-to-edge (frontend + builder preview)
453 .bp-campaign-column:first-child > .bp-campaign-photo:first-child,
454 .bp-campaign-column:first-child > .bp-builder-el-wrap:first-child > .bp-campaign-photo {
455 margin: 0 -36px;
456
457 .bp-campaign-photo-wrap { border-radius: 0; }
458 .bp-campaign-image {
459 width: 100% !important;
460 max-width: 100% !important;
461 height: 300px !important;
462 object-fit: cover;
463 object-position: top center;
464 border-radius: 0 !important;
465 display: block;
466 }
467 }
468
469 // Second photo in left column: centered, auto-size
470 .bp-campaign-column:first-child > .bp-campaign-photo:not(:first-child) .bp-campaign-image,
471 .bp-campaign-column:first-child > .bp-builder-el-wrap:not(:first-child) > .bp-campaign-photo .bp-campaign-image {
472 display: block;
473 margin: 0 auto;
474 max-width: 75% !important;
475 height: auto !important;
476 border-radius: 4px !important;
477 }
478
479 // Left column: gold headline (larger, sentence case), dark body text
480 .bp-campaign-column:first-child {
481 .bp-campaign-description-headline {
482 color: #b8a46a;
483 font-size: 20px;
484 font-weight: 700;
485 line-height: 1.35;
486 letter-spacing: 0;
487 text-transform: none;
488 margin-bottom: 10px;
489 }
490
491 .bp-campaign-description-content {
492 color: #3a3a2e;
493 font-size: 15px;
494 line-height: 1.7;
495 p, h1, h2, h3, h4, h5, h6, li, a { color: #3a3a2e; }
496 }
497 }
498
499 // Right column: gold small-cap headline, light body text
500 .bp-campaign-column:last-child {
501 .bp-campaign-description-headline {
502 color: #b8a46a;
503 font-size: 12px;
504 font-weight: 700;
505 letter-spacing: 0.12em;
506 text-transform: uppercase;
507 margin-bottom: 14px;
508 }
509
510 .bp-campaign-description-content {
511 color: #e8e4d4;
512 font-size: 16px;
513 line-height: 1.7;
514 p, h1, h2, h3, h4, h5, h6, li, a { color: #e8e4d4; }
515 }
516
517 // Summary stats
518 .bp-summary-headline { color: #e8e4d4; }
519 .bp-campaign-summary { gap: 12px; }
520 .bp-summary-item {
521 background: rgba(255, 255, 255, 0.06);
522 border-color: rgba(255, 255, 255, 0.12);
523 strong { color: #e8e4d4; }
524 span { color: rgba(232, 228, 212, 0.6); }
525 }
526
527 // Progress bar
528 .bp-progress-bar-wrap { background: rgba(255, 255, 255, 0.15); height: 8px; }
529 .bp-progress-bar { background-color: #b8a46a !important; }
530 .bp-progress-labels,
531 .bp-progress-donated,
532 .bp-progress-goal,
533 .bp-progress-no-goal-note { color: rgba(232, 228, 212, 0.6); }
534
535 // Donate button
536 .bp-donate_btn {
537 background-color: #b8a46a !important;
538 color: #fff;
539 font-weight: 700;
540 letter-spacing: 0.08em;
541 text-transform: uppercase;
542 border-radius: 4px;
543 font-size: 15px;
544 text-align: center;
545 &:hover, &:focus { opacity: 0.88; color: #fff; }
546 }
547 }
548
549 @media (max-width: 680px) {
550 border-radius: 0;
551
552 .bp-campaign-column:first-child { padding-left: 20px; padding-right: 20px; }
553 .bp-campaign-column:last-child { padding: 28px 20px; }
554
555 .bp-campaign-column:first-child > .bp-campaign-photo:first-child,
556 .bp-campaign-column:first-child > .bp-builder-el-wrap:first-child > .bp-campaign-photo {
557 margin: 0 -20px;
558 }
559 }
560 }
561
562 // ── School Trip theme ─────────────────────────────────────────────────────────
563 .bp-campaign.school-trip {
564 // Only left corners are rounded; right side is flush/square
565 border-radius: 8px 0 0 8px;
566 overflow: hidden;
567 padding: 0;
568 max-width: 1200px;
569
570 .bp-campaign-columns {
571 gap: 0;
572 align-items: stretch;
573 }
574
575 .bp-campaign-column {
576 // Left column: white background with padding
577 &:first-child {
578 padding: 40px 36px 40px 0;
579 display: flex;
580 flex-direction: column;
581 gap: 24px;
582 }
583
584 // Right column: dark olive, top padding creates space above the photo
585 &:last-child {
586 background: #4a5c2a;
587 padding: 20px 32px 32px;
588 display: flex;
589 flex-direction: column;
590 gap: 24px;
591 color: #e8ead8;
592 }
593 }
594
595 // First element in right column is a photo — bleed it edge-to-edge (horizontal only).
596 // Covers both frontend (direct child) and builder preview (.bp-builder-el-wrap wrapper).
597 .bp-campaign-column:last-child > .bp-campaign-photo:first-child,
598 .bp-campaign-column:last-child > .bp-builder-el-wrap:first-child > .bp-campaign-photo {
599 margin: 0 -32px;
600
601 .bp-campaign-photo-wrap { border-radius: 0; }
602 .bp-campaign-image {
603 width: 100% !important;
604 max-width: 100% !important;
605 height: 260px !important;
606 min-height: 260px;
607 object-fit: cover;
608 border-radius: 0 !important;
609 display: block;
610 }
611 }
612
613 // Left column: title and body colours
614 .bp-campaign-column:first-child {
615 .bp-campaign-description-headline {
616 color: #5c6b38;
617 font-size: 26px;
618 font-weight: 700;
619 line-height: 1.3;
620 margin-bottom: 12px;
621 }
622
623 .bp-campaign-description-content {
624 color: #3a3a2e;
625 font-size: 15px;
626 line-height: 1.7;
627 }
628 }
629
630 // Right column: all text on dark olive background
631 .bp-campaign-column:last-child {
632 .bp-campaign-description-headline {
633 color: #e8ead8;
634 font-size: 26px;
635 font-weight: 700;
636 line-height: 1.35;
637 margin-bottom: 8px;
638 }
639
640 .bp-campaign-description-content {
641 color: #c8ccb8;
642 font-size: 14px;
643 line-height: 1.7;
644 p, h1, h2, h3, h4, h5, h6, li, a { color: #c8ccb8; }
645 }
646
647 // Summary stats
648 .bp-summary-headline { color: #e8ead8; }
649 .bp-campaign-summary { gap: 12px; }
650 .bp-summary-item {
651 background: rgba(255, 255, 255, 0.08);
652 border-color: rgba(255, 255, 255, 0.14);
653 strong { color: #e8ead8; }
654 span { color: rgba(232, 234, 216, 0.6); }
655 }
656
657 // Progress bar
658 .bp-progress-bar-wrap { background: rgba(255, 255, 255, 0.15); height: 8px; }
659 .bp-progress-bar { background-color: #8fa040 !important; }
660 .bp-progress-labels,
661 .bp-progress-donated,
662 .bp-progress-goal,
663 .bp-progress-no-goal-note { color: rgba(232, 234, 216, 0.65); }
664
665 // Social links
666 .bp-social-links-headline { color: #e8ead8; }
667 .bp-social-link { color: rgba(232, 234, 216, 0.7); }
668
669 // Donate button
670 .bp-donate_btn {
671 background-color: #8fa040 !important;
672 color: #fff;
673 font-weight: 700;
674 border-radius: 4px;
675 text-align: center;
676
677 &:hover, &:focus { opacity: 0.88; color: #fff; }
678 }
679 }
680
681 @media (max-width: 680px) {
682 border-radius: 0 !important;
683
684 .bp-campaign-column:first-child { padding: 28px 20px 28px 0; }
685
686 .bp-campaign-column:last-child {
687 padding-left: 20px;
688 padding-right: 20px;
689 }
690
691 .bp-campaign-column:last-child > .bp-campaign-photo:first-child,
692 .bp-campaign-column:last-child > .bp-builder-el-wrap:first-child > .bp-campaign-photo {
693 margin: 0 -20px;
694 }
695 }
696 }
697
698 // ── Disaster Relief theme ─────────────────────────────────────────────────────
699 .bp-campaign.disaster-relief {
700 max-width: 1200px;
701
702 // Left column: small top space above first photo
703 .bp-campaign-column:first-child {
704 padding-top: 16px;
705 }
706
707 // Right column: card with border, no rounded corners
708 .bp-campaign-column:last-child {
709 border: 1px solid #e0e0e0;
710 border-radius: 0;
711 padding: 20px;
712 display: flex;
713 flex-direction: column;
714 gap: 20px;
715 }
716
717 // Red headline accent — "Donate Today", "About This Campaign"
718 .bp-campaign-description-headline {
719 color: #c0392b;
720 font-size: 13px;
721 font-weight: 700;
722 text-transform: uppercase;
723 letter-spacing: 0.06em;
724 margin-bottom: 6px;
725 }
726
727 .bp-campaign-description-content {
728 color: #333;
729 font-size: 14px;
730 line-height: 1.6;
731 }
732
733 // Summary: no percent/days shown, keep it compact
734 .bp-campaign-summary { gap: 12px; }
735
736 // Donate button
737 .bp-donate_btn {
738 background-color: #c0392b !important;
739 color: #fff;
740 font-weight: 600;
741 border-radius: 0;
742 text-align: center;
743 &:hover, &:focus { opacity: 0.88; color: #fff; }
744 }
745
746 // Progress bar in left column
747 .bp-progress-bar { background-color: #c0392b !important; }
748 .bp-progress-donated,
749 .bp-progress-goal,
750 .bp-progress-no-goal-note { color: #555; font-size: 14px; }
751
752 @media (max-width: 680px) {
753 .bp-campaign-column:last-child { border-left: none; border-right: none; border-radius: 0; }
754 }
755 }
756
757 .bp-campaign.animal-rescue {
758 max-width: 1200px;
759
760 // Stretch both columns to equal height so the sidebar border spans the full left-column height
761 .bp-campaign-columns {
762 align-items: stretch;
763 }
764
765 // Right sidebar: 4-sided border box covering the full column height
766 .bp-campaign-column:last-child {
767 border: 1px solid #e5e7eb;
768 border-radius: 12px;
769 padding: 24px;
770 display: flex;
771 flex-direction: column;
772 gap: 24px;
773 }
774
775 @media (max-width: 680px) {
776 .bp-campaign-column:last-child {
777 border-radius: 8px;
778 }
779 }
780 }
781
782 // ─── Tree Plantation Campaign ──────────────────────────────────────────────────
783 // Layout: 50/50 two-column.
784 // Left — full-bleed hero photo (grows to match right column height) +
785 // green-headline description + rounded bottom photo.
786 // Right — beige (#f4f0e3) background with small "Save Earth" label, large
787 // bold campaign title, body text, flat stats, and green donate button.
788 // ──────────────────────────────────────────────────────────────────────────────
789 .bp-campaign.tree-plantation {
790 max-width: 1200px;
791 padding: 0;
792 overflow: hidden;
793
794 // Zero gap between columns — left photo bleeds flush into right panel
795 .bp-campaign-columns {
796 gap: 0;
797 align-items: stretch;
798 }
799
800 // ── Left column ───────────────────────────────────────────────────────────
801 .bp-campaign-column:first-child {
802 padding: 0;
803 display: flex;
804 flex-direction: column;
805 gap: 0;
806
807 // Element 1 wrapper (hero photo): grows to consume remaining column height
808 // so it always matches the right column's natural content height.
809 > .bp-element-wrap:first-child,
810 > .bp-builder-el-wrap:first-child {
811 flex: 1;
812 min-height: 340px;
813 overflow: hidden;
814 }
815
816 // Hero photo itself: fills the growing wrapper completely
817 > .bp-element-wrap:first-child .bp-campaign-photo,
818 > .bp-builder-el-wrap:first-child .bp-campaign-photo {
819 height: 100%;
820 }
821
822 > .bp-element-wrap:first-child .bp-campaign-image,
823 > .bp-builder-el-wrap:first-child .bp-campaign-image {
824 width: 100% !important;
825 max-width: 100% !important;
826 height: 100% !important;
827 object-fit: cover;
828 object-position: center;
829 border-radius: 0 !important;
830 display: block;
831 }
832
833 // Element 2 wrapper (description block): horizontal + top padding
834 > .bp-element-wrap:nth-child(2),
835 > .bp-builder-el-wrap:nth-child(2) {
836 padding: 36px 36px 20px;
837 }
838
839 // Element 3 wrapper (bottom photo): side + bottom padding
840 > .bp-element-wrap:nth-child(3),
841 > .bp-builder-el-wrap:nth-child(3) {
842 padding: 0 36px 36px;
843 }
844
845 // Bottom photo image: full-width, rounded corners, natural height
846 > .bp-element-wrap:nth-child(3) .bp-campaign-image,
847 > .bp-builder-el-wrap:nth-child(3) .bp-campaign-image {
848 width: 100% !important;
849 max-width: 100% !important;
850 height: auto !important;
851 border-radius: 12px !important;
852 object-fit: unset;
853 display: block;
854 }
855
856 // Green headline for the description in the left column
857 .bp-campaign-description-headline {
858 color: #61aa4f;
859 font-size: 18px;
860 font-weight: 700;
861 line-height: 1.35;
862 margin-bottom: 12px;
863 }
864
865 .bp-campaign-description-content {
866 color: #3a3a2e;
867 font-size: 15px;
868 line-height: 1.7;
869 }
870 }
871
872 // ── Right column ──────────────────────────────────────────────────────────
873 .bp-campaign-column:last-child {
874 background: #f4f0e3;
875 padding: 48px 52px;
876 display: flex;
877 flex-direction: column;
878 gap: 20px;
879 justify-content: center;
880 }
881
882 // "Save Earth" label — first description element in the right column.
883 // Small, uppercase, green: acts as a category tag above the title.
884 .bp-campaign-column:last-child > .bp-element-wrap:first-child .bp-campaign-description-headline,
885 .bp-campaign-column:last-child > .bp-builder-el-wrap:first-child .bp-campaign-description-headline {
886 color: #61aa4f;
887 font-size: 13px;
888 font-weight: 700;
889 text-transform: uppercase;
890 letter-spacing: 0.06em;
891 margin-bottom: 4px;
892 }
893
894 .bp-campaign-column:last-child > .bp-element-wrap:first-child .bp-campaign-description-content,
895 .bp-campaign-column:last-child > .bp-builder-el-wrap:first-child .bp-campaign-description-content {
896 color: #555;
897 font-size: 15px;
898 line-height: 1.6;
899 margin: 0;
900 }
901
902 // Campaign title: extra large, heavy weight, dark
903 .bp-campaign-column:last-child .bp-campaign-title {
904 font-size: 40px;
905 font-weight: 800;
906 color: #1a1a1a;
907 line-height: 1.15;
908 margin: 0;
909 }
910
911 // Body description text in the right column
912 .bp-campaign-column:last-child .bp-campaign-description-content {
913 color: #444;
914 font-size: 16px;
915 line-height: 1.7;
916 }
917
918 // Summary stats: flat display — no card background, no border, left-aligned
919 .bp-campaign-column:last-child .bp-campaign-summary {
920 gap: 36px;
921 flex-wrap: nowrap;
922 }
923
924 .bp-campaign-column:last-child .bp-summary-item {
925 background: transparent !important;
926 border: none !important;
927 border-radius: 0 !important;
928 padding: 0 !important;
929 text-align: left !important;
930 flex: none !important;
931 }
932
933 .bp-campaign-column:last-child .bp-summary-item strong {
934 font-size: 36px !important;
935 font-weight: 700 !important;
936 color: #1a1a1a !important;
937 display: block;
938 margin-bottom: 2px;
939 }
940
941 .bp-campaign-column:last-child .bp-summary-item span {
942 font-size: 13px !important;
943 color: #888 !important;
944 text-transform: none !important;
945 letter-spacing: 0 !important;
946 }
947
948 // Progress bar: green fill, soft green track, earthy label text
949 .bp-campaign-column:last-child .bp-progress-bar-wrap {
950 background: #d4e8d0;
951 height: 8px;
952 }
953
954 .bp-campaign-column:last-child .bp-progress-bar {
955 background-color: #61aa4f !important;
956 }
957
958 .bp-campaign-column:last-child .bp-progress-labels,
959 .bp-campaign-column:last-child .bp-progress-donated,
960 .bp-campaign-column:last-child .bp-progress-goal,
961 .bp-campaign-column:last-child .bp-progress-no-goal-note {
962 color: #5a6a58;
963 font-size: 13px;
964 }
965
966 .bp-campaign-column:last-child .bp-progress-headline {
967 color: #2a4a27;
968 }
969
970 // Donate button: green
971 .bp-campaign-column:last-child .bp-donate_btn {
972 background-color: #61aa4f !important;
973 color: #fff;
974 font-weight: 600;
975 border-radius: 6px;
976 text-align: center;
977
978 &:hover, &:focus { opacity: 0.9; color: #fff; }
979 }
980
981 // Social sharing + social links: bordered card inside the beige panel, no fill
982 .bp-campaign-column:last-child .bp-social-sharing,
983 .bp-campaign-column:last-child .bp-social-links {
984 background: transparent;
985 border: 1px solid #b8d9b3;
986 border-radius: 10px;
987 padding: 16px 20px;
988 }
989
990 .bp-campaign-column:last-child .bp-social-headline {
991 color: #2a4a27;
992 font-size: 15px;
993 font-weight: 700;
994 margin-bottom: 10px;
995 }
996
997 .bp-campaign-column:last-child .bp-social-icon {
998 border-color: #a8d0a3;
999 color: #2a4a27;
1000 background: #fff;
1001
1002 &:hover, &:focus {
1003 border-color: #61aa4f;
1004 color: #61aa4f;
1005 background: rgba(97, 170, 79, 0.12);
1006 }
1007 }
1008
1009 // ── Responsive ────────────────────────────────────────────────────────────
1010 @media (max-width: 900px) {
1011 .bp-campaign-column:last-child {
1012 padding: 36px 32px;
1013 }
1014
1015 .bp-campaign-column:last-child .bp-campaign-title {
1016 font-size: 32px;
1017 }
1018 }
1019
1020 @media (max-width: 680px) {
1021 // Stacked: reset stretch so columns behave normally when stacked
1022 .bp-campaign-columns {
1023 align-items: flex-start;
1024 }
1025
1026 // Hero photo: switch from flex-grow to fixed height when stacked
1027 .bp-campaign-column:first-child {
1028 > .bp-element-wrap:first-child,
1029 > .bp-builder-el-wrap:first-child {
1030 flex: none;
1031 height: 260px;
1032 }
1033
1034 > .bp-element-wrap:nth-child(2),
1035 > .bp-builder-el-wrap:nth-child(2) {
1036 padding: 24px 20px 16px;
1037 }
1038
1039 > .bp-element-wrap:nth-child(3),
1040 > .bp-builder-el-wrap:nth-child(3) {
1041 padding: 0 20px 24px;
1042 }
1043 }
1044
1045 .bp-campaign-column:last-child {
1046 padding: 28px 20px;
1047 justify-content: flex-start;
1048 }
1049
1050 .bp-campaign-column:last-child .bp-campaign-title {
1051 font-size: 26px;
1052 }
1053
1054 .bp-campaign-column:last-child .bp-summary-item strong {
1055 font-size: 26px !important;
1056 }
1057
1058 .bp-campaign-column:last-child .bp-campaign-summary {
1059 gap: 24px;
1060 }
1061 }
1062 }
1063
1064 // ─── Child Healthcare Fund ─────────────────────────────────────────────────────
1065 // Layout: 50/50 two-column on a dark navy background.
1066 // Left — full-bleed hero photo (flex-grows to match right panel) +
1067 // white tagline description + flat white summary stats at bottom.
1068 // Right — dark panel: small golden category label, huge uppercase campaign
1069 // title, flat summary row, amount-select buttons, custom-amount input,
1070 // golden DONATE NOW button, and social widgets styled for dark bg.
1071 // ──────────────────────────────────────────────────────────────────────────────
1072 .bp-campaign.child-healthcare {
1073 max-width: 1200px;
1074 padding: 0;
1075 overflow: hidden;
1076 background: #152153;
1077
1078 .bp-campaign-columns {
1079 gap: 0;
1080 align-items: stretch;
1081 }
1082
1083 // ── Left column ───────────────────────────────────────────────────────────
1084 .bp-campaign-column:first-child {
1085 padding: 0;
1086 display: flex;
1087 flex-direction: column;
1088 gap: 0;
1089
1090 // Hero photo: grows to fill column + padded so image breathes inside the dark panel
1091 > .bp-element-wrap:first-child,
1092 > .bp-builder-el-wrap:first-child {
1093 flex: 1;
1094 min-height: 280px;
1095 padding: 20px 20px 0;
1096 }
1097
1098 > .bp-element-wrap:first-child .bp-campaign-photo,
1099 > .bp-builder-el-wrap:first-child .bp-campaign-photo {
1100 height: 100%;
1101 }
1102
1103 > .bp-element-wrap:first-child .bp-campaign-image,
1104 > .bp-builder-el-wrap:first-child .bp-campaign-image {
1105 width: 100% !important;
1106 max-width: 100% !important;
1107 height: 100% !important;
1108 object-fit: cover;
1109 object-position: center top;
1110 border-radius: 10px !important;
1111 display: block;
1112 }
1113
1114 // Description (tagline): padding + white text
1115 > .bp-element-wrap:nth-child(2),
1116 > .bp-builder-el-wrap:nth-child(2) {
1117 padding: 20px 24px 12px;
1118 }
1119
1120 // Summary stats: padding + flush to bottom
1121 > .bp-element-wrap:nth-child(3),
1122 > .bp-builder-el-wrap:nth-child(3) {
1123 padding: 0 24px 24px;
1124 }
1125
1126 // Left-column description text: white
1127 .bp-campaign-description-headline {
1128 color: rgba(255, 255, 255, 0.55);
1129 font-size: 13px;
1130 font-weight: 700;
1131 text-transform: uppercase;
1132 letter-spacing: 0.07em;
1133 margin-bottom: 8px;
1134 }
1135
1136 .bp-campaign-description-content {
1137 color: rgba(255, 255, 255, 0.75);
1138 font-size: 14px;
1139 line-height: 1.65;
1140 }
1141
1142 // Left summary: flat, horizontal, large white numbers
1143 .bp-campaign-summary { gap: 32px; flex-wrap: nowrap; }
1144
1145 .bp-summary-item {
1146 background: transparent !important;
1147 border: none !important;
1148 border-radius: 0 !important;
1149 padding: 0 !important;
1150 text-align: left !important;
1151 flex: none !important;
1152 }
1153
1154 .bp-summary-item strong {
1155 font-size: 32px !important;
1156 font-weight: 800 !important;
1157 color: #fff !important;
1158 display: block;
1159 margin-bottom: 2px;
1160 }
1161
1162 .bp-summary-item span {
1163 font-size: 11px !important;
1164 color: rgba(255, 255, 255, 0.5) !important;
1165 text-transform: uppercase !important;
1166 letter-spacing: 0.08em !important;
1167 }
1168 }
1169
1170 // ── Right column ──────────────────────────────────────────────────────────
1171 // padding: top right(outer-edge) bottom left(between-columns)
1172 // right=20px matches the image's outer-edge padding so both sides are equal.
1173 .bp-campaign-column:last-child {
1174 padding: 36px 20px 36px 36px;
1175 display: flex;
1176 flex-direction: column;
1177 gap: 20px;
1178 justify-content: center;
1179 }
1180
1181 // Category label (first description element — small uppercase golden text)
1182 .bp-campaign-column:last-child > .bp-element-wrap:first-child .bp-campaign-description-headline,
1183 .bp-campaign-column:last-child > .bp-builder-el-wrap:first-child .bp-campaign-description-headline {
1184 color: #ecc30b;
1185 font-size: 12px;
1186 font-weight: 700;
1187 text-transform: uppercase;
1188 letter-spacing: 0.1em;
1189 margin-bottom: 0;
1190 }
1191
1192 // Campaign title: huge, uppercase, heavy, white — !important overrides the PHP inline style
1193 .bp-campaign-column:last-child .bp-campaign-title {
1194 font-size: 60px;
1195 font-weight: 900;
1196 color: #fff !important;
1197 text-transform: uppercase;
1198 line-height: 1.0;
1199 letter-spacing: -0.5px;
1200 margin: 0;
1201 }
1202
1203 // Right summary row: same flat large style
1204 .bp-campaign-column:last-child .bp-campaign-summary { gap: 32px; flex-wrap: nowrap; }
1205
1206 .bp-campaign-column:last-child .bp-summary-item {
1207 background: transparent !important;
1208 border: none !important;
1209 border-radius: 0 !important;
1210 padding: 0 !important;
1211 text-align: left !important;
1212 flex: none !important;
1213 }
1214
1215 .bp-campaign-column:last-child .bp-summary-item strong {
1216 font-size: 32px !important;
1217 font-weight: 800 !important;
1218 color: #fff !important;
1219 display: block;
1220 margin-bottom: 2px;
1221 }
1222
1223 .bp-campaign-column:last-child .bp-summary-item span {
1224 font-size: 11px !important;
1225 color: rgba(255, 255, 255, 0.5) !important;
1226 text-transform: uppercase !important;
1227 letter-spacing: 0.08em !important;
1228 }
1229
1230 // "Select an Amount" label (description with headline only, no content)
1231 .bp-campaign-column:last-child .bp-campaign-description-headline {
1232 color: rgba(255, 255, 255, 0.55);
1233 font-size: 12px;
1234 font-weight: 700;
1235 text-transform: uppercase;
1236 letter-spacing: 0.1em;
1237 margin-bottom: 0;
1238 }
1239
1240 .bp-campaign-column:last-child .bp-campaign-description-content {
1241 color: rgba(255, 255, 255, 0.65);
1242 font-size: 14px;
1243 line-height: 1.6;
1244 }
1245
1246 // Donate amount buttons: squared, white border, white text
1247 .bp-donate_amounts { gap: 6px; }
1248
1249 .bp-amount-label {
1250 background: transparent !important;
1251 border: 2px solid rgba(255, 255, 255, 0.25) !important;
1252 border-radius: 0 !important;
1253 color: #fff !important;
1254 font-size: 15px;
1255 font-weight: 600;
1256 padding: 12px 16px;
1257 transition: border-color 0.15s, color 0.15s;
1258
1259 &:hover {
1260 border-color: #ecc30b !important;
1261 color: #ecc30b !important;
1262 background: transparent !important;
1263 }
1264 }
1265
1266 input.bp-option-amount:checked + .bp-amount-label {
1267 border-color: #ecc30b !important;
1268 color: #ecc30b !important;
1269 background: transparent !important;
1270 }
1271
1272 // Custom amount input: dark background, white text
1273 .other_amount_section {
1274 background: rgba(255, 255, 255, 0.06) !important;
1275 border: 2px solid rgba(255, 255, 255, 0.2) !important;
1276 border-radius: 0 !important;
1277
1278 &:focus-within {
1279 border-color: #ecc30b !important;
1280 }
1281 }
1282
1283 .bp-amount-currency {
1284 color: rgba(255, 255, 255, 0.45) !important;
1285 background: rgba(255, 255, 255, 0.04) !important;
1286 border-right-color: rgba(255, 255, 255, 0.18) !important;
1287 }
1288
1289 .campaign-custom-amount {
1290 background: transparent !important;
1291 color: #fff !important;
1292
1293 &::placeholder { color: rgba(255, 255, 255, 0.3) !important; }
1294 }
1295
1296 // DONATE NOW button: golden background, dark text
1297 .bp-donate_btn {
1298 background-color: #ecc30b !important;
1299 color: #152153 !important;
1300 font-weight: 800;
1301 text-transform: uppercase;
1302 letter-spacing: 0.08em;
1303 border-radius: 0;
1304 font-size: 15px;
1305
1306 &:hover, &:focus { opacity: 0.9; color: #152153 !important; }
1307 }
1308
1309 // Social widgets: dark-mode frosted style
1310 .bp-social-sharing,
1311 .bp-social-links {
1312 background: rgba(255, 255, 255, 0.05);
1313 border: 1px solid rgba(255, 255, 255, 0.12);
1314 border-radius: 8px;
1315 padding: 16px 20px;
1316 }
1317
1318 .bp-social-headline {
1319 color: rgba(255, 255, 255, 0.55) !important;
1320 font-size: 11px;
1321 text-transform: uppercase;
1322 letter-spacing: 0.1em;
1323 margin-bottom: 10px;
1324 }
1325
1326 .bp-social-icon {
1327 border-color: rgba(255, 255, 255, 0.2);
1328 color: rgba(255, 255, 255, 0.65);
1329 background: transparent;
1330
1331 &:hover, &:focus {
1332 border-color: #ecc30b;
1333 color: #ecc30b;
1334 background: rgba(236, 195, 11, 0.1);
1335 }
1336 }
1337
1338 // Progress bar: golden fill, dark track, muted white labels
1339 .bp-progress-bar-wrap {
1340 background: rgba(255, 255, 255, 0.12);
1341 height: 8px;
1342 }
1343
1344 .bp-progress-bar {
1345 background-color: #ecc30b !important;
1346 }
1347
1348 .bp-progress-headline {
1349 color: rgba(255, 255, 255, 0.7);
1350 font-size: 13px;
1351 font-weight: 700;
1352 text-transform: uppercase;
1353 letter-spacing: 0.06em;
1354 }
1355
1356 .bp-progress-labels,
1357 .bp-progress-donated,
1358 .bp-progress-goal,
1359 .bp-progress-no-goal-note {
1360 color: rgba(255, 255, 255, 0.45);
1361 font-size: 12px;
1362 }
1363
1364 // ── Responsive ────────────────────────────────────────────────────────────
1365 @media (max-width: 900px) {
1366 .bp-campaign-column:last-child {
1367 padding: 28px 20px 28px 28px;
1368 }
1369
1370 .bp-campaign-column:last-child .bp-campaign-title {
1371 font-size: 46px;
1372 }
1373 }
1374
1375 @media (max-width: 680px) {
1376 .bp-campaign-columns { align-items: flex-start; }
1377
1378 .bp-campaign-column:first-child {
1379 > .bp-element-wrap:first-child,
1380 > .bp-builder-el-wrap:first-child {
1381 flex: none;
1382 height: 240px;
1383 }
1384
1385 > .bp-element-wrap:nth-child(2),
1386 > .bp-builder-el-wrap:nth-child(2) { padding: 16px 16px 10px; }
1387
1388 > .bp-element-wrap:nth-child(3),
1389 > .bp-builder-el-wrap:nth-child(3) { padding: 0 16px 20px; }
1390 }
1391
1392 .bp-campaign-column:last-child {
1393 padding: 24px 20px 24px 20px;
1394 justify-content: flex-start;
1395 }
1396
1397 .bp-campaign-column:last-child .bp-campaign-title { font-size: 32px; }
1398
1399 .bp-campaign-column:last-child .bp-summary-item strong { font-size: 24px !important; }
1400 .bp-campaign-column:first-child .bp-summary-item strong { font-size: 24px !important; }
1401 }
1402 }
1403