PluginProbe
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More / 2.3.1
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More v2.3.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 / assets / img / campaign / video-poster.svg

video-poster.svg in Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More 2.3.1, at assets/img/campaign/video-poster.svg

192 lines 10.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 675" role="img" aria-label="Better Payment campaign video placeholder" preserveAspectRatio="xMidYMid slice">
2 <!--
3 Poster frame for the Campaign Builder's Video element on a FREE install.
4
5 Drawn, never fetched: the builder must not pull a real thumbnail from
6 img.youtube.com — that needs Pro-owned URL parsing and would send the admin's
7 IP to Google on every preview render. See ProElementPreview::video().
8
9 Palette is deliberately the product's own: Better Payment indigo (#6b63f6 /
10 #5a7ff0, shared with ai-default-hero.svg) lighting the top-left, Pro's orange
11 (#ec6a2b / #f6a821) lighting the bottom-right. The heart-in-hands mark is the
12 same one ai-default-hero.svg uses, so generated and placeholder campaign
13 artwork read as one family.
14
15 WHAT MAKES IT READ AS A PHOTOGRAPH RATHER THAN A DIAGRAM, in order of how much
16 each one does — none of these are ornament, and removing them flattens it:
17 1. A silhouetted crowd along the bottom. Flat vector panels (this used to be
18 three grey "builder column" rectangles) look like a chart; out-of-focus
19 people look like a frame from a campaign film, and fundraising is about
20 people. It also creates a real foreground.
21 2. Depth of field. The crowd and the bokeh are Gaussian-blurred at different
22 radii, so the image has near/far planes instead of one flat sheet.
23 3. Film grain over everything. This is the single cheapest realism cue —
24 perfectly clean gradients read as vector art to the eye.
25 4. Light shafts that fade out along their length, rather than flat-opacity
26 diagonal bands, which read as stray geometry.
27
28 THE CENTRE IS KEPT CLEAR ON PURPOSE. The red play pill sits dead centre and
29 the "Get PRO to Unlock" button lands just below it; motifs live in the left and
30 right thirds and along the bottom, so neither button ever covers artwork or
31 fights it for attention. Anything added here must respect that gap.
32 -->
33 <defs>
34 <linearGradient id="bpvBase" x1="0" y1="0" x2="1200" y2="675" gradientUnits="userSpaceOnUse">
35 <stop stop-color="#252c52"/>
36 <stop offset="0.55" stop-color="#151b31"/>
37 <stop offset="1" stop-color="#0a0e18"/>
38 </linearGradient>
39
40 <!-- Better Payment indigo, keying the scene from the top left. -->
41 <radialGradient id="bpvGlowIndigo" cx="230" cy="140" r="560" gradientUnits="userSpaceOnUse">
42 <stop stop-color="#6b63f6" stop-opacity="0.55"/>
43 <stop offset="1" stop-color="#6b63f6" stop-opacity="0"/>
44 </radialGradient>
45
46 <radialGradient id="bpvGlowBlue" cx="690" cy="250" r="430" gradientUnits="userSpaceOnUse">
47 <stop stop-color="#5a7ff0" stop-opacity="0.26"/>
48 <stop offset="1" stop-color="#5a7ff0" stop-opacity="0"/>
49 </radialGradient>
50
51 <!-- Pro's orange, answering from the bottom right. -->
52 <radialGradient id="bpvGlowPro" cx="1010" cy="600" r="520" gradientUnits="userSpaceOnUse">
53 <stop stop-color="#ec6a2b" stop-opacity="0.42"/>
54 <stop offset="1" stop-color="#ec6a2b" stop-opacity="0"/>
55 </radialGradient>
56
57 <linearGradient id="bpvProBar" x1="0" y1="0" x2="1" y2="0">
58 <stop stop-color="#f6a821"/>
59 <stop offset="1" stop-color="#ec6a2b"/>
60 </linearGradient>
61
62 <!-- Light shafts fade along their length instead of being flat bands. -->
63 <linearGradient id="bpvShaft" x1="0" y1="0" x2="0" y2="675" gradientUnits="userSpaceOnUse">
64 <stop stop-color="#ffffff" stop-opacity="0.10"/>
65 <stop offset="0.55" stop-color="#ffffff" stop-opacity="0.035"/>
66 <stop offset="1" stop-color="#ffffff" stop-opacity="0"/>
67 </linearGradient>
68
69 <!-- Warm floor bounce under the crowd. -->
70 <linearGradient id="bpvFloor" x1="0" y1="470" x2="0" y2="675" gradientUnits="userSpaceOnUse">
71 <stop stop-color="#0a0e18" stop-opacity="0"/>
72 <stop offset="1" stop-color="#05070d" stop-opacity="0.72"/>
73 </linearGradient>
74
75 <radialGradient id="bpvHeartHalo" cx="232" cy="330" r="215" gradientUnits="userSpaceOnUse">
76 <stop stop-color="#a9b4ff" stop-opacity="0.20"/>
77 <stop offset="1" stop-color="#a9b4ff" stop-opacity="0"/>
78 </radialGradient>
79
80 <!-- Darkens the edges so the duration pill stays legible. -->
81 <radialGradient id="bpvVignette" cx="600" cy="338" r="720" gradientUnits="userSpaceOnUse">
82 <stop offset="0.45" stop-color="#000000" stop-opacity="0"/>
83 <stop offset="1" stop-color="#000000" stop-opacity="0.55"/>
84 </radialGradient>
85
86 <filter id="bpvBokeh" x="-30%" y="-30%" width="160%" height="160%">
87 <feGaussianBlur stdDeviation="26"/>
88 </filter>
89 <filter id="bpvCrowdFar" x="-20%" y="-20%" width="140%" height="140%">
90 <feGaussianBlur stdDeviation="3.5"/>
91 </filter>
92 <filter id="bpvCrowdNear" x="-20%" y="-20%" width="140%" height="140%">
93 <feGaussianBlur stdDeviation="9"/>
94 </filter>
95 <filter id="bpvShaftSoft" x="-20%" y="-20%" width="140%" height="140%">
96 <feGaussianBlur stdDeviation="14"/>
97 </filter>
98
99 <!-- Film grain. Desaturated fractal noise, laid over the whole frame. -->
100 <filter id="bpvGrain" x="0" y="0" width="100%" height="100%">
101 <feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="3" stitchTiles="stitch"/>
102 <feColorMatrix type="saturate" values="0"/>
103 </filter>
104 </defs>
105
106 <rect width="1200" height="675" fill="url(#bpvBase)"/>
107 <rect width="1200" height="675" fill="url(#bpvGlowIndigo)"/>
108 <rect width="1200" height="675" fill="url(#bpvGlowBlue)"/>
109 <rect width="1200" height="675" fill="url(#bpvGlowPro)"/>
110
111 <!-- Light shafts, softened and faded. -->
112 <g filter="url(#bpvShaftSoft)" fill="url(#bpvShaft)">
113 <path d="M170 675 L630 -40 L742 -40 L282 675 Z"/>
114 <path d="M470 675 L930 -40 L986 -40 L526 675 Z"/>
115 </g>
116
117 <!-- Out-of-focus bokeh — the far plane. -->
118 <g filter="url(#bpvBokeh)">
119 <circle cx="128" cy="96" r="58" fill="#ffffff" opacity="0.07"/>
120 <circle cx="1094" cy="536" r="92" fill="#ffb27a" opacity="0.10"/>
121 <circle cx="1016" cy="112" r="30" fill="#ffffff" opacity="0.09"/>
122 <circle cx="196" cy="576" r="24" fill="#ffffff" opacity="0.08"/>
123 <circle cx="880" cy="330" r="36" fill="#ffd0a8" opacity="0.07"/>
124 </g>
125
126 <!-- ── Left third: heart-in-hands, shared with ai-default-hero.svg ── -->
127 <rect x="0" y="100" width="470" height="470" fill="url(#bpvHeartHalo)"/>
128 <g transform="translate(232 330) scale(0.60)" fill="#ffffff" opacity="0.17">
129 <path d="M-190 70 C-150 150 -70 190 0 190 C70 190 150 150 190 70 C150 120 70 145 0 145 C-70 145 -150 120 -190 70 Z"/>
130 <path d="M-150 40 C-120 108 -60 140 0 140 C60 140 120 108 150 40 C120 82 60 104 0 104 C-60 104 -120 82 -150 40 Z" opacity="0.6"/>
131 <path d="M0 -30 C-26 -84 -108 -80 -132 -24 C-152 22 -120 66 -60 112 L0 156 L60 112 C120 66 152 22 132 -24 C108 -80 26 -84 0 -30 Z"/>
132 </g>
133
134 <!-- ── Right third: a campaign progress card — the Campaign Builder motif ── -->
135 <g transform="translate(838 218)">
136 <rect x="0" y="0" width="270" height="176" rx="18"
137 fill="#ffffff" fill-opacity="0.07"
138 stroke="#ffffff" stroke-opacity="0.20" stroke-width="2"/>
139 <rect x="26" y="30" width="146" height="12" rx="6" fill="#ffffff" opacity="0.42"/>
140 <rect x="26" y="54" width="196" height="8" rx="4" fill="#ffffff" opacity="0.18"/>
141 <rect x="26" y="88" width="218" height="12" rx="6" fill="#ffffff" opacity="0.18"/>
142 <rect x="26" y="88" width="142" height="12" rx="6" fill="url(#bpvProBar)"/>
143 <rect x="26" y="114" width="62" height="8" rx="4" fill="#ffffff" opacity="0.34"/>
144 <rect x="182" y="114" width="62" height="8" rx="4" fill="#ffffff" opacity="0.20"/>
145 <rect x="26" y="138" width="112" height="22" rx="11" fill="#ffffff" opacity="0.30"/>
146 </g>
147
148 <!-- ── Donation coins ── -->
149 <g opacity="0.15">
150 <circle cx="1052" cy="176" r="24" fill="none" stroke="#ffffff" stroke-width="3"/>
151 <path d="M1052 163 v26 M1046 169 h9 a4.6 4.6 0 0 1 0 9 h-8 a4.6 4.6 0 0 0 0 9 h9"
152 fill="none" stroke="#ffffff" stroke-width="2.8" stroke-linecap="round"/>
153 </g>
154 <g opacity="0.10">
155 <circle cx="742" cy="470" r="17" fill="none" stroke="#ffffff" stroke-width="3"/>
156 <path d="M742 461 v18 M737 465 h6.5 a3.4 3.4 0 0 1 0 6.6 h-5.6 a3.4 3.4 0 0 0 0 6.6 h6.5"
157 fill="none" stroke="#ffffff" stroke-width="2.4" stroke-linecap="round"/>
158 </g>
159
160 <!-- Floor bounce, sitting under the crowd so they read as standing in it. -->
161 <rect x="0" y="470" width="1200" height="205" fill="url(#bpvFloor)"/>
162
163 <!-- ── Foreground: a silhouetted crowd of supporters ──
164 Two planes at different blur radii. Heads sit above the bottom edge and
165 shoulders run off it, so the crowd is cropped by the frame the way a real
166 foreground would be. -->
167 <g fill="#05070d">
168 <g filter="url(#bpvCrowdFar)" opacity="0.62">
169 <g transform="translate(96 600)"><circle cy="-26" r="21"/><path d="M-42 75 q0 -68 42 -68 q42 0 42 68 Z"/></g>
170 <g transform="translate(214 616)"><circle cy="-22" r="18"/><path d="M-36 59 q0 -58 36 -58 q36 0 36 58 Z"/></g>
171 <g transform="translate(330 604)"><circle cy="-25" r="20"/><path d="M-40 71 q0 -65 40 -65 q40 0 40 65 Z"/></g>
172 <g transform="translate(452 620)"><circle cy="-21" r="17"/><path d="M-34 55 q0 -55 34 -55 q34 0 34 55 Z"/></g>
173 <g transform="translate(742 618)"><circle cy="-22" r="18"/><path d="M-36 57 q0 -57 36 -57 q36 0 36 57 Z"/></g>
174 <g transform="translate(860 606)"><circle cy="-25" r="20"/><path d="M-40 69 q0 -64 40 -64 q40 0 40 64 Z"/></g>
175 <g transform="translate(982 620)"><circle cy="-21" r="17"/><path d="M-34 55 q0 -55 34 -55 q34 0 34 55 Z"/></g>
176 <g transform="translate(1096 608)"><circle cy="-24" r="19"/><path d="M-38 67 q0 -62 38 -62 q38 0 38 62 Z"/></g>
177 </g>
178
179 <!-- Nearer, softer figures at the edges — the depth cue that sells it. -->
180 <g filter="url(#bpvCrowdNear)" opacity="0.72">
181 <g transform="translate(20 604)"><circle cy="-34" r="30"/><path d="M-60 105 q0 -96 60 -96 q60 0 60 96 Z"/></g>
182 <g transform="translate(1176 598)"><circle cy="-36" r="32"/><path d="M-64 113 q0 -102 64 -102 q64 0 64 102 Z"/></g>
183 <g transform="translate(596 640)" opacity="0.55"><circle cy="-28" r="24"/><path d="M-48 78 q0 -76 48 -76 q48 0 48 76 Z"/></g>
184 </g>
185 </g>
186
187 <rect width="1200" height="675" fill="url(#bpvVignette)"/>
188
189 <!-- Grain last, over everything. -->
190 <rect width="1200" height="675" filter="url(#bpvGrain)" opacity="0.085" style="mix-blend-mode:overlay"/>
191 </svg>
192