Membership · 2 designs
A members-only signup form authored entirely in French (fr-FR), for private clubs, art collectives, wine houses, fashion ateliers and any product whose first impression should feel like an invitation. The Luxe variant lives on a pure black canvas with a thin gold rule, ultra-light serif display type and uppercase tracked-out labels. The Glass variant is a frosted card with a champagne-and-blush palette built to sit on top of hero photography. Three tiered pricing options (Découverte / Privilège / Prestige) are wired in by default — change the amounts and labels to match your offer.
HTML · 1 file
<!-- SaveForm.io: membership (luxe) -->
<style>
[data-sf-tpl="membership"] {
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="membership"] *,
[data-sf-tpl="membership"] *::before,
[data-sf-tpl="membership"] *::after {
box-sizing: border-box;
}
[data-sf-tpl="membership"] input,
[data-sf-tpl="membership"] textarea,
[data-sf-tpl="membership"] select,
[data-sf-tpl="membership"] button {
font: inherit;
color: inherit;
margin: 0;
}
[data-sf-tpl="membership"] button {
cursor: pointer;
-webkit-appearance: none;
appearance: none;
}
[data-sf-tpl="membership"] label {
display: block;
}
[data-sf-tpl="membership"].sf-membership--luxe {
max-width: 520px;
background: #050505;
padding: 56px 44px 44px;
color: #f4ecd8;
position: relative;
font-family: "Cormorant Garamond", "Didot", "Bodoni 72", "Apple Garamond", "Times New Roman", serif;
}
[data-sf-tpl="membership"] .sf-membership__edge {
position: absolute;
inset: 12px;
border: 1px solid #c9a96e;
pointer-events: none;
opacity: 0.45;
}
[data-sf-tpl="membership"] .sf-membership__crest {
position: relative;
text-align: center;
font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;
font-size: 10px;
letter-spacing: 0.5em;
text-transform: uppercase;
font-weight: 500;
color: #c9a96e;
margin: 0 0 30px 0;
padding-bottom: 10px;
}
[data-sf-tpl="membership"] .sf-membership__crest::after {
content: "";
position: absolute;
bottom: -2px;
left: 50%;
transform: translateX(-50%);
width: 24px;
height: 1px;
background: #c9a96e;
}
[data-sf-tpl="membership"] .sf-membership__title {
font-size: 44px;
font-weight: 300;
letter-spacing: -0.01em;
line-height: 1;
margin: 0 0 12px 0;
text-align: center;
color: #f4ecd8;
}
[data-sf-tpl="membership"] .sf-membership__title em {
font-style: italic;
font-weight: 400;
color: #c9a96e;
}
[data-sf-tpl="membership"] .sf-membership__lede {
text-align: center;
font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;
font-size: 12px;
letter-spacing: 0.08em;
color: #8a7c5b;
line-height: 1.7;
margin: 0 auto 32px;
max-width: 360px;
font-style: normal;
}
[data-sf-tpl="membership"] .sf-membership__grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
margin-bottom: 22px;
}
[data-sf-tpl="membership"] .sf-membership__field {
margin-bottom: 22px;
}
[data-sf-tpl="membership"] .sf-membership__label {
display: block;
font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;
font-size: 9px;
font-weight: 500;
letter-spacing: 0.32em;
text-transform: uppercase;
margin-bottom: 10px;
color: #c9a96e;
}
[data-sf-tpl="membership"] .sf-membership__input {
width: 100%;
padding: 6px 0 8px;
border: 0;
border-bottom: 1px solid #3a3528;
background: transparent;
font-family: inherit;
font-size: 18px;
font-weight: 300;
color: #f4ecd8;
outline: none;
transition: border-color 200ms ease;
letter-spacing: 0.01em;
}
[data-sf-tpl="membership"] .sf-membership__input:focus {
border-bottom-color: #c9a96e;
}
[data-sf-tpl="membership"] .sf-membership__tiers {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 8px;
margin-bottom: 8px;
}
[data-sf-tpl="membership"] .sf-membership__tiers input {
position: absolute;
opacity: 0;
pointer-events: none;
}
[data-sf-tpl="membership"] .sf-membership__tiers label {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 18px 6px 14px;
border: 1px solid #2a2618;
background: transparent;
cursor: pointer;
transition: border-color 200ms ease, background 200ms ease;
text-align: center;
}
[data-sf-tpl="membership"] .sf-membership__tiers label:hover {
border-color: #8a7c5b;
}
[data-sf-tpl="membership"] .sf-membership__tiers input:checked + label {
border-color: #c9a96e;
background: rgba(201, 169, 110, 0.06);
}
[data-sf-tpl="membership"] .sf-membership__tier-name {
font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;
font-size: 9px;
letter-spacing: 0.3em;
text-transform: uppercase;
font-weight: 600;
color: #c9a96e;
margin-bottom: 8px;
}
[data-sf-tpl="membership"] .sf-membership__tier-price {
font-size: 22px;
font-weight: 300;
color: #f4ecd8;
}
[data-sf-tpl="membership"] .sf-membership__tier-suffix {
font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;
font-size: 9px;
letter-spacing: 0.18em;
text-transform: uppercase;
color: #6b6043;
margin-top: 2px;
}
[data-sf-tpl="membership"] .sf-membership__button {
width: 100%;
margin-top: 18px;
padding: 16px 18px;
background: transparent;
color: #c9a96e;
font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;
font-weight: 500;
font-size: 11px;
letter-spacing: 0.32em;
text-transform: uppercase;
border: 1px solid #c9a96e;
cursor: pointer;
transition: background 200ms ease, color 200ms ease, letter-spacing 200ms ease;
}
[data-sf-tpl="membership"] .sf-membership__button:hover {
background: #c9a96e;
color: #050505;
letter-spacing: 0.38em;
}
[data-sf-tpl="membership"] .sf-membership__fine {
text-align: center;
margin: 14px 0 0 0;
font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;
font-size: 9px;
letter-spacing: 0.22em;
text-transform: uppercase;
color: #4a4434;
}
[data-sf-tpl="membership"] .sf-membership__honey {
position: absolute;
left: -9999px;
}
/* --- Builder-compat: style the generic radio-group selectors so the
builder preview matches the bespoke __tiers cards used in the
template's body markup. Same supper-club black-and-gold aesthetic. */
[data-sf-tpl="membership"] .sf-membership__radio-group {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
gap: 8px;
margin-bottom: 8px;
position: relative;
}
[data-sf-tpl="membership"] .sf-membership__radio {
position: absolute;
opacity: 0;
pointer-events: none;
width: 0;
height: 0;
}
[data-sf-tpl="membership"] .sf-membership__radio-label {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 18px 12px 14px;
border: 1px solid #2a2618;
background: transparent;
cursor: pointer;
transition: border-color 200ms ease, background 200ms ease;
text-align: center;
min-width: 0;
font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;
}
[data-sf-tpl="membership"] .sf-membership__radio-label:hover { border-color: #8a7c5b; }
[data-sf-tpl="membership"] .sf-membership__radio:checked + .sf-membership__radio-label {
border-color: #c9a96e;
background: rgba(201, 169, 110, 0.06);
}
[data-sf-tpl="membership"] .sf-membership__radio-text {
font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;
font-size: 10px;
letter-spacing: 0.18em;
text-transform: uppercase;
font-weight: 600;
color: #c9a96e;
}
</style>
<form
class="sf-membership--luxe"
data-sf-tpl="membership"
action="https://saveform.io/api/submit/YOUR_FORM_ID"
method="POST"
>
<span class="sf-membership__edge" aria-hidden="true"></span>
<p class="sf-membership__crest">Maison · MMXX</p>
<h2 class="sf-membership__title">Devenir <em>membre</em></h2>
<p class="sf-membership__lede">
Un cercle privé d'amateurs de vins, d'art et de bonne table.
Nombre de places limité, cooptation discrète.
</p>
<input type="text" name="_honey" class="sf-membership__honey" tabindex="-1" autocomplete="off" />
<div class="sf-membership__grid">
<div>
<label class="sf-membership__label" for="sf-membership-prenom">Prénom</label>
<input id="sf-membership-prenom" class="sf-membership__input" type="text" name="prenom" required />
</div>
<div>
<label class="sf-membership__label" for="sf-membership-nom">Nom</label>
<input id="sf-membership-nom" class="sf-membership__input" type="text" name="nom" required />
</div>
</div>
<div class="sf-membership__field">
<label class="sf-membership__label" for="sf-membership-email">Adresse électronique</label>
<input id="sf-membership-email" class="sf-membership__input" type="email" name="email" required />
</div>
<div class="sf-membership__field">
<div class="sf-membership__label">Formule</div>
<div class="sf-membership__tiers">
<input type="radio" id="sf-membership-t1" name="formule" value="decouverte" required />
<label for="sf-membership-t1">
<span class="sf-membership__tier-name">Découverte</span>
<span class="sf-membership__tier-price">€ 28</span>
<span class="sf-membership__tier-suffix">/ mois</span>
</label>
<input type="radio" id="sf-membership-t2" name="formule" value="privilege" checked />
<label for="sf-membership-t2">
<span class="sf-membership__tier-name">Privilège</span>
<span class="sf-membership__tier-price">€ 64</span>
<span class="sf-membership__tier-suffix">/ mois</span>
</label>
<input type="radio" id="sf-membership-t3" name="formule" value="prestige" />
<label for="sf-membership-t3">
<span class="sf-membership__tier-name">Prestige</span>
<span class="sf-membership__tier-price">€ 140</span>
<span class="sf-membership__tier-suffix">/ mois</span>
</label>
</div>
</div>
<button class="sf-membership__button" type="submit">Demander mon adhésion</button>
<p class="sf-membership__fine">Réponse personnelle sous 72 heures</p>
</form>
Replace YOUR_FORM_ID with the id of a form in your SaveForm dashboard. Every class is namespaced under [data-sf-tpl="membership"] so the template cannot collide with (or be overridden by) your site styles.