Layout and spacing patterns for arranging multiple fields. These classes do not style labels or controllers and must be combined with Form Field and Form Inputs.
Default stacked layout using .form-layout for vertical rhythm between fields.
For use on normal page surfaces (content areas, cards, dialogs)
<form>
<div class="form-layout">
<div class="field">
<label class="field__label field__label--required">Full Name</label>
<div class="field__control">
<input type="text" class="input" placeholder="Jane Doe" required>
</div>
</div>
<div class="field">
<label class="field__label field__label--required">Email Address</label>
<div class="field__control">
<input type="email" class="input" placeholder="you@example.com" required>
</div>
</div>
<div class="field">
<label class="field__label">Phone Number</label>
<div class="field__control">
<input type="tel" class="input" placeholder="+48 123 456 789">
</div>
<p class="field__hint">Optional but recommended</p>
</div>
</div>
<div class="form-actions mt-6">
<div class="form-actions__primary">
<button type="submit" class="btn btn--primary">Submit</button>
</div>
<div class="form-actions__secondary">
<button type="button" class="btn btn--secondary">Cancel</button>
</div>
</div>
</form>
For use on dark overlays and hero sections
<form>
<div class="form-layout">
<div class="field field--glass">
<label class="field__label field__label--required">Full Name</label>
<div class="field__control">
<input type="text" class="input input--glass" placeholder="Jane Doe" required>
</div>
</div>
<div class="field field--glass">
<label class="field__label field__label--required">Email Address</label>
<div class="field__control">
<input type="email" class="input input--glass" placeholder="you@example.com" required>
</div>
</div>
<div class="field field--glass">
<label class="field__label">Phone Number</label>
<div class="field__control">
<input type="tel" class="input input--glass" placeholder="+48 123 456 789">
</div>
<p class="field__hint">Optional but recommended</p>
</div>
</div>
<div class="form-actions mt-6">
<div class="form-actions__primary">
<button type="submit" class="btn btn--primary">Submit</button>
</div>
<div class="form-actions__secondary">
<button type="button" class="btn btn--secondary-glass">Cancel</button>
</div>
</div>
</form>
Responsive multi-column layout using .form-grid with
.form-grid__full for full-width fields.
For use on normal page surfaces (content areas, cards, dialogs)
<div class="form-grid">
<div class="field">
<label class="field__label field__label--required">First Name</label>
<div class="field__control">
<input type="text" class="input" placeholder="Jane" required>
</div>
</div>
<div class="field">
<label class="field__label field__label--required">Last Name</label>
<div class="field__control">
<input type="text" class="input" placeholder="Doe" required>
</div>
</div>
<div class="field form-grid__full">
<label class="field__label field__label--required">Email Address</label>
<div class="field__control">
<input type="email" class="input" placeholder="you@example.com" required>
</div>
</div>
</div>
For use on dark overlays and hero sections
<div class="form-grid">
<div class="field field--glass">
<label class="field__label field__label--required">First Name</label>
<div class="field__control">
<input type="text" class="input input--glass" placeholder="Jane" required>
</div>
</div>
<div class="field field--glass">
<label class="field__label field__label--required">Last Name</label>
<div class="field__control">
<input type="text" class="input input--glass" placeholder="Doe" required>
</div>
</div>
<div class="field field--glass form-grid__full">
<label class="field__label field__label--required">Email Address</label>
<div class="field__control">
<input type="email" class="input input--glass" placeholder="you@example.com" required>
</div>
</div>
</div>
Use .form-section to group related fields with a divider and title.
For use on normal page surfaces (content areas, cards, dialogs)
<div class="form-section">
<h3 class="t-h5 mb-4">Guest Details</h3>
<div class="form-layout">
<div class="field">
<label class="field__label field__label--required">Full Name</label>
<div class="field__control">
<input type="text" class="input" placeholder="Jane Doe" required>
</div>
</div>
</div>
</div>
For use on dark overlays and hero sections
<div class="form-section">
<h3 class="t-h5 mb-4">Guest Details</h3>
<div class="form-layout">
<div class="field field--glass">
<label class="field__label field__label--required">Full Name</label>
<div class="field__control">
<input type="text" class="input input--glass" placeholder="Jane Doe" required>
</div>
</div>
</div>
</div>
Use .form-row for simple horizontal grouping of two fields. It stacks on mobile.
For use on normal page surfaces (content areas, cards, dialogs)
<div class="form-layout">
<div class="form-row">
<div class="field">
<label class="field__label">City</label>
<div class="field__control">
<input type="text" class="input" placeholder="Warsaw">
</div>
</div>
<div class="field">
<label class="field__label">Postal Code</label>
<div class="field__control">
<input type="text" class="input" placeholder="00-001">
</div>
</div>
</div>
</div>
For use on dark overlays and hero sections
<div class="form-layout">
<div class="form-row">
<div class="field field--glass">
<label class="field__label">City</label>
<div class="field__control">
<input type="text" class="input input--glass" placeholder="Warsaw">
</div>
</div>
<div class="field field--glass">
<label class="field__label">Postal Code</label>
<div class="field__control">
<input type="text" class="input input--glass" placeholder="00-001">
</div>
</div>
</div>
</div>
.form-layout as the default vertical container.form-grid for multi-column layouts.form-grid__full for full-width fields.form-section to group related fields.form-row for two-field horizontal groups.form-layout inside .form-grid.form-row for 3+ fieldsForm Layout patterns are defined in:
/assets/css/form-layout.css
Includes: vertical layout, multi-column grids, horizontal rows, section grouping, and responsive spacing rules. Layout only.