/* Page sections */ const Hero = ({ heroVariant }) => { const [time, setTime] = React.useState(getPacificTime()); React.useEffect(() => { const id = setInterval(() => setTime(getPacificTime()), 30000); return () => clearInterval(id); }, []); return (
Index / Studio
49.1798° N · 123.8336° W {time} PT

Independent studio · Est. 2025

{heroVariant === "duality" ? (

Alternate routes. Alternate roots. One studio.

) : (

Design, web & tech for the good work.

)}

AR Communications is a one-person studio on Gabriola Island, building brand identities, websites and supporting small-office technology for non-profits and small businesses of coastal British Columbia.

Start a project See selected work

Discipline

Brand · Web · Office tech · Installations

Clients

Non-profits, small businesses, civic projects.

Availability

Booking July → September 2026

); }; function getPacificTime() { try { return new Date().toLocaleTimeString("en-CA", { hour: "2-digit", minute: "2-digit", hour12: false, timeZone: "America/Vancouver", }); } catch { return "—:—"; } } const Marquee = () => { const items = [ "Brand identity", "Web design", "Technical support", "Non-profit specialist", "Gabriola, BC", ]; const row = [...items, ...items, ...items]; return ( ); }; /* ---------- SERVICES ---------- */ const SERVICES = [ { num: "01", title: "Brand identity", sub: "Logos, marks & visual systems", body: "A clear name, a confident mark, and a set of rules that hold up on a hand-painted sign or a 4K screen. Built for organisations that need their identity to last more than a season.", deliverables: ["Logo & wordmark", "Type & colour system", "Guidelines PDF", "Signage & print", "Stationery"], }, { num: "02", title: "Web design", sub: "Sites that work as hard as you do", body: "Plain-spoken websites for small teams. Easy to update, easy to find, easy to read on a slow rural connection. Built on WordPress, Webflow or hand-coded — whichever fits the work.", deliverables: ["Site design", "Content & copy", "Build & launch", "Accessibility audit", "Annual care"], }, { num: "03", title: "Tech support", sub: "On-call help for small offices", body: "When the printer won't print, when the email is bouncing, when nobody can find the Wi-Fi password. A friendly local you can phone, on a monthly retainer or per visit.", deliverables: ["Remote support", "On-site visits", "Backups & security", "Email & calendar setup", "Vendor liaison"], }, { num: "04", title: "Office builds", sub: "Setting up small offices, properly", body: "Network cabling, workstations, projectors, video-call rooms. The boring infrastructure that makes a small organisation feel like a real one. Done once, done well.", deliverables: ["Network & Wi-Fi", "Workstation setup", "Meeting-room AV", "Cabling & tidy-up", "Documentation"], }, ]; const Services = () => { return (

Services

Four things, done
thoroughly.

{SERVICES.map((s, i) => ( ))}
); }; const ServiceRow = ({ num, title, sub, body, deliverables, last }) => { const [open, setOpen] = React.useState(false); return (

{body}

Deliverables
    {deliverables.map((d) => (
  • {d}
  • ))}
{last &&
}
); }; Object.assign(window, { Hero, Services, Marquee });