Donation · 2 designs
A donation / fundraising form authored in Portuguese (pt-BR) with a preset-amount chip selector, recurring toggle, custom-amount input, name, email and an optional message. The Organic design lives on a warm sand canvas with deep forest accents, a hand-drawn leaf in the corner and pill-shaped chips — the Patagonia / mutual-aid look. The Soft design is a friendlier card variant with a violet gradient CTA for creators and Substack-style drives. Both default to BRL but the currency prefix is one line of CSS away from EUR, USD or anything else.
HTML · 1 file
<!-- SaveForm.io: donation (organic) -->
<style>
[data-sf-tpl="donation"] {
all: revert;
box-sizing: border-box;
display: block;
width: 100%;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
font-size: 16px;
line-height: 1.5;
color: #18181b;
-webkit-font-smoothing: antialiased;
}
[data-sf-tpl="donation"] *,
[data-sf-tpl="donation"] *::before,
[data-sf-tpl="donation"] *::after {
box-sizing: border-box;
}
[data-sf-tpl="donation"] input,
[data-sf-tpl="donation"] textarea,
[data-sf-tpl="donation"] select,
[data-sf-tpl="donation"] button {
font: inherit;
color: inherit;
margin: 0;
}
[data-sf-tpl="donation"] button {
cursor: pointer;
-webkit-appearance: none;
appearance: none;
}
[data-sf-tpl="donation"] label {
display: block;
}
[data-sf-tpl="donation"].sf-donation--organic {
max-width: 500px;
background: #f7efde;
border-radius: 28px;
padding: 36px 32px 32px;
position: relative;
overflow: hidden;
font-family: ui-sans-serif, system-ui, -apple-system, "Inter", sans-serif;
color: #2d3a23;
box-shadow: 0 20px 60px -25px rgba(58, 95, 58, 0.4);
}
[data-sf-tpl="donation"] .sf-donation__leaf {
position: absolute;
top: -40px;
right: -40px;
width: 200px;
height: 200px;
pointer-events: none;
opacity: 0.85;
}
[data-sf-tpl="donation"] .sf-donation__blob {
position: absolute;
bottom: -80px;
left: -60px;
width: 220px;
height: 220px;
background: radial-gradient(circle at 30% 30%, rgba(200, 122, 74, 0.32), transparent 65%);
border-radius: 50%;
pointer-events: none;
}
[data-sf-tpl="donation"] .sf-donation__inner {
position: relative;
z-index: 1;
}
[data-sf-tpl="donation"] .sf-donation__eyebrow {
display: inline-flex;
align-items: center;
gap: 8px;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.18em;
text-transform: uppercase;
background: rgba(58, 95, 58, 0.12);
color: #3a5f3a;
padding: 5px 12px;
border-radius: 999px;
margin-bottom: 16px;
}
[data-sf-tpl="donation"] .sf-donation__eyebrow-dot {
width: 6px;
height: 6px;
background: #c87a4a;
border-radius: 50%;
}
[data-sf-tpl="donation"] .sf-donation__title {
font-family: "Cormorant Garamond", "Iowan Old Style", "Georgia", serif;
font-size: 36px;
font-weight: 500;
letter-spacing: -0.015em;
line-height: 1.05;
margin: 0 0 8px 0;
color: #1f3015;
}
[data-sf-tpl="donation"] .sf-donation__title em {
font-style: italic;
color: #c87a4a;
}
[data-sf-tpl="donation"] .sf-donation__lede {
font-size: 14px;
color: #4a6240;
line-height: 1.6;
margin: 0 0 24px 0;
}
[data-sf-tpl="donation"] .sf-donation__freq {
display: inline-flex;
background: rgba(58, 95, 58, 0.08);
border-radius: 999px;
padding: 4px;
margin-bottom: 20px;
border: 1px solid rgba(58, 95, 58, 0.12);
}
[data-sf-tpl="donation"] .sf-donation__freq input {
position: absolute;
opacity: 0;
pointer-events: none;
}
[data-sf-tpl="donation"] .sf-donation__freq label {
padding: 8px 18px;
border-radius: 999px;
font-size: 12px;
font-weight: 700;
letter-spacing: 0.06em;
color: #4a6240;
cursor: pointer;
transition: background 200ms ease, color 200ms ease, box-shadow 200ms ease;
}
[data-sf-tpl="donation"] .sf-donation__freq input:checked + label {
background: #3a5f3a;
color: #f7efde;
box-shadow: 0 4px 12px -4px rgba(58, 95, 58, 0.5);
}
[data-sf-tpl="donation"] .sf-donation__amounts {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 8px;
margin-bottom: 12px;
}
[data-sf-tpl="donation"] .sf-donation__amounts input {
position: absolute;
opacity: 0;
pointer-events: none;
}
[data-sf-tpl="donation"] .sf-donation__amounts label {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 14px 6px 12px;
border-radius: 18px;
background: #ffffff;
border: 1px solid rgba(58, 95, 58, 0.18);
font-weight: 700;
color: #3a5f3a;
cursor: pointer;
transition: all 200ms ease;
}
[data-sf-tpl="donation"] .sf-donation__amounts label:hover {
transform: translateY(-2px);
border-color: #3a5f3a;
}
[data-sf-tpl="donation"] .sf-donation__amounts input:checked + label {
background: #3a5f3a;
color: #f7efde;
border-color: #3a5f3a;
transform: translateY(-2px);
box-shadow: 0 10px 20px -10px rgba(58, 95, 58, 0.6);
}
[data-sf-tpl="donation"] .sf-donation__amount-currency {
font-size: 10px;
letter-spacing: 0.18em;
text-transform: uppercase;
opacity: 0.7;
margin-bottom: 2px;
}
[data-sf-tpl="donation"] .sf-donation__amount-value {
font-size: 18px;
font-weight: 800;
letter-spacing: -0.02em;
}
[data-sf-tpl="donation"] .sf-donation__custom {
display: flex;
align-items: center;
background: #ffffff;
border: 1px solid rgba(58, 95, 58, 0.18);
border-radius: 16px;
padding: 4px 14px 4px 14px;
margin-bottom: 18px;
transition: border-color 160ms ease, box-shadow 160ms ease;
}
[data-sf-tpl="donation"] .sf-donation__custom:focus-within {
border-color: #3a5f3a;
box-shadow: 0 0 0 4px rgba(58, 95, 58, 0.12);
}
[data-sf-tpl="donation"] .sf-donation__custom-prefix {
font-weight: 700;
font-size: 13px;
color: #4a6240;
letter-spacing: 0.05em;
margin-right: 8px;
}
[data-sf-tpl="donation"] .sf-donation__custom input {
flex: 1;
border: 0;
background: transparent;
font-family: inherit;
font-size: 16px;
font-weight: 700;
color: #1f3015;
outline: none;
padding: 12px 0;
}
[data-sf-tpl="donation"] .sf-donation__field {
margin-bottom: 14px;
}
[data-sf-tpl="donation"] .sf-donation__grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
margin-bottom: 14px;
}
[data-sf-tpl="donation"] .sf-donation__label {
display: block;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.12em;
text-transform: uppercase;
margin-bottom: 6px;
color: #4a6240;
}
[data-sf-tpl="donation"] .sf-donation__input,
[data-sf-tpl="donation"] .sf-donation__textarea {
width: 100%;
padding: 12px 14px;
border: 1px solid rgba(58, 95, 58, 0.18);
border-radius: 14px;
background: #ffffff;
font-family: inherit;
font-size: 14px;
color: #1f3015;
outline: none;
transition: border-color 160ms ease, box-shadow 160ms ease;
}
[data-sf-tpl="donation"] .sf-donation__textarea {
resize: vertical;
min-height: 72px;
line-height: 1.55;
}
[data-sf-tpl="donation"] .sf-donation__input:focus,
[data-sf-tpl="donation"] .sf-donation__textarea:focus {
border-color: #3a5f3a;
box-shadow: 0 0 0 4px rgba(58, 95, 58, 0.12);
}
[data-sf-tpl="donation"] .sf-donation__input::placeholder,
[data-sf-tpl="donation"] .sf-donation__textarea::placeholder {
color: #94a888;
}
[data-sf-tpl="donation"] .sf-donation__button {
width: 100%;
margin-top: 12px;
padding: 16px 18px;
background: #3a5f3a;
background-image: linear-gradient(135deg, #3a5f3a, #2d4a2d);
color: #f7efde;
font-family: inherit;
font-weight: 700;
font-size: 14px;
letter-spacing: 0.06em;
border-radius: 999px;
border: 0;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
transition: filter 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}
[data-sf-tpl="donation"] .sf-donation__button:hover {
filter: brightness(1.08);
transform: translateY(-1px);
box-shadow: 0 14px 32px -10px rgba(58, 95, 58, 0.55);
}
[data-sf-tpl="donation"] .sf-donation__heart {
width: 16px;
height: 16px;
}
[data-sf-tpl="donation"] .sf-donation__fine {
text-align: center;
font-size: 11px;
color: #6b7e5b;
margin: 12px 0 0 0;
line-height: 1.5;
}
[data-sf-tpl="donation"] .sf-donation__honey {
position: absolute;
left: -9999px;
}
/* --- Builder-compat: organic-aesthetic radio cards. The template body
uses bespoke __freq (pills) and __amounts (cards) groups; the builder
only emits one __radio-group shape per design, so we pick the more
common amount-card look. */
[data-sf-tpl="donation"] .sf-donation__radio-group {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
gap: 8px;
margin-bottom: 6px;
position: relative;
}
[data-sf-tpl="donation"] .sf-donation__radio {
position: absolute;
opacity: 0;
pointer-events: none;
width: 0;
height: 0;
}
[data-sf-tpl="donation"] .sf-donation__radio-label {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 14px 6px 12px;
border-radius: 18px;
background: #ffffff;
border: 1px solid rgba(58, 95, 58, 0.18);
font-weight: 700;
color: #3a5f3a;
cursor: pointer;
transition: all 200ms ease;
text-align: center;
min-width: 0;
}
[data-sf-tpl="donation"] .sf-donation__radio-label:hover {
transform: translateY(-2px);
border-color: #3a5f3a;
}
[data-sf-tpl="donation"] .sf-donation__radio:checked + .sf-donation__radio-label {
background: #3a5f3a;
color: #f7efde;
border-color: #3a5f3a;
transform: translateY(-2px);
box-shadow: 0 10px 20px -10px rgba(58, 95, 58, 0.6);
}
[data-sf-tpl="donation"] .sf-donation__radio-text {
font-family: inherit;
font-size: 13px;
font-weight: 700;
}
</style>
<form
class="sf-donation--organic"
data-sf-tpl="donation"
action="https://saveform.io/api/submit/YOUR_FORM_ID"
method="POST"
>
<svg class="sf-donation__leaf" viewBox="0 0 200 200" aria-hidden="true">
<path d="M180 20c-60 20-90 50-110 95-12 28-8 60 12 70 18 8 50-2 76-30 38-40 50-100 22-135z"
fill="#3a5f3a" opacity="0.22"/>
<path d="M180 20c-50 30-78 60-94 100" stroke="#3a5f3a" stroke-width="1" fill="none" opacity="0.45"/>
</svg>
<span class="sf-donation__blob" aria-hidden="true"></span>
<div class="sf-donation__inner">
<span class="sf-donation__eyebrow">
<span class="sf-donation__eyebrow-dot" aria-hidden="true"></span>
Campanha aberta
</span>
<h2 class="sf-donation__title">Plante uma <em>sementinha</em>.</h2>
<p class="sf-donation__lede">
Toda contribuição vai direto para a equipe de campo. Recibo por
e-mail em segundos, transparência total no fim do mês.
</p>
<input type="text" name="_honey" class="sf-donation__honey" tabindex="-1" autocomplete="off" />
<div class="sf-donation__freq" role="group" aria-label="Frequência">
<input type="radio" id="sf-donation-fq1" name="frequencia" value="unica" />
<label for="sf-donation-fq1">Doação única</label>
<input type="radio" id="sf-donation-fq2" name="frequencia" value="mensal" checked />
<label for="sf-donation-fq2">Mensal</label>
</div>
<div class="sf-donation__amounts">
<input type="radio" id="sf-donation-a1" name="valor" value="25" />
<label for="sf-donation-a1">
<span class="sf-donation__amount-currency">R$</span>
<span class="sf-donation__amount-value">25</span>
</label>
<input type="radio" id="sf-donation-a2" name="valor" value="50" checked />
<label for="sf-donation-a2">
<span class="sf-donation__amount-currency">R$</span>
<span class="sf-donation__amount-value">50</span>
</label>
<input type="radio" id="sf-donation-a3" name="valor" value="100" />
<label for="sf-donation-a3">
<span class="sf-donation__amount-currency">R$</span>
<span class="sf-donation__amount-value">100</span>
</label>
<input type="radio" id="sf-donation-a4" name="valor" value="250" />
<label for="sf-donation-a4">
<span class="sf-donation__amount-currency">R$</span>
<span class="sf-donation__amount-value">250</span>
</label>
</div>
<label class="sf-donation__custom" for="sf-donation-custom">
<span class="sf-donation__custom-prefix">R$</span>
<input id="sf-donation-custom" type="number" name="valor_personalizado" placeholder="Outro valor" min="1" step="1" />
</label>
<div class="sf-donation__grid">
<div>
<label class="sf-donation__label" for="sf-donation-nome">Nome</label>
<input id="sf-donation-nome" class="sf-donation__input" type="text" name="nome" required />
</div>
<div>
<label class="sf-donation__label" for="sf-donation-email">E-mail</label>
<input id="sf-donation-email" class="sf-donation__input" type="email" name="email" required />
</div>
</div>
<div class="sf-donation__field">
<label class="sf-donation__label" for="sf-donation-msg">Mensagem (opcional)</label>
<textarea id="sf-donation-msg" class="sf-donation__textarea" name="mensagem" placeholder="Em homenagem a, ou só um oi mesmo..."></textarea>
</div>
<button class="sf-donation__button" type="submit">
<svg class="sf-donation__heart" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
<path d="M12 21s-7-4.5-9.5-9C.5 7.5 3.5 3 8 3c2 0 3.5 1 4 2.5C12.5 4 14 3 16 3c4.5 0 7.5 4.5 5.5 9C19 16.5 12 21 12 21z"/>
</svg>
Doar agora
</button>
<p class="sf-donation__fine">
Pagamento seguro via Pix, cartão ou boleto · recibo automático
</p>
</div>
</form>
Replace YOUR_FORM_ID with the id of a form in your SaveForm dashboard. Every class is namespaced under [data-sf-tpl="donation"] so the template cannot collide with (or be overridden by) your site styles.