01 — GETTING STARTED
Global styles, color & type
Purlin ships with a single source of truth for color and typography. Update these once and every page follows. In Webflow, open Style Manager → Variables to find them.
--cream: #F4F1EA
--forest: #283730
--orange: #CE4318
--ink: #1F2823
--card: #FBFAF6
- Swap the logo: select the logo mark in the nav symbol, delete the placeholder, and drop in your SVG (keep it ~26px tall).
- Change the fonts: the display face is Schibsted Grotesk, body is Hanken Grotesk. Replace both in Project Settings → Fonts, then reassign in the two base text styles.
- Reserve orange for CTAs — it's the one accent that signals "click." Don't use it for body text or icons.
SWAPPING IMAGES
Swapping images
Most images update the same way: select the image on the canvas, open the Settings panel, and choose Replace image (or drag a new file into the Assets panel first, then reselect it there). Hero photography, before/after shots, and team photos all work like this — swapping the file doesn't touch layout, cropping, or classes. CMS-driven images (service, project, and blog post covers) live on the Collection item itself, so update them from the CMS panel rather than the page canvas. The Open Graph preview image for each page is set separately under Page settings → Open Graph and won't update automatically when you change an on-page hero image.
02 — CMS GUIDE
Adding your content
Eight CMS collections power the dynamic pages and local SEO. Add an item to Services, Projects, Service Areas, or Blog Posts and its detail page builds itself from the matching template.
Services
Title, icon, summary, "what's included" list, process steps → renders the Service Detail template. Icon (image): a 24px SVG icon (forest #283730) shown on the services grid card — leave empty to fall back to the built-in wrench icon. Dark card (switch): turns the card into the dark forest style with gold text, for highlighting one service (e.g. Commercial Roofing). Show badge (switch): shows the "Most requested" ribbon on that service's card. Testimonial quote / name / meta / initials: the client quote shown on that service's detail page.
Projects
Cover, gallery, before/after, location, material → feeds the Gallery list and Project Detail. Testimonial quote / name / meta / initials: the client quote shown on that project's detail page.
Service Areas
City, county, local copy, nearby towns → renders the localized Service Area Detail. Area reviews (multi-reference): pick the 3 reviews shown on that area's page — add real reviews to the Reviews collection, then link them here. Nearby areas (multi-reference): the 3 nearby-town cards shown at the bottom of the area page.
Blog Posts
Category, cover, author, body, read-time → feeds the Blog list and Blog Post template.
Reviews
Customer name, rating, quote, platform → feeds the Reviews page and Home testimonials.
Team
Name, role, photo, bio → feeds the About page team grid.
Blog Categories
Category name and description → powers Blog filter chips and category badges.
Project Categories
Category name and description → powers Gallery filter chips.
Updating your phone number, address & license
Your phone number, business address, and license number appear in several places. Update them here to keep every page in sync:
- Components (change once, updates every page): Navbar (phone link, Call pill), Mobile Menu (CALL US block), Footer (phone, address, license number), Sticky CTA Bar (phone), CTA Band & Orange CTA Band (phone button), Announcement Bar (the phone number shown in the top bar).
- Footer exception: the 404 and Style Guide pages don't use the Footer component — they ship with a simplified static footer, so update their phone number, address, and license separately if you change them elsewhere.
- Contact page (page-specific, not covered by components): the Call card and Address card in the contact rail, business hours, the emergency line ((512) 555-0199), and the form field placeholder text.
- CMS content: some Blog Post, Service, and Project entries mention the phone number or a place name in their body copy — search for these in the Editor and update per-entry.
- Google Map component: the address already appears in the map caption paragraph — update it there too so it doesn't fall out of sync with the Footer.
03 — COMPONENTS
Reusable building blocks
The shared pieces are Webflow Components — edit one instance and every page updates. You'll find them in the Components panel:
Navbar
Nav Docs
Footer
Mobile Menu
Sticky CTA Bar
Trust Bar
CTA Band
Orange CTA Band
Google Map
Repeating cards (services, projects, reviews, blog posts) use shared classes rather than Components — edit the class to restyle every card at once.
Google Map uses a single Component — change the address once in its settings and it updates on every page (requires a Google Maps API key in Project Settings).
GOOGLE MAPS
Setting up Google Maps
The Contact and Service Areas pages use Webflow's native Map element. Add your own Google Maps API key in Site Settings → Integrations → Google Maps to remove the development watermark. Service Area detail pages link out to Google Maps and need no key.
04 — ANIMATIONS
How to Edit GSAP Animations
All motion on this template runs on GSAP 3.12.5, loaded from cdnjs, plus a handful of registered site-footer scripts. Every animation only ever animates transform and opacity — the two GPU-cheap properties that never trigger layout — and everything auto-disables under prefers-reduced-motion: reduce via gsap.matchMedia.
ELEMENT MAP
Hookdata-reveal attribute
EffectScroll-triggered fade + 22px rise (fires once, at 88% from top)
ScriptrlMotionInit2
RemoveDelete the attribute from the element
Hook.rl-stat-num / .rl-abtp-stat-num
EffectAnimated count-up (1.4s)
ScriptrlMotionInit2
RemoveRemove the class
Hook.rl-nav-bar
EffectNav hides on scroll + adds shadow
ScriptrlMotionInit2
RemoveRemove the script to disable
Hook.rl-fab
EffectBack-to-top smooth scroll
ScriptrlMotionInit2
RemoveDelete the element
Hook.rl-mtoggle .rl-mclose .rl-menu-wrap .rl-menu-1
EffectMobile menu open/close (with focus trap)
ScriptPurlin Mobile Menu Scroll
Remove—
Hookdata-filter-group data-filter data-tags
EffectBlog/Projects filter chips (GSAP fade)
ScriptPurlin Filter Chips
RemoveDelete the attributes
Hook.rl-nav + current page match
EffectNav current-page underline
ScriptPurlin Nav Active GSAP
RemoveRemove the script to disable
To change speed or distance, go to Project Settings → Custom Code, find the relevant registered script (for example rlMotionInit2), and edit the literal numeric values inside — e.g. duration:.7 (the animation duration in seconds) or y:22 (the rise distance in pixels). A short excerpt of the reveal animation:
gsap.from(el, {
opacity: 0,
y: 22,
duration: .7,
ease: "power2.out"
});
HOW TO REMOVE ALL ANIMATIONS
- Go to Site Settings → Custom Code and delete the Purlin scripts (GSAP core, ScrollTrigger, Mobile Menu Scroll, Motion Init, Hero Typer, Nav Active GSAP, Filter Chips, Load More, FAQ GSAP, UI Micro GSAP, Back To Top GSAP, TOC Spy GSAP, Sticky CTA GSAP, Chips Scroll Hint).
- Leftover
data-reveal and similar attributes on elements are harmless once the scripts are gone — they do nothing without the script. - If you don't need any motion at all, you can also delete the two GSAP CDN
<script> tags.
REGISTERED SCRIPTS
- gsapCore — loads the GSAP 3.12.5 core library
- gsapScrollTrigger — GSAP plugin that fires animations on scroll position
- Purlin Mobile Menu Scroll — opens/closes the mobile nav with a focus trap
- rlMotionInit2 — reveal, count-up, nav-hide, and back-to-top-click behavior
- Purlin Hero Typer v2 — animated typewriter effect in the hero headline
- Purlin Nav Active GSAP — underlines the current page in the nav and animates the link hover underline
- Purlin Back To Top GSAP — smooth-scrolls to top and shows/hides the
.rl-fab back-to-top button as you scroll - Purlin UI Micro GSAP — nav link hover underline, CTA arrow micro-motion, phone-icon wiggle, and hero image crossfade
- Purlin FAQ GSAP — smooth expand/collapse animation for the FAQ accordion items
- Also registered — Purlin Load More (paginates the Blog/Projects grids), Purlin TOC Spy GSAP (highlights the active section in this page's table of contents), Purlin Sticky CTA GSAP (shows/hides the mobile sticky CTA bar as you scroll), and Purlin Chips Scroll Hint (nudges users to scroll the filter-chip row)
- Purlin Filter Chips — GSAP fade for the Blog/Projects filter chip UI
05 — FINANCING EXAMPLE
About the financing example
The Financing section on the Home page now shows static example monthly payments for a typical project, so there's no calculator script to configure. An interactive financing calculator with live APR, term, and material inputs is available to template customers as a free cloneable companion project — just reach out through support to get access.
06 — SUPPORT
Support & changelog
Need something this guide doesn't cover? Here's where to look next.
- Changelog — version history for every template update.
- Licenses — full licensing information for fonts, icons, and code.
- Style Guide — the design system reference: colors, type, components, and more.