New home

#min-full{ –navy:#142544;–navy2:#1c3458;–white:#fff; –muted:#b9c8df;–line:rgba(255,255,255,.16); –pale:#eaf0f9;–ink:#142544; background:var(–navy);color:var(–white); font-family:inherit;overflow:hidden;position:relative; } #min-full *{box-sizing:border-box} #min-full a{color:inherit;text-decoration:none} #min-full button,#min-full input,#min-full select,#min-full textarea{font:inherit} #min-full button{cursor:pointer} #min-full .mf-wrap{max-width:1190px;margin:auto;padding-left:23px;padding-right:23px} #min-full .mf-section{padding-top:76px;padding-bottom:76px} #min-full .mf-light{background:var(–pale);color:var(–ink)} #min-full .mf-nav{position:relative;z-index:5;border-bottom:1px solid var(–line)} #min-full .mf-navrow{min-height:76px;display:flex;justify-content:space-between;align-items:center;gap:22px} #min-full .mf-brand{font-weight:950;font-size:14px;letter-spacing:2px} #min-full .mf-brand small{display:block;color:var(–muted);font-size:9px;letter-spacing:2.5px;margin-top:6px} #min-full .mf-navlinks{display:flex;align-items:center;gap:23px} #min-full .mf-navlinks a{font-size:11px;color:#dce5f3;transition:opacity .2s} #min-full .mf-navlinks a:hover{opacity:.65} #min-full .mf-btn{display:inline-flex;justify-content:center;align-items:center;gap:12px;background:white;color:var(–navy)!important;border:1px solid white;border-radius:6px;padding:14px 19px;font-size:11px;font-weight:900;transition:transform .25s,box-shadow .25s,background .25s} #min-full .mf-btn:hover{transform:translateY(-3px);box-shadow:0 10px 28px #0002} #min-full .mf-btn-outline{background:transparent;color:white!important;border-color:#ffffff55} #min-full .mf-btn-outline:hover{background:white;color:var(–navy)!important} #min-full .mf-kicker{font-size:10px;letter-spacing:2px;font-weight:850;text-transform:uppercase;color:var(–muted)} #min-full .mf-hero{padding-top:68px;padding-bottom:48px} #min-full .mf-herogrid{display:grid;grid-template-columns:1.05fr .95fr;gap:45px;align-items:center} #min-full .mf-hero h1{font-size:clamp(27px,4vw,43px);line-height:1.16;letter-spacing:-1.5px;font-weight:850;margin:17px 0} #min-full .mf-hero h1 span{color:#b9cbe7} #min-full .mf-hero p{max-width:530px;color:var(–muted);font-size:13px;line-height:1.95;margin:0 0 23px} #min-full .mf-actions{display:flex;gap:11px;flex-wrap:wrap} #min-full .mf-proof{display:flex;gap:20px;flex-wrap:wrap;margin-top:30px} #min-full .mf-proof span{font-size:10px;color:#d8e2f0} #min-full .mf-proof b{margin-right:6px} #min-full .mf-stage{border:1px solid #ffffff26;border-radius:13px;background:linear-gradient(145deg,#ffffff13,#ffffff03);padding:16px;position:relative;overflow:hidden} #min-full .mf-windowbar{display:flex;align-items:center;gap:5px;padding-bottom:14px;border-bottom:1px solid #ffffff20} #min-full .mf-windowbar i{height:6px;width:6px;border-radius:50%;background:#c6d2e4} #min-full .mf-windowbar span{margin-left:auto;font-size:9px;color:var(–muted)} #min-full .mf-mock{padding:21px 8px 10px;min-height:285px} #min-full .mf-mocktop{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:9px;font-weight:900;letter-spacing:1px} #min-full .mf-mockpill{border:1px solid #ffffff35;padding:8px 10px;border-radius:4px} #min-full .mf-mocktitle{font-size:clamp(27px,3.6vw,43px);line-height:1.03;letter-spacing:-1.6px;font-weight:900;margin:36px 0 12px} #min-full .mf-mocktitle span{display:block;color:#b9cbe7} #min-full .mf-mockdesc{font-size:10px;color:var(–muted);line-height:1.7;max-width:250px} #min-full .mf-mocktiles{display:grid;grid-template-columns:1.2fr .8fr;gap:9px;margin-top:23px} #min-full .mf-mocktile{min-height:65px;border:1px solid #ffffff22;border-radius:5px;padding:11px;background:#ffffff08} #min-full .mf-mocktile strong{display:block;font-size:11px;margin-bottom:5px} #min-full .mf-mocktile span{font-size:9px;color:var(–muted)} #min-full .mf-floating{position:absolute;right:12px;bottom:20px;background:white;color:var(–navy);padding:11px 13px;border-radius:6px;box-shadow:0 10px 30px #0003;font-size:10px;font-weight:900;animation:mf-float 4s ease-in-out infinite} #min-full .mf-strip{border-top:1px solid var(–line);border-bottom:1px solid var(–line);overflow:hidden;padding:15px 0} #min-full .mf-striptrack{display:flex;width:max-content;animation:mf-scroll 30s linear infinite} #min-full .mf-strip:hover .mf-striptrack{animation-play-state:paused} #min-full .mf-strip span{padding:0 26px;font-size:10px;font-weight:850;letter-spacing:1.5px;white-space:nowrap} #min-full .mf-strip b{margin-left:26px;color:#a8bddb} #min-full .mf-headrow{display:flex;justify-content:space-between;align-items:end;gap:22px;margin-bottom:27px} #min-full .mf-headrow h2{font-size:clamp(24px,3.3vw,36px);line-height:1.15;letter-spacing:-1px;margin:10px 0 0} #min-full .mf-headrow p{font-size:11px;line-height:1.8;color:var(–muted);max-width:330px;margin:0} #min-full .mf-light .mf-headrow p{color:#586a84} #min-full .mf-services{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px} #min-full .mf-service{width:100%;text-align:left;color:white;border:1px solid #ffffff22;border-radius:10px;background:#ffffff06;padding:21px 17px;transition:transform .3s,border-color .3s,background .3s;position:relative;overflow:hidden} #min-full .mf-service:hover,#min-full .mf-service[aria-pressed=true]{transform:translateY(-5px);border-color:white;background:#ffffff12} #min-full .mf-service:after{content:””;position:absolute;bottom:0;left:0;width:100%;height:2px;background:white;transform:scaleX(0);transform-origin:left;transition:transform .3s} #min-full .mf-service[aria-pressed=true]:after{transform:scaleX(1)} #min-full .mf-symbol{display:grid;place-items:center;width:39px;height:39px;border:1px solid #ffffff38;border-radius:8px;font-size:18px;margin-bottom:23px;transition:transform .3s} #min-full .mf-service:hover .mf-symbol{transform:rotate(-8deg) scale(1.1)} #min-full .mf-service h3{font-size:14px;margin:0 0 9px} #min-full .mf-service p{font-size:11px;line-height:1.8;color:var(–muted);margin:0 0 17px} #min-full .mf-arrow{font-size:10px;font-weight:900;letter-spacing:.5px} #min-full .mf-service-detail{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;border:1px solid #ffffff28;border-radius:10px;padding:21px;margin-top:14px;background:#ffffff08;animation:mf-rise .3s ease} #min-full .mf-service-detail h3{font-size:17px;margin:0 0 8px} #min-full .mf-service-detail p{font-size:12px;line-height:1.85;color:var(–muted);max-width:670px;margin:0} #min-full .mf-pricing{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px} #min-full .mf-package{display:flex;flex-direction:column;min-width:0;padding:22px 17px 17px;border:1px solid #ffffff26;border-radius:10px;background:#ffffff05;transition:transform .3s,border-color .3s,box-shadow .3s} #min-full .mf-package:hover{transform:translateY(-6px);border-color:white;box-shadow:0 15px 30px #0002} #min-full .mf-package.featured{background:white;color:var(–navy);border-color:white} #min-full .mf-badge{font-size:9px;font-weight:900;letter-spacing:1px;align-self:flex-start;border:1px solid #ffffff35;padding:6px 8px;border-radius:3px;margin-bottom:18px} #min-full .featured .mf-badge{background:var(–navy);color:white} #min-full .mf-package h3{font-size:16px;line-height:1.4;margin:0 0 9px} #min-full .mf-description{font-size:11px;color:var(–muted);line-height:1.8;margin:0 0 19px;min-height:59px} #min-full .featured .mf-description,#min-full .featured .mf-period{color:#5c6d85} #min-full .mf-price{font-size:39px;font-weight:900;letter-spacing:-1.4px} #min-full .mf-period{font-size:10px;color:var(–muted);margin:6px 0 19px} #min-full .mf-features{border-top:1px solid #ffffff25;list-style:none;padding:17px 0 14px;margin:0 0 10px;flex:1} #min-full .featured .mf-features{border-color:#dbe1ea} #min-full .mf-features li{display:flex;gap:8px;font-size:11px;line-height:1.7;color:#dfe7f3;margin-bottom:10px} #min-full .featured .mf-features li{color:#344866} #min-full .mf-features li:before{content:”✓”;font-weight:900} #min-full .mf-pbtn{display:flex;align-items:center;justify-content:space-between;gap:7px;padding:12px 10px;border:1px solid #ffffff50;border-radius:5px;font-size:9px;font-weight:900;transition:.25s} #min-full .mf-pbtn:hover{background:white;color:var(–navy)} #min-full .featured .mf-pbtn{background:var(–navy);color:white;border-color:var(–navy)} #min-full .featured .mf-pbtn:hover{background:#2a4369} #min-full .mf-planner{display:grid;grid-template-columns:.75fr 1.25fr;gap:32px} #min-full .mf-planner-intro h2{font-size:clamp(25px,3.4vw,37px);line-height:1.15;letter-spacing:-1px;margin:12px 0} #min-full .mf-planner-intro p{font-size:12px;line-height:1.9;color:var(–muted)} #min-full .mf-plannerbox{border:1px solid #ffffff27;border-radius:11px;padding:23px;background:#ffffff07} #min-full .mf-step{display:none;animation:mf-rise .3s ease} #min-full .mf-step.active{display:block} #min-full .mf-step h3{font-size:17px;margin:0 0 7px} #min-full .mf-step>p{font-size:11px;color:var(–muted);line-height:1.8;margin:0 0 20px} #min-full .mf-options{display:grid;grid-template-columns:1fr 1fr;gap:9px} #min-full .mf-option{color:white;background:#ffffff06;border:1px solid #ffffff30;border-radius:7px;padding:14px;text-align:left;min-height:73px;transition:.2s} #min-full .mf-option:hover,#min-full .mf-option[aria-pressed=true]{border-color:white;background:#ffffff16} #min-full .mf-option strong{display:block;font-size:11px;margin-bottom:6px} #min-full .mf-option span{display:block;font-size:10px;color:var(–muted);line-height:1.6} #min-full .mf-progress{height:3px;background:#ffffff22;border-radius:4px;margin-bottom:20px;overflow:hidden} #min-full .mf-progress span{display:block;width:33.33%;height:100%;background:white;transition:width .3s} #min-full .mf-plancontrols{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:20px} #min-full .mf-smallbtn{padding:11px 14px;background:transparent;color:white;border:1px solid #ffffff40;border-radius:5px;font-size:10px;font-weight:900} #min-full .mf-smallbtn:disabled{opacity:.3;cursor:not-allowed} #min-full .mf-planresult{border:1px solid #ffffff25;border-radius:8px;padding:16px;margin-top:18px;background:#ffffff08} #min-full .mf-planresult strong{font-size:12px} #min-full .mf-planresult p{font-size:11px;color:var(–muted);line-height:1.8} #min-full .mf-planresult a{display:inline-flex;margin-top:8px} #min-full .mf-workgrid{display:grid;grid-template-columns:1.15fr .85fr;gap:14px} #min-full .mf-workcard{min-height:205px;border-radius:10px;padding:22px;position:relative;overflow:hidden;border:1px solid #ffffff23;background:linear-gradient(135deg,#20385d,#142544);transition:transform .3s} #min-full .mf-workcard:hover{transform:translateY(-4px)} #min-full .mf-workcard h3{font-size:20px;line-height:1.25;max-width:290px;margin:16px 0 9px} #min-full .mf-workcard p{font-size:11px;line-height:1.8;color:var(–muted);max-width:300px} #min-full .mf-worklabel{font-size:9px;font-weight:900;letter-spacing:1.5px} #min-full .mf-workart{position:absolute;right:-18px;bottom:-26px;width:190px;height:150px;border:1px solid #ffffff2b;border-radius:8px;transform:rotate(-9deg);background:#ffffff0a;padding:14px;transition:transform .4s} #min-full .mf-workcard:hover .mf-workart{transform:rotate(0) translateY(-7px)} #min-full .mf-workart i{display:block;height:6px;background:#ffffff75;margin-bottom:8px;width:80%;border-radius:3px} #min-full .mf-workart i:nth-child(2){width:55%} #min-full .mf-workart i:nth-child(3){height:42px;width:100%;border:1px solid #ffffff40;background:#ffffff10} #min-full .mf-worksmall{display:grid;gap:14px} #min-full .mf-worksmall .mf-workcard{min-height:95px;padding:17px} #min-full .mf-worksmall h3{font-size:15px;margin:12px 0 5px} #min-full .mf-worksmall .mf-workart{width:105px;height:75px;right:-12px;bottom:-17px} #min-full .mf-worksmall .mf-workart i:nth-child(3){height:18px} #min-full .mf-faq{border-top:1px solid #ffffff25} #min-full .mf-faq details{border-bottom:1px solid #ffffff25;padding:17px 0} #min-full .mf-faq summary{list-style:none;cursor:pointer;font-size:13px;font-weight:750;display:flex;justify-content:space-between;gap:15px} #min-full .mf-faq summary::-webkit-details-marker{display:none} #min-full .mf-faq summary:after{content:”+”;font-size:18px;font-weight:400;transition:transform .25s} #min-full .mf-faq details[open] summary:after{transform:rotate(45deg)} #min-full .mf-faq details p{font-size:12px;line-height:1.9;color:var(–muted);max-width:750px;margin:13px 0 0} #min-full .mf-contactgrid{display:grid;grid-template-columns:.85fr 1.15fr;gap:36px} #min-full .mf-contactintro h2{font-size:clamp(28px,4vw,43px);line-height:1.1;letter-spacing:-1.3px;margin:13px 0} #min-full .mf-contactintro p{font-size:12px;color:var(–muted);line-height:1.9} #min-full .mf-contactlist{display:grid;gap:12px;margin-top:22px} #min-full .mf-contactlist a{display:block;border:1px solid #ffffff30;border-radius:7px;padding:13px;transition:background .2s} #min-full .mf-contactlist a:hover{background:#ffffff12} #min-full .mf-contactlist small{display:block;color:var(–muted);font-size:9px;letter-spacing:1px;margin-bottom:5px} #min-full .mf-contactlist strong{font-size:12px;overflow-wrap:anywhere} #min-full .mf-form{border:1px solid #ffffff29;border-radius:10px;padding:23px;background:#ffffff06} #min-full .mf-form h3{font-size:18px;margin:0 0 19px} #min-full .mf-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px} #min-full .mf-field{margin-bottom:13px;min-width:0} #min-full .mf-field label{display:block;font-size:9px;font-weight:800;letter-spacing:.8px;color:var(–muted);margin-bottom:7px} #min-full .mf-field input,#min-full .mf-field select,#min-full .mf-field textarea{width:100%;min-width:0;color:white;background:#142544;border:1px solid #ffffff30;border-radius:5px;padding:12px;font-size:11px;outline:none} #min-full .mf-field input:focus,#min-full .mf-field select:focus,#min-full .mf-field textarea:focus{border-color:white;box-shadow:0 0 0 3px #ffffff12} #min-full .mf-field select option{background:#142544} #min-full .mf-field textarea{min-height:90px;resize:vertical} #min-full .mf-form .mf-btn{width:100%;cursor:pointer} #min-full .mf-legal{font-size:9px;line-height:1.7;color:var(–muted);margin:12px 0 0} #min-full .mf-footer{border-top:1px solid #ffffff24;padding:26px 0 32px} #min-full .mf-footerrow{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap} #min-full .mf-footer p{font-size:10px;line-height:1.8;color:var(–muted);margin:0} #min-full .mf-footerlinks{display:flex;gap:17px;flex-wrap:wrap} #min-full .mf-footerlinks a{font-size:10px} #min-full .mf-float{position:fixed;z-index:9998;right:18px;bottom:18px;display:inline-flex;align-items:center;gap:9px;background:white;color:var(–navy)!important;border-radius:40px;padding:13px 17px;font-size:11px;font-weight:900;box-shadow:0 8px 25px #0003;transition:transform .25s} #min-full .mf-float:hover{transform:translateY(-4px)} #min-full .mf-reveal{opacity:0;transform:translateY(18px);transition:opacity .65s ease,transform .65s ease} #min-full .mf-reveal.in{opacity:1;transform:none} @keyframes mf-scroll{to{transform:translateX(-50%)}} @keyframes mf-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}} @keyframes mf-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}} @media(max-width:900px){ #min-full .mf-navlinks{gap:12px} #min-full .mf-herogrid{gap:25px} #min-full .mf-services,#min-full .mf-pricing{grid-template-columns:repeat(2,minmax(0,1fr))} #min-full .mf-planner,#min-full .mf-contactgrid{grid-template-columns:1fr} } @media(max-width:600px){ #min-full .mf-wrap{padding-left:15px;padding-right:15px} #min-full .mf-navrow{min-height:67px} #min-full .mf-navlinks{display:none} #min-full .mf-hero{padding-top:38px} #min-full .mf-herogrid{grid-template-columns:1fr} #min-full .mf-mock{min-height:250px} #min-full .mf-section{padding-top:53px;padding-bottom:53px} #min-full .mf-headrow{align-items:flex-start;flex-direction:column;gap:10px} #min-full .mf-services{gap:9px} #min-full .mf-service{padding:15px 12px} #min-full .mf-service h3{font-size:12px} #min-full .mf-service p{font-size:10px} #min-full .mf-service-detail{grid-template-columns:1fr} #min-full .mf-pricing{grid-template-columns:1fr} #min-full .mf-description{min-height:0} #min-full .mf-workgrid{grid-template-columns:1fr} #min-full .mf-worksmall{grid-template-columns:1fr 1fr} #min-full .mf-worksmall .mf-workcard{min-height:120px} #min-full .mf-fields{grid-template-columns:1fr} #min-full .mf-actions .mf-btn{width:100%} #min-full .mf-proof{gap:11px} } @media(prefers-reduced-motion:reduce){ #min-full *,#min-full *:before,#min-full *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important} #min-full .mf-reveal{opacity:1;transform:none} }
Independent creative studio · Newry

Creative websites. Clear pricing. Built around your business.

From a simple starter website to a more advanced business presence, explore web design, ecommerce, website improvements and branding in one place.

✓ Mobile-friendly design✓ WordPress solutions✓ Direct enquiries
MADE IN NEWRY / WEB PREVIEW
YOUR BUSINESS ONLINEEXPLORE ↗
Built to look
better online.
A professional digital presence, designed around what makes your business different.
Thoughtful designClear. Modern. Responsive.
Built for growthMade for your goals.
Your next project ↗
WEBSITE DESIGN ✳ECOMMERCE ✳WEBSITE FIXES ✳BUSINESS BRANDING ✳WORDPRESS ✳MADE IN NEWRY ✳ WEBSITE DESIGN ✳ECOMMERCE ✳WEBSITE FIXES ✳BUSINESS BRANDING ✳WORDPRESS ✳MADE IN NEWRY ✳
01 / What we do

Everything starts with an idea.

Choose a service to explore what your project could include. Each enquiry connects directly to WhatsApp.

Website design that makes a strong first impression.

Explore a website built around your business, your customers and the information people need to take the next step.

DISCUSS THIS SERVICE ↗
02 / Website packages

Pick your starting point.

Four clear starting prices, from a simple one-page website to a larger business site.

01 · STARTER

Basic

A simple, professional way to establish your online presence.

£100
Starting price · One-off
  • One-page website
  • Responsive layout
  • Brand colours and styling
  • Contact details
  • Basic on-page SEO setup
GET STARTED ↗
02 · ESTABLISH

Small Business

More space to introduce your business, services and team.

£250
Starting price · One-off
  • Up to 5 pages
  • Custom branded design
  • Mobile-responsive layout
  • Contact form and map
  • Social media integration
  • Basic on-page SEO setup
CHOOSE PACKAGE ↗
04 · ADVANCED

Enterprise

A broader digital presence for more ambitious projects.

£600
Starting price · One-off
  • Up to 12 pages
  • Premium tailored design
  • Advanced functionality
  • Lead generation features
  • Enhanced SEO configuration
  • Analytics integration
  • Priority communication
DISCUSS ENTERPRISE ↗

Prices are proposed starting prices. Final cost depends on requirements, content and functionality. Hosting, domain registration, paid plugins and ongoing maintenance should be agreed separately.

03 / Interactive project planner

Let’s work out what you need.

Answer three quick questions. We’ll create a project summary you can send to Made in Newry through WhatsApp.

ASK US DIRECTLY ↗

What are you looking to build?

Choose the option that best matches your project.

What budget works for you?

This helps us start the conversation at the right level.

What matters most?

Choose your main goal and create your project summary.

STEP 1 OF 3
04 / Our approach

Thoughtful design. Practical solutions.

A good website should look professional, make information easy to find and help customers take action.

01 / DESIGN & EXPERIENCE

Make a better first impression.

Clear layouts, consistent branding, mobile-friendly pages and simple ways for customers to get in touch.

02 / FUNCTIONALITY

Make it work for your business.

03 / COLLABORATION

A clear route from brief to launch.

05 / Frequently asked questions

Good to know.

Need an answer specific to your business? Send us a message.

Which website package is right for me?

Basic is intended for a simple one-page presence. Small Business allows for more pages, Progressive Business adds further features, and Enterprise is designed for broader requirements. Use the project planner or contact us to discuss your needs.

Are the package prices fixed?

The displayed prices are starting prices. The final quote depends on the agreed scope, content, design, integrations and functionality. Confirm any additional costs before work begins.

Can you help with an existing website?

Choose Website Fixes or Website Improvements in the project planner and describe what you need. We can discuss the requirements and the appropriate next step.

Can my website work on mobile?

The package descriptions include responsive design. The finished site should be checked on common screen sizes and devices before launch.

Are hosting and domain costs included?

Hosting, domain registration, premium plugins and ongoing maintenance are not automatically included in the example prices. Agree these items separately when confirming your quote.

How do I get started?

Choose a package, complete the project planner or message Made in Newry on WhatsApp. Share your goals and requirements so the project can be scoped properly.

06 / Contact Made in Newry

Tell us what you’re working on.

Ready to get started? Contact us directly or use the enquiry form to prepare a message for WhatsApp.

Start your enquiry

YOUR NAME *
BUSINESS NAME
YOUR EMAIL
SERVICE *Choose a serviceWebsite designEcommerceWebsite fixesBusiness brandingSEO or other support
BUDGETNot sure yet£100–£250£250–£400£400–£600£600+
PROJECT DETAILS *
WHATSAPP ↗ (function(){ const root=document.getElementById(‘min-full’); if(!root||root.dataset.started)return; root.dataset.started=’1′; const wa=’https://wa.me/447526336735?text=’; const serviceInfo={ web:{title:’Website design that makes a strong first impression.’,desc:’Explore a website built around your business, your customers and the information people need to take the next step.’,message:’website design’}, shop:{title:’Bring your products online.’,desc:’Discuss your online store, products, customer journey and the features your business needs to sell online.’,message:’ecommerce solutions’}, fix:{title:’Make your existing website work better.’,desc:’Tell us about repairs, updates, layout issues or new features you would like to discuss.’,message:’website fixes and improvements’}, brand:{title:’Build a consistent business identity.’,desc:’Discuss branding, logos and visual assets that can help your business present itself consistently.’,message:’business branding’} }; const serviceButtons=[…root.querySelectorAll(‘.mf-service’)]; serviceButtons.forEach(btn=>btn.addEventListener(‘click’,()=>{ serviceButtons.forEach(b=>b.setAttribute(‘aria-pressed’,String(b===btn))); const item=serviceInfo[btn.dataset.service]; root.querySelector(‘#mf-service-title’).textContent=item.title; root.querySelector(‘#mf-service-desc’).textContent=item.desc; root.querySelector(‘#mf-service-cta’).href=wa+encodeURIComponent(‘Hi Made in Newry, I would like to discuss ‘+item.message+’.’); })); // Reveal sections on scroll. const reveals=root.querySelectorAll(‘.mf-reveal’); if(‘IntersectionObserver’in window){ const observer=new IntersectionObserver(entries=>{ entries.forEach(entry=>{ if(entry.isIntersecting){entry.target.classList.add(‘in’);observer.unobserve(entry.target)} }); },{threshold:.10}); reveals.forEach(el=>observer.observe(el)); }else reveals.forEach(el=>el.classList.add(‘in’)); // Interactive project planner. const state={service:”,budget:”,goal:”}; let step=0; const steps=[…root.querySelectorAll(‘.mf-step’)]; const back=root.querySelector(‘#mf-back’); const next=root.querySelector(‘#mf-next’); const label=root.querySelector(‘#mf-step-label’); const progress=root.querySelector(‘#mf-progress-fill’); const result=root.querySelector(‘#mf-result’); function updatePlanner(){ steps.forEach((s,i)=>s.classList.toggle(‘active’,i===step)); back.disabled=step===0; next.textContent=step===2?’CREATE SUMMARY ↗’:’NEXT →’; label.textContent=’STEP ‘+(step+1)+’ OF 3′; progress.style.width=((step+1)/3*100)+’%’; next.disabled=!state[[‘service’,’budget’,’goal’][step]]; result.hidden=true; } root.querySelectorAll(‘.mf-option’).forEach(btn=>{ btn.addEventListener(‘click’,()=>{ const group=btn.dataset.group; state[group]=btn.dataset.value; root.querySelectorAll(‘.mf-option[data-group=”‘+group+'”]’).forEach(b=>b.setAttribute(‘aria-pressed’,String(b===btn))); updatePlanner(); }); }); back.addEventListener(‘click’,()=>{if(step>0){step–;updatePlanner()}}); next.addEventListener(‘click’,()=>{ if(!state[[‘service’,’budget’,’goal’][step]])return; if(step{ e.preventDefault(); const get=id=>root.querySelector(‘#’+id).value.trim(); const message=[ ‘Hi Made in Newry, I would like to discuss a project.’, ‘Name: ‘+get(‘mf-name’), get(‘mf-company’)?’Business: ‘+get(‘mf-company’):”, get(‘mf-email’)?’Email: ‘+get(‘mf-email’):”, ‘Service: ‘+get(‘mf-service’), ‘Budget: ‘+get(‘mf-budget’), ‘Project details: ‘+get(‘mf-message’) ].filter(Boolean).join(‘\n’); const url=wa+encodeURIComponent(message); const win=window.open(url,’_blank’); if(!win)window.location.href=url; }); root.querySelector(‘#mf-year’).textContent=new Date().getFullYear(); })();