Home / Snippets / Footers / Agency contact 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-agency-contact-footer s-footer s-agency" data-snippet="agency-contact-footer"><div class="s-wrap"><div class="s-invite"><p class="s-kicker">Have something in mind?</p><h2>Let’s make it<br>worth your time.</h2><a class="s-email" href="mailto:hello@example.com">hello@example.com ↗</a></div><div class="s-columns"><div><h3>Explore</h3><a href="about.html">About</a><a href="work.html">Our work</a><a href="contact.html">Contact</a></div><div><h3>Useful details</h3><a href="services.html">Services</a><a href="faq.html">Questions</a><a href="visit.html">Visit us</a></div><div><h3>Find us</h3><a href="https://www.instagram.com/">Instagram</a><a href="https://www.linkedin.com/">LinkedIn</a></div></div><div class="s-bottom"><span>© 2026 North & Field · Example business</span><div class="s-links"><a href="privacy.html">Privacy</a><a href="terms.html">Terms</a></div></div></div></footer>
Copy CSS .fct-agency-contact-footer{--s-bg:#202620;--s-ink:#ffffff;--s-accent:#d8e7bb;font:16px/1.65 system-ui,sans-serif;color:var(--s-ink);background:var(--s-bg)}.fct-agency-contact-footer,.fct-agency-contact-footer *{box-sizing:border-box}.fct-agency-contact-footer :is(h2,h3,p,ul,figure){margin:0}.fct-agency-contact-footer h2,.fct-agency-contact-footer h3{line-height:1.2;letter-spacing:-.035em}.fct-agency-contact-footer h2{font-size:clamp(1.8rem,4vw,3.5rem)}.fct-agency-contact-footer a{color:inherit;text-underline-offset:5px;overflow-wrap:anywhere}.fct-agency-contact-footer :is(a,button,input,textarea,select,summary):focus-visible{outline:3px solid var(--s-accent);outline-offset:4px}.fct-agency-contact-footer button,.fct-agency-contact-footer input,.fct-agency-contact-footer textarea,.fct-agency-contact-footer select{font:inherit}.fct-agency-contact-footer a,.fct-agency-contact-footer button{touch-action:manipulation}.fct-agency-contact-footer .s-wrap{max-width:1200px;margin-inline:auto;padding:40px 28px}.fct-agency-contact-footer .s-kicker{font-size:.8125rem;letter-spacing:.13em;text-transform:uppercase;margin-bottom:18px}.fct-agency-contact-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-agency-contact-footer .s-muted{opacity:.82}.fct-agency-contact-footer .s-links{display:flex;gap:8px 26px;flex-wrap:wrap}.fct-agency-contact-footer .s-links a{display:inline-flex;align-items:center;min-height:44px}.fct-agency-contact-footer .s-rule{border-top:1px solid currentColor;padding-top:20px;margin-top:30px}.fct-agency-contact-footer .s-grid{display:grid;gap:28px;grid-template-columns:repeat(3,minmax(0,1fr))}.fct-agency-contact-footer img{max-width:100%;height:auto;display:block}.fct-agency-contact-footer .s-brand{font-size:1.3rem;font-weight:700;letter-spacing:-.05em;text-decoration:none}@media(max-width:640px){.fct-agency-contact-footer .s-wrap{padding:30px 20px}.fct-agency-contact-footer .s-grid{grid-template-columns:1fr}}
.fct-agency-contact-footer form{min-width:0}.fct-agency-contact-footer fieldset{border:0;margin:0;padding:0;min-width:0;display:grid;gap:10px}.fct-agency-contact-footer label{font-size:.9375rem;font-weight:600}.fct-agency-contact-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-agency-contact-footer textarea{resize:vertical}.fct-agency-contact-footer form .s-button{justify-self:start;margin-top:10px}.fct-agency-contact-footer .s-demo-note{font-size:.875rem;margin-top:18px}.fct-agency-contact-footer .s-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.fct-agency-contact-footer .s-inline,.fct-agency-contact-footer .s-bottom{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}.fct-agency-contact-footer .s-inline{padding-block:10px}.fct-agency-contact-footer .s-bottom{border-top:1px solid currentColor;margin-top:44px;padding-top:20px;font-size:.875rem}.fct-agency-contact-footer .s-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:34px}.fct-agency-contact-footer .s-columns h3{font-size:1rem;margin-bottom:15px}.fct-agency-contact-footer .s-columns a{display:block;min-height:44px;padding-block:8px}.fct-agency-contact-footer .s-columns p{margin:14px 0;line-height:1.8}.fct-agency-contact-footer .s-invite{padding:20px 0 65px}.fct-agency-contact-footer .s-email{font-size:clamp(1.5rem,4vw,3rem);display:inline-block;margin-top:28px}.fct-agency-contact-footer dl{margin:0}.fct-agency-contact-footer dd{margin:0 0 18px}.fct-agency-contact-footer .s-publication{display:grid;grid-template-columns:1fr 1.2fr;gap:60px}.fct-agency-contact-footer .s-publication h2{font-family:Georgia,serif;font-weight:400;margin-bottom:20px}.fct-agency-contact-footer .s-publication form{max-width:420px;margin-top:25px}@media(max-width:760px){.fct-agency-contact-footer .s-publication{grid-template-columns:1fr;gap:40px}}Copy JavaScript (()=>{for(const root of document.querySelectorAll('[data-snippet="agency-contact-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-agency-contact-footer s-footer s-agency\" data-snippet=\"agency-contact-footer\"\u003e\u003cdiv class=\"s-wrap\"\u003e\u003cdiv class=\"s-invite\"\u003e\u003cp class=\"s-kicker\"\u003eHave something in mind?\u003c/p\u003e\u003ch2\u003eLet’s make it\u003cbr\u003eworth your time.\u003c/h2\u003e\u003ca class=\"s-email\" href=\"mailto:hello@example.com\"\u003ehello@example.com ↗\u003c/a\u003e\u003c/div\u003e\u003cdiv class=\"s-columns\"\u003e\u003cdiv\u003e\u003ch3\u003eExplore\u003c/h3\u003e\u003ca href=\"about.html\"\u003eAbout\u003c/a\u003e\u003ca href=\"work.html\"\u003eOur work\u003c/a\u003e\u003ca href=\"contact.html\"\u003eContact\u003c/a\u003e\u003c/div\u003e\u003cdiv\u003e\u003ch3\u003eUseful details\u003c/h3\u003e\u003ca href=\"services.html\"\u003eServices\u003c/a\u003e\u003ca href=\"faq.html\"\u003eQuestions\u003c/a\u003e\u003ca href=\"visit.html\"\u003eVisit us\u003c/a\u003e\u003c/div\u003e\u003cdiv\u003e\u003ch3\u003eFind us\u003c/h3\u003e\u003ca href=\"https://www.instagram.com/\"\u003eInstagram\u003c/a\u003e\u003ca href=\"https://www.linkedin.com/\"\u003eLinkedIn\u003c/a\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class=\"s-bottom\"\u003e\u003cspan\u003e© 2026 North \u0026 Field · Example business\u003c/span\u003e\u003cdiv class=\"s-links\"\u003e\u003ca href=\"privacy.html\"\u003ePrivacy\u003c/a\u003e\u003ca href=\"terms.html\"\u003eTerms\u003c/a\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/footer\u003e";
---
<Fragment set:html={markup} />
<style is:global>
.fct-agency-contact-footer{--s-bg:#202620;--s-ink:#ffffff;--s-accent:#d8e7bb;font:16px/1.65 system-ui,sans-serif;color:var(--s-ink);background:var(--s-bg)}.fct-agency-contact-footer,.fct-agency-contact-footer *{box-sizing:border-box}.fct-agency-contact-footer :is(h2,h3,p,ul,figure){margin:0}.fct-agency-contact-footer h2,.fct-agency-contact-footer h3{line-height:1.2;letter-spacing:-.035em}.fct-agency-contact-footer h2{font-size:clamp(1.8rem,4vw,3.5rem)}.fct-agency-contact-footer a{color:inherit;text-underline-offset:5px;overflow-wrap:anywhere}.fct-agency-contact-footer :is(a,button,input,textarea,select,summary):focus-visible{outline:3px solid var(--s-accent);outline-offset:4px}.fct-agency-contact-footer button,.fct-agency-contact-footer input,.fct-agency-contact-footer textarea,.fct-agency-contact-footer select{font:inherit}.fct-agency-contact-footer a,.fct-agency-contact-footer button{touch-action:manipulation}.fct-agency-contact-footer .s-wrap{max-width:1200px;margin-inline:auto;padding:40px 28px}.fct-agency-contact-footer .s-kicker{font-size:.8125rem;letter-spacing:.13em;text-transform:uppercase;margin-bottom:18px}.fct-agency-contact-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-agency-contact-footer .s-muted{opacity:.82}.fct-agency-contact-footer .s-links{display:flex;gap:8px 26px;flex-wrap:wrap}.fct-agency-contact-footer .s-links a{display:inline-flex;align-items:center;min-height:44px}.fct-agency-contact-footer .s-rule{border-top:1px solid currentColor;padding-top:20px;margin-top:30px}.fct-agency-contact-footer .s-grid{display:grid;gap:28px;grid-template-columns:repeat(3,minmax(0,1fr))}.fct-agency-contact-footer img{max-width:100%;height:auto;display:block}.fct-agency-contact-footer .s-brand{font-size:1.3rem;font-weight:700;letter-spacing:-.05em;text-decoration:none}@media(max-width:640px){.fct-agency-contact-footer .s-wrap{padding:30px 20px}.fct-agency-contact-footer .s-grid{grid-template-columns:1fr}}
.fct-agency-contact-footer form{min-width:0}.fct-agency-contact-footer fieldset{border:0;margin:0;padding:0;min-width:0;display:grid;gap:10px}.fct-agency-contact-footer label{font-size:.9375rem;font-weight:600}.fct-agency-contact-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-agency-contact-footer textarea{resize:vertical}.fct-agency-contact-footer form .s-button{justify-self:start;margin-top:10px}.fct-agency-contact-footer .s-demo-note{font-size:.875rem;margin-top:18px}.fct-agency-contact-footer .s-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.fct-agency-contact-footer .s-inline,.fct-agency-contact-footer .s-bottom{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}.fct-agency-contact-footer .s-inline{padding-block:10px}.fct-agency-contact-footer .s-bottom{border-top:1px solid currentColor;margin-top:44px;padding-top:20px;font-size:.875rem}.fct-agency-contact-footer .s-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:34px}.fct-agency-contact-footer .s-columns h3{font-size:1rem;margin-bottom:15px}.fct-agency-contact-footer .s-columns a{display:block;min-height:44px;padding-block:8px}.fct-agency-contact-footer .s-columns p{margin:14px 0;line-height:1.8}.fct-agency-contact-footer .s-invite{padding:20px 0 65px}.fct-agency-contact-footer .s-email{font-size:clamp(1.5rem,4vw,3rem);display:inline-block;margin-top:28px}.fct-agency-contact-footer dl{margin:0}.fct-agency-contact-footer dd{margin:0 0 18px}.fct-agency-contact-footer .s-publication{display:grid;grid-template-columns:1fr 1.2fr;gap:60px}.fct-agency-contact-footer .s-publication h2{font-family:Georgia,serif;font-weight:400;margin-bottom:20px}.fct-agency-contact-footer .s-publication form{max-width:420px;margin-top:25px}@media(max-width:760px){.fct-agency-contact-footer .s-publication{grid-template-columns:1fr;gap:40px}}
</style>
<script is:inline>
(()=>{for(const root of document.querySelectorAll('[data-snippet="agency-contact-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 A direct email link is the main action. Secondary navigation and social destinations sit below the invitation rather than competing with it.
Large email action Studio link groups Editorial type hierarchy 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 .