Home / Snippets / Footers / Minimal inline footer
Try the design Preview widthFit panel Mobile · 390 px Tablet · 768 px Desktop · 1280 px Open demo ↗
Preview links stay in the example. Copy the source to use your own destinations. Form previews never send information.
Copy the source HTML CSS JavaScript Astro
Copy HTML <footer class="fct-minimal-inline-footer s-footer s-inline" data-snippet="minimal-inline-footer"><div class="s-wrap"><div class="s-inline"><a class="s-brand" href="index.html">North & Field.</a><div class="s-links"><a href="about.html">About</a><a href="contact.html">Contact</a><a href="privacy.html">Privacy</a></div><span>© 2026 North & Field</span></div></div></footer>
Copy CSS .fct-minimal-inline-footer{--s-bg:#f7f4eb;--s-ink:#252d26;--s-accent:#4b5d36;font:16px/1.65 system-ui,sans-serif;color:var(--s-ink);background:var(--s-bg)}.fct-minimal-inline-footer,.fct-minimal-inline-footer *{box-sizing:border-box}.fct-minimal-inline-footer :is(h2,h3,p,ul,figure){margin:0}.fct-minimal-inline-footer h2,.fct-minimal-inline-footer h3{line-height:1.2;letter-spacing:-.035em}.fct-minimal-inline-footer h2{font-size:clamp(1.8rem,4vw,3.5rem)}.fct-minimal-inline-footer a{color:inherit;text-underline-offset:5px;overflow-wrap:anywhere}.fct-minimal-inline-footer :is(a,button,input,textarea,select,summary):focus-visible{outline:3px solid var(--s-accent);outline-offset:4px}.fct-minimal-inline-footer button,.fct-minimal-inline-footer input,.fct-minimal-inline-footer textarea,.fct-minimal-inline-footer select{font:inherit}.fct-minimal-inline-footer a,.fct-minimal-inline-footer button{touch-action:manipulation}.fct-minimal-inline-footer .s-wrap{max-width:1200px;margin-inline:auto;padding:40px 28px}.fct-minimal-inline-footer .s-kicker{font-size:.8125rem;letter-spacing:.13em;text-transform:uppercase;margin-bottom:18px}.fct-minimal-inline-footer .s-button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:11px 21px;border:1px solid currentColor;text-decoration:none;background:transparent;color:inherit;cursor:pointer;border-radius:2px;font-weight:600}.fct-minimal-inline-footer .s-muted{opacity:.82}.fct-minimal-inline-footer .s-links{display:flex;gap:8px 26px;flex-wrap:wrap}.fct-minimal-inline-footer .s-links a{display:inline-flex;align-items:center;min-height:44px}.fct-minimal-inline-footer .s-rule{border-top:1px solid currentColor;padding-top:20px;margin-top:30px}.fct-minimal-inline-footer .s-grid{display:grid;gap:28px;grid-template-columns:repeat(3,minmax(0,1fr))}.fct-minimal-inline-footer img{max-width:100%;height:auto;display:block}.fct-minimal-inline-footer .s-brand{font-size:1.3rem;font-weight:700;letter-spacing:-.05em;text-decoration:none}@media(max-width:640px){.fct-minimal-inline-footer .s-wrap{padding:30px 20px}.fct-minimal-inline-footer .s-grid{grid-template-columns:1fr}}
.fct-minimal-inline-footer form{min-width:0}.fct-minimal-inline-footer fieldset{border:0;margin:0;padding:0;min-width:0;display:grid;gap:10px}.fct-minimal-inline-footer label{font-size:.9375rem;font-weight:600}.fct-minimal-inline-footer :is(input,textarea,select){width:100%;min-height:46px;border:1px solid currentColor;border-radius:2px;background:var(--s-bg);color:var(--s-ink);padding:11px 12px}.fct-minimal-inline-footer textarea{resize:vertical}.fct-minimal-inline-footer form .s-button{justify-self:start;margin-top:10px}.fct-minimal-inline-footer .s-demo-note{font-size:.875rem;margin-top:18px}.fct-minimal-inline-footer .s-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.fct-minimal-inline-footer .s-inline,.fct-minimal-inline-footer .s-bottom{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}.fct-minimal-inline-footer .s-inline{padding-block:10px}.fct-minimal-inline-footer .s-bottom{border-top:1px solid currentColor;margin-top:44px;padding-top:20px;font-size:.875rem}.fct-minimal-inline-footer .s-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:34px}.fct-minimal-inline-footer .s-columns h3{font-size:1rem;margin-bottom:15px}.fct-minimal-inline-footer .s-columns a{display:block;min-height:44px;padding-block:8px}.fct-minimal-inline-footer .s-columns p{margin:14px 0;line-height:1.8}.fct-minimal-inline-footer .s-invite{padding:20px 0 65px}.fct-minimal-inline-footer .s-email{font-size:clamp(1.5rem,4vw,3rem);display:inline-block;margin-top:28px}.fct-minimal-inline-footer dl{margin:0}.fct-minimal-inline-footer dd{margin:0 0 18px}.fct-minimal-inline-footer .s-publication{display:grid;grid-template-columns:1fr 1.2fr;gap:60px}.fct-minimal-inline-footer .s-publication h2{font-family:Georgia,serif;font-weight:400;margin-bottom:20px}.fct-minimal-inline-footer .s-publication form{max-width:420px;margin-top:25px}@media(max-width:760px){.fct-minimal-inline-footer .s-publication{grid-template-columns:1fr;gap:40px}}Copy JavaScript (()=>{for(const root of document.querySelectorAll('[data-snippet="minimal-inline-footer"]')){if(root.dataset.initialized)continue;root.dataset.initialized='true';for(const form of root.querySelectorAll('[data-demo-form]')){form.querySelector('fieldset').disabled=false;form.addEventListener('submit',e=>{e.preventDefault();form.querySelector('[role=status]').textContent='Demo only: no information was sent. Connect and test your own backend for real delivery.';});}}})();
Copy Astro ---
// Generated, escaped static markup. Use a distinct prefix for each instance.
const markup = "\u003cfooter class=\"fct-minimal-inline-footer s-footer s-inline\" data-snippet=\"minimal-inline-footer\"\u003e\u003cdiv class=\"s-wrap\"\u003e\u003cdiv class=\"s-inline\"\u003e\u003ca class=\"s-brand\" href=\"index.html\"\u003eNorth \u0026 Field.\u003c/a\u003e\u003cdiv class=\"s-links\"\u003e\u003ca href=\"about.html\"\u003eAbout\u003c/a\u003e\u003ca href=\"contact.html\"\u003eContact\u003c/a\u003e\u003ca href=\"privacy.html\"\u003ePrivacy\u003c/a\u003e\u003c/div\u003e\u003cspan\u003e© 2026 North \u0026 Field\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/footer\u003e";
---
<Fragment set:html={markup} />
<style is:global>
.fct-minimal-inline-footer{--s-bg:#f7f4eb;--s-ink:#252d26;--s-accent:#4b5d36;font:16px/1.65 system-ui,sans-serif;color:var(--s-ink);background:var(--s-bg)}.fct-minimal-inline-footer,.fct-minimal-inline-footer *{box-sizing:border-box}.fct-minimal-inline-footer :is(h2,h3,p,ul,figure){margin:0}.fct-minimal-inline-footer h2,.fct-minimal-inline-footer h3{line-height:1.2;letter-spacing:-.035em}.fct-minimal-inline-footer h2{font-size:clamp(1.8rem,4vw,3.5rem)}.fct-minimal-inline-footer a{color:inherit;text-underline-offset:5px;overflow-wrap:anywhere}.fct-minimal-inline-footer :is(a,button,input,textarea,select,summary):focus-visible{outline:3px solid var(--s-accent);outline-offset:4px}.fct-minimal-inline-footer button,.fct-minimal-inline-footer input,.fct-minimal-inline-footer textarea,.fct-minimal-inline-footer select{font:inherit}.fct-minimal-inline-footer a,.fct-minimal-inline-footer button{touch-action:manipulation}.fct-minimal-inline-footer .s-wrap{max-width:1200px;margin-inline:auto;padding:40px 28px}.fct-minimal-inline-footer .s-kicker{font-size:.8125rem;letter-spacing:.13em;text-transform:uppercase;margin-bottom:18px}.fct-minimal-inline-footer .s-button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:11px 21px;border:1px solid currentColor;text-decoration:none;background:transparent;color:inherit;cursor:pointer;border-radius:2px;font-weight:600}.fct-minimal-inline-footer .s-muted{opacity:.82}.fct-minimal-inline-footer .s-links{display:flex;gap:8px 26px;flex-wrap:wrap}.fct-minimal-inline-footer .s-links a{display:inline-flex;align-items:center;min-height:44px}.fct-minimal-inline-footer .s-rule{border-top:1px solid currentColor;padding-top:20px;margin-top:30px}.fct-minimal-inline-footer .s-grid{display:grid;gap:28px;grid-template-columns:repeat(3,minmax(0,1fr))}.fct-minimal-inline-footer img{max-width:100%;height:auto;display:block}.fct-minimal-inline-footer .s-brand{font-size:1.3rem;font-weight:700;letter-spacing:-.05em;text-decoration:none}@media(max-width:640px){.fct-minimal-inline-footer .s-wrap{padding:30px 20px}.fct-minimal-inline-footer .s-grid{grid-template-columns:1fr}}
.fct-minimal-inline-footer form{min-width:0}.fct-minimal-inline-footer fieldset{border:0;margin:0;padding:0;min-width:0;display:grid;gap:10px}.fct-minimal-inline-footer label{font-size:.9375rem;font-weight:600}.fct-minimal-inline-footer :is(input,textarea,select){width:100%;min-height:46px;border:1px solid currentColor;border-radius:2px;background:var(--s-bg);color:var(--s-ink);padding:11px 12px}.fct-minimal-inline-footer textarea{resize:vertical}.fct-minimal-inline-footer form .s-button{justify-self:start;margin-top:10px}.fct-minimal-inline-footer .s-demo-note{font-size:.875rem;margin-top:18px}.fct-minimal-inline-footer .s-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.fct-minimal-inline-footer .s-inline,.fct-minimal-inline-footer .s-bottom{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}.fct-minimal-inline-footer .s-inline{padding-block:10px}.fct-minimal-inline-footer .s-bottom{border-top:1px solid currentColor;margin-top:44px;padding-top:20px;font-size:.875rem}.fct-minimal-inline-footer .s-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:34px}.fct-minimal-inline-footer .s-columns h3{font-size:1rem;margin-bottom:15px}.fct-minimal-inline-footer .s-columns a{display:block;min-height:44px;padding-block:8px}.fct-minimal-inline-footer .s-columns p{margin:14px 0;line-height:1.8}.fct-minimal-inline-footer .s-invite{padding:20px 0 65px}.fct-minimal-inline-footer .s-email{font-size:clamp(1.5rem,4vw,3rem);display:inline-block;margin-top:28px}.fct-minimal-inline-footer dl{margin:0}.fct-minimal-inline-footer dd{margin:0 0 18px}.fct-minimal-inline-footer .s-publication{display:grid;grid-template-columns:1fr 1.2fr;gap:60px}.fct-minimal-inline-footer .s-publication h2{font-family:Georgia,serif;font-weight:400;margin-bottom:20px}.fct-minimal-inline-footer .s-publication form{max-width:420px;margin-top:25px}@media(max-width:760px){.fct-minimal-inline-footer .s-publication{grid-template-columns:1fr;gap:40px}}
</style>
<script is:inline>
(()=>{for(const root of document.querySelectorAll('[data-snippet="minimal-inline-footer"]')){if(root.dataset.initialized)continue;root.dataset.initialized='true';for(const form of root.querySelectorAll('[data-demo-form]')){form.querySelector('fieldset').disabled=false;form.addEventListener('submit',e=>{e.preventDefault();form.querySelector('[role=status]').textContent='Demo only: no information was sent. Connect and test your own backend for real delivery.';});}}})();
</script>
Code tabs need JavaScript. All source formats are included in the open downloads.
Where this design fits The single-row structure keeps the footer proportionate to a short website. It wraps into a readable stack on small screens without hiding any links.
Single-row layout Essential policy links No JavaScript required What is included The HTML ZIP includes a standalone demo, reusable markup, scoped CSS, its small JavaScript runtime, a license and setup notes. The Astro ZIP includes Snippet.astro. It can be imported into an existing Astro page or layout.
Set the right destinations Example navigation, policy and contact links must point to your actual pages. Update visible business details and telephone/email links together. Remove sections that your website does not need.
Add it to an HTML website Copy snippet.html into the relevant page section. Load snippet.css after your existing site stylesheet. The class prefix identifies this design. Load snippet.js once with defer. Keep the included keyboard behavior when adapting interactions. Replace example content and check mobile widths, zoom, links and keyboard focus in your actual website. Use it in Astro Copy Snippet.astro into src/components/, import it into your page or shared layout, and insert the component where the section belongs. Keep each generated prefix unique if you duplicate a component on one page.
Keep the section maintainable Start with the variables at the top of the CSS for background, text and accent colors. Preserve semantic labels and focus styles. Existing site selectors can still affect imported markup, so test the combined result. Read the complete setup notes .