PluginProbe
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More / 2.2.1
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More v2.2.1
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.1, at src/blocks/campaign-display/style.scss

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