Brightlane Digital – Marketing that brings in customers
:root{
--ink:#0e1330; --paper:#eef1f8; --white:#fff; --cobalt:#3a4bff; --lime:#e2f95a; --muted:#59607f; --line:#d5daec;
--display:'Bricolage Grotesque','Trebuchet MS',sans-serif;
--body:'Instrument Sans','Segoe UI',Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--body);color:var(--ink);background:var(--paper);line-height:1.6;font-size:17px}
a{color:inherit}
h1,h2,h3{font-family:var(--display);line-height:1.08;letter-spacing:-.02em}
h2{font-size:clamp(2rem,4.5vw,3.2rem);max-width:18ch}
.wrap{max-width:1120px;margin:0 auto;padding:0 22px}
section{padding:88px 0}
:focus-visible{outline:3px solid var(--cobalt);outline-offset:3px}
.btn{display:inline-block;padding:14px 26px;border-radius:999px;background:var(--cobalt);color:#fff;font-weight:600;text-decoration:none;border:0;cursor:pointer;font:600 1rem var(--body);transition:transform .15s,background .15s}
.btn:hover{transform:translateY(-2px);background:#2433e6}
.btn.alt{background:transparent;color:var(--ink);border:2px solid var(--ink)}
.btn.alt:hover{background:var(--ink);color:#fff}
/* header */
header{position:sticky;top:0;z-index:20;background:rgba(238,241,248,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;justify-content:space-between;height:68px}
.logo{font:800 1.35rem var(--display);text-decoration:none;display:flex;align-items:center;gap:8px}
.logo i{width:22px;height:22px;border-radius:6px;background:var(--cobalt);display:inline-block;position:relative}
.logo i::after{content:"";position:absolute;left:5px;bottom:5px;width:12px;height:12px;border-left:3px solid var(--lime);border-bottom:3px solid var(--lime)}
nav ul{display:flex;gap:30px;list-style:none;align-items:center}
nav a{text-decoration:none;font-weight:500}
nav a:hover{color:var(--cobalt)}
.menu{display:none;background:none;border:2px solid var(--ink);border-radius:8px;padding:6px 12px;font:600 .95rem var(--body);cursor:pointer}
/* hero */
.hero{padding:70px 0 90px}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center}
.hero h1{font-size:clamp(2.6rem,6.2vw,4.7rem);font-weight:800}
.hero p.lead{margin:22px 0 30px;font-size:1.2rem;color:var(--muted);max-width:46ch}
.hero .ctas{display:flex;gap:14px;flex-wrap:wrap}
.est{background:var(--ink);color:#fff;border-radius:24px;padding:30px;box-shadow:0 30px 60px -30px rgba(14,19,48,.6)}
.est h3{font-size:1.3rem;margin-bottom:4px}
.est small{color:#aab1d6;display:block;margin-bottom:22px}
.est label{display:flex;justify-content:space-between;font-weight:500;margin:16px 0 8px}
.est output{color:var(--lime);font-weight:600}
input[type=range]{width:100%;accent-color:var(--lime);height:6px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chips button{background:transparent;color:#fff;border:1.5px solid #4a5280;border-radius:999px;padding:7px 14px;font:500 .9rem var(--body);cursor:pointer}
.chips button[aria-pressed=true]{background:var(--lime);color:var(--ink);border-color:var(--lime)}
.bars{margin-top:26px;display:grid;gap:12px}
.row{display:grid;grid-template-columns:96px 1fr 60px;align-items:center;gap:12px;font-size:.9rem}
.track{background:#1d2450;border-radius:8px;height:26px;overflow:hidden}
.fill{height:100%;border-radius:8px;transition:width .5s cubic-bezier(.2,.8,.2,1)}
.fill.a{background:#6a74b8}
.fill.b{background:var(--lime)}
.row b{text-align:right}
.est .note{margin:18px 0 0;font-size:.8rem;color:#8e96c2}
/* services */
.services .head{display:flex;justify-content:space-between;align-items:end;gap:30px;flex-wrap:wrap;margin-bottom:44px}
.services .head p{max-width:40ch;color:var(--muted)}
.svc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.svc{background:var(--white);border-radius:22px;padding:32px;border:1px solid var(--line)}
.svc:nth-child(1){background:var(--cobalt);color:#fff;border-color:var(--cobalt)}
.svc:nth-child(1) li::before{color:var(--lime)}
.svc h3{font-size:1.6rem;margin-bottom:10px}
.svc p{color:inherit;opacity:.85;margin-bottom:16px}
.svc ul{list-style:none;display:grid;gap:6px;font-size:.97rem}
.svc li::before{content:"+ ";font-weight:700;color:var(--cobalt)}
/* results */
.results{background:var(--ink);color:#fff}
.results h2{margin-bottom:44px}
.cases{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid #333b6b}
.case{padding:30px 28px 10px 0}
.case+.case{padding-left:28px;border-left:1px solid #333b6b}
.case .n{font:800 clamp(2.6rem,5vw,3.8rem) var(--display);color:var(--lime);letter-spacing:-.03em}
.case h3{font-size:1.15rem;margin:6px 0 8px}
.case p{color:#aab1d6;font-size:.95rem}
/* process */
.steps{margin-top:44px;display:grid;grid-template-columns:repeat(4,1fr);gap:20px;counter-reset:s}
.step{border-top:3px solid var(--ink);padding-top:16px;counter-increment:s}
.step::before{content:"Step " counter(s);font-weight:600;color:var(--cobalt);font-size:.9rem}
.step h3{font-size:1.3rem;margin:6px 0}
.step p{color:var(--muted);font-size:.97rem}
/* faq + contact */
.two{display:grid;grid-template-columns:1fr 1fr;gap:56px}
details{border-bottom:1px solid var(--line);padding:16px 0}
summary{cursor:pointer;font-weight:600;font-size:1.05rem;list-style:none;display:flex;justify-content:space-between}
summary::after{content:"+";font-size:1.4rem;line-height:1;transition:transform .2s}
details[open] summary::after{transform:rotate(45deg)}
details p{margin-top:10px;color:var(--muted)}
form{background:var(--white);border:1px solid var(--line);border-radius:22px;padding:30px;display:grid;gap:16px}
form label{font-weight:600;font-size:.95rem;display:grid;gap:6px}
input,select,textarea{font:400 1rem var(--body);padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--cobalt);outline:none}
.err{color:#c4123f;font-size:.85rem;font-weight:500;min-height:1em}
.ok{background:var(--lime);padding:14px 16px;border-radius:12px;font-weight:600;display:none}
footer{padding:34px 0;border-top:1px solid var(--line);color:var(--muted);font-size:.92rem}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px}
@media(max-width:900px){
.hero-grid,.two{grid-template-columns:1fr}
.svc-grid{grid-template-columns:1fr}
.cases{grid-template-columns:1fr}
.case+.case{padding-left:0;border-left:0;border-top:1px solid #333b6b}
.steps{grid-template-columns:1fr 1fr}
.menu{display:block}
nav ul{display:none;position:absolute;top:68px;left:0;right:0;background:var(--paper);flex-direction:column;padding:20px;gap:18px;border-bottom:1px solid var(--line)}
nav ul.open{display:flex}
section{padding:64px 0}
}
@media(max-width:520px){.steps{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
Marketing that fills your calendar with customers.
We run search, social, email and SEO campaigns for small and mid-sized businesses, and report on leads and sales, not clicks.
Estimate your monthly leads
Pick a channel and a budget.
Illustrative estimate based on average cost per lead. Real results depend on your market and offer.
Four channels, one team.
Pick one service or let us run them together so your ads, site and emails work as a single system.
Paid search and social
Ads that reach people already looking for what you sell.
- Google, Meta and LinkedIn campaigns
- Landing pages built to convert
- Weekly budget and bid tuning
SEO and content
Rank for the searches that bring buyers, not just visitors.
- Technical site fixes
- Keyword plan and articles
- Local listings and reviews
Email and automation
Follow up with every lead and bring past customers back.
- Welcome and nurture flows
- Abandoned cart and win-back emails
- Segmented newsletters
Brand and social media
A consistent look and voice across every place customers find you.
- Content calendars and posting
- Short video and design
- Community replies
What changed for our clients.
0
Online enquiries
A dental clinic group after rebuilding its search campaigns and booking page.
0
Lower cost per lead
A B2B software firm that moved budget from broad social to LinkedIn and search.
0
Return on ad spend
An online clothing store using email flows alongside paid social.
How we work with you.
Audit
We review your site, ads and analytics and list what to fix first.
Plan
You get a channel plan, budget split and clear targets.
Launch
We build and publish campaigns, usually within two weeks.
Improve
Monthly calls and a live dashboard show what is working.
// mobile menu
const menu=document.getElementById('menu'),links=document.getElementById('links');
menu.addEventListener('click',()=>{const o=links.classList.toggle('open');menu.setAttribute('aria-expanded',o)});
links.addEventListener('click',e=>{if(e.target.tagName==='A'){links.classList.remove('open');menu.setAttribute('aria-expanded',false)}});
// lead estimator
const spend=document.getElementById('spend'),out=document.getElementById('spendOut'),chips=document.getElementById('chips');
let cpl=18;
function update(){
const s=+spend.value;
out.textContent='$'+s.toLocaleString();
const typical=Math.round(s/cpl*0.7), ours=Math.round(s/cpl*1.0);
const max=Math.max(ours,1);
document.getElementById('valA').textContent=typical;
document.getElementById('valB').textContent=ours;
document.getElementById('barA').style.width=(typical/max*100)+'%';
document.getElementById('barB').style.width='100%';
}
spend.addEventListener('input',update);
chips.addEventListener('click',e=>{
const b=e.target.closest('button'); if(!b) return;
chips.querySelectorAll('button').forEach(x=>x.setAttribute('aria-pressed',x===b));
cpl=+b.dataset.cpl; update();
});
update();
// count-up numbers when visible
const io=new IntersectionObserver(es=>es.forEach(en=>{
if(!en.isIntersecting) return; io.unobserve(en.target);
const el=en.target,to=+el.dataset.to,dec=+(el.dataset.dec||0),suf=el.dataset.suffix||'';
const reduce=matchMedia('(prefers-reduced-motion: reduce)').matches;
if(reduce){el.textContent=to.toFixed(dec)+suf;return}
const t0=performance.now(),d=1200;
(function f(t){const p=Math.min((t-t0)/d,1),e=1-Math.pow(1-p,3);
el.textContent=(to*e).toFixed(dec)+suf; if(pio.observe(n));
// form validation
const form=document.getElementById('contact');
form.addEventListener('submit',e=>{
e.preventDefault();
let ok=true;
const name=form.name,email=form.email;
const set=(f,m)=>{f.nextElementSibling.textContent=m;if(m)ok=false};
set(name,name.value.trim()?'':'Enter your name.');
set(email,/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email.value)?'':'Enter a valid email address.');
if(!ok) return;
const box=document.getElementById('ok');
box.textContent='Thanks '+name.value.trim().split(' ')[0]+'. We will email you within one working day.';
box.style.display='block'; form.reset();
});
document.getElementById('yr').textContent=new Date().getFullYear();