Position
Position helpers pin an element to the top or bottom (fixed-top, fixed-bottom) or keep it in view while its container scrolls (sticky-top, sticky-bottom and the responsive sticky-*-top variants). Every example runs inside its own scrollable frame, so scroll the frames to watch the bars stay put.
1Sticky page header
sticky-top keeps a section header visible while the content below it scrolls. Scroll the frame.
Our team has done this many times, so you never have to guess.
Our open API and ready-made integrations fit into the stack you already have.
Every detail is handled by people who care about getting it right.
Your data is encrypted, backed up daily and hosted in the region you choose.
Set up in an afternoon, connect the tools you use and invite your team.
Onboarding guides and live chat help new colleagues get going on day one.
Automations take care of the repetitive steps, so people can focus on real work.
Thousands of customers already trust us, and we work hard to keep it that way.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Sticky header demo">
<header class="sticky-top bg-page border-b px-4 py-2 font-semibold">
<i class="bi bi-journal-text" aria-hidden="true"></i> How we cut our release cycle in half
</header>
<div class="p-4">
<p class="small mb-4">Our team has done this many times, so you never have to guess.</p>
<p class="small mb-4">Our open API and ready-made integrations fit into the stack you already have.</p>
<p class="small mb-4">Every detail is handled by people who care about getting it right.</p>
<p class="small mb-4">Your data is encrypted, backed up daily and hosted in the region you choose.</p>
<p class="small mb-4">Set up in an afternoon, connect the tools you use and invite your team.</p>
<p class="small mb-4">Onboarding guides and live chat help new colleagues get going on day one.</p>
<p class="small mb-4">Automations take care of the repetitive steps, so people can focus on real work.</p>
<p class="small mb-4">Thousands of customers already trust us, and we work hard to keep it that way.</p>
</div>
</div>
</div>2Sticky save bar
sticky-bottom keeps form actions at the bottom edge of the scrolling area.
Real-time dashboards show what is on track and what needs attention.
Start in minutes and get help from a real person whenever you need it.
Every update lands in one place, so nothing gets lost in email threads.
Granular roles keep sensitive work private while everyone else stays informed.
Plan projects, track progress and share updates without another status meeting.
Clear reports turn weekly numbers into decisions in minutes, not days.
We measure success by how many customers come back and tell their friends.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Sticky save bar demo">
<div class="p-4">
<p class="small mb-4">Real-time dashboards show what is on track and what needs attention.</p>
<p class="small mb-4">Start in minutes and get help from a real person whenever you need it.</p>
<p class="small mb-4">Every update lands in one place, so nothing gets lost in email threads.</p>
<p class="small mb-4">Granular roles keep sensitive work private while everyone else stays informed.</p>
<p class="small mb-4">Plan projects, track progress and share updates without another status meeting.</p>
<p class="small mb-4">Clear reports turn weekly numbers into decisions in minutes, not days.</p>
<p class="small mb-4">We measure success by how many customers come back and tell their friends.</p>
</div>
<div class="sticky-bottom bg-surface-3 border-t p-2 flex justify-end gap-2">
<button type="button" class="btn btn-sm btn-light">Discard</button>
<button type="button" class="btn btn-sm btn-primary">Save changes</button>
</div>
</div>
</div>3Sticky table header
Put sticky-top on the thead so the column names stay visible in a long table.
| Name | Role | City |
|---|---|---|
| Ava Sato | Finance Lead | Montreal |
| Chloe Carter | Support Specialist | Toronto |
| Ivy Ibrahim | Data Analyst | Montreal |
| Noah Whitaker | Frontend Engineer | Denver |
| Theo Patel | HR Partner | Vancouver |
| Sofia Ortega | Sales Executive | Copenhagen |
| Kenji Larsen | HR Partner | Porto |
| Amara Mensah | Finance Lead | Porto |
| Noah Kowalski | Finance Lead | Toronto |
| Diego Novak | QA Engineer | Oslo |
| Kai Hughes | Operations Manager | Seoul |
| Ravi Quinn | Marketing Lead | Melbourne |
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Team table">
<table class="table table-sm table-striped mb-0">
<thead class="sticky-top">
<tr>
<th scope="col">Name</th>
<th scope="col">Role</th>
<th scope="col">City</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ava Sato</td>
<td>Finance Lead</td>
<td>Montreal</td>
</tr>
<tr>
<td>Chloe Carter</td>
<td>Support Specialist</td>
<td>Toronto</td>
</tr>
<tr>
<td>Ivy Ibrahim</td>
<td>Data Analyst</td>
<td>Montreal</td>
</tr>
<tr>
<td>Noah Whitaker</td>
<td>Frontend Engineer</td>
<td>Denver</td>
</tr>
<tr>
<td>Theo Patel</td>
<td>HR Partner</td>
<td>Vancouver</td>
</tr>
<tr>
<td>Sofia Ortega</td>
<td>Sales Executive</td>
<td>Copenhagen</td>
</tr>
<tr>
<td>Kenji Larsen</td>
<td>HR Partner</td>
<td>Porto</td>
</tr>
<tr>
<td>Amara Mensah</td>
<td>Finance Lead</td>
<td>Porto</td>
</tr>
<tr>
<td>Noah Kowalski</td>
<td>Finance Lead</td>
<td>Toronto</td>
</tr>
<tr>
<td>Diego Novak</td>
<td>QA Engineer</td>
<td>Oslo</td>
</tr>
<tr>
<td>Kai Hughes</td>
<td>Operations Manager</td>
<td>Seoul</td>
</tr>
<tr>
<td>Ravi Quinn</td>
<td>Marketing Lead</td>
<td>Melbourne</td>
</tr>
</tbody>
</table>
</div>
</div>4Alphabet section headings
Each letter heading is sticky inside its own section, so the next letter pushes the previous one away.
A
- Ashford, Owen
B
- Brennan, Finn
D
- Delgado, Ivy
F
- Fischer, Omar
H
- Haddad, Jonah
- Harlow, Ethan
- Hughes, Leo
K
- Kim, Elena
- Kim, Mateo
- Kowalski, Felix
L
- Lindqvist, Liam
M
- Mensah, Priya
- Moreau, Ava
N
- Novak, Ella
O
- Okafor, Arjun
- Okafor, Theo
P
- Patel, Zoe
Q
- Quinn, Mason
R
- Rossi, Chloe
T
- Tanaka, Hana
- Tanaka, Tariq
V
- Varga, Luna
- Varga, Ruby
W
- Whitaker, Mia
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Contacts">
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">A</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Ashford, Owen</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">B</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Brennan, Finn</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">D</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Delgado, Ivy</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">F</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Fischer, Omar</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">H</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Haddad, Jonah</li>
<li class="py-1">Harlow, Ethan</li>
<li class="py-1">Hughes, Leo</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">K</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Kim, Elena</li>
<li class="py-1">Kim, Mateo</li>
<li class="py-1">Kowalski, Felix</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">L</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Lindqvist, Liam</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">M</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Mensah, Priya</li>
<li class="py-1">Moreau, Ava</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">N</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Novak, Ella</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">O</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Okafor, Arjun</li>
<li class="py-1">Okafor, Theo</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">P</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Patel, Zoe</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">Q</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Quinn, Mason</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">R</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Rossi, Chloe</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">T</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Tanaka, Hana</li>
<li class="py-1">Tanaka, Tariq</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">V</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Varga, Luna</li>
<li class="py-1">Varga, Ruby</li>
</ul>
</section>
<section>
<h3 class="sticky-top bg-surface-2 h6 mb-0 px-4 py-1">W</h3>
<ul class="list-unstyled px-4 py-2 mb-0">
<li class="py-1">Whitaker, Mia</li>
</ul>
</section>
</div>
</div>5Sticky sidebar
A column with a sticky-top block stays in view next to a long content column.
Clear prices, honest advice and no surprises along the way.
We listen first, then build a plan around what you actually need.
Friendly people answer your questions quickly, by phone, chat or email.
We keep things simple, so you can focus on what matters to you.
Start free, upgrade when you grow and cancel any time with one click.
Teams report saving around five hours a week after the first month.
We listen first, then build a plan around what you actually need.
Clear reports turn weekly numbers into decisions in minutes, not days.
Real-time dashboards show what is on track and what needs attention.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Article with sidebar">
<div class="row g-0">
<div class="col-4 border-e">
<nav class="sticky-top p-2 small" aria-label="On this page">
<div class="font-semibold mb-1">
On this page
</div>
<a class="block" href="#">Overview</a><a class="block" href="#">Setup</a><a class="block" href="#">FAQ</a>
</nav>
</div>
<div class="col-8 p-4">
<p class="small mb-4">Clear prices, honest advice and no surprises along the way.</p>
<p class="small mb-4">We listen first, then build a plan around what you actually need.</p>
<p class="small mb-4">Friendly people answer your questions quickly, by phone, chat or email.</p>
<p class="small mb-4">We keep things simple, so you can focus on what matters to you.</p>
<p class="small mb-4">Start free, upgrade when you grow and cancel any time with one click.</p>
<p class="small mb-4">Teams report saving around five hours a week after the first month.</p>
<p class="small mb-4">We listen first, then build a plan around what you actually need.</p>
<p class="small mb-4">Clear reports turn weekly numbers into decisions in minutes, not days.</p>
<p class="small mb-4">Real-time dashboards show what is on track and what needs attention.</p>
</div>
</div>
</div>
</div>6Responsive sticky (md and up)
sticky-md-top only sticks from the md breakpoint; on phones the bar scrolls away with the page.
Start in minutes and get help from a real person whenever you need it.
Granular roles keep sensitive work private while everyone else stays informed.
Every detail is handled by people who care about getting it right.
Set up in an afternoon, connect the tools you use and invite your team.
We keep things simple, so you can focus on what matters to you.
Plan projects, track progress and share updates without another status meeting.
Your data is encrypted, backed up daily and hosted in the region you choose.
Start free, upgrade when you grow and cancel any time with one click.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Responsive sticky demo">
<div class="sticky-md-top text-bg-primary px-4 py-2 small">
<i class="bi bi-phone-fill" aria-hidden="true"></i> Sticky from md, normal flow on small screens
</div>
<div class="p-4">
<p class="small mb-4">Start in minutes and get help from a real person whenever you need it.</p>
<p class="small mb-4">Granular roles keep sensitive work private while everyone else stays informed.</p>
<p class="small mb-4">Every detail is handled by people who care about getting it right.</p>
<p class="small mb-4">Set up in an afternoon, connect the tools you use and invite your team.</p>
<p class="small mb-4">We keep things simple, so you can focus on what matters to you.</p>
<p class="small mb-4">Plan projects, track progress and share updates without another status meeting.</p>
<p class="small mb-4">Your data is encrypted, backed up daily and hosted in the region you choose.</p>
<p class="small mb-4">Start free, upgrade when you grow and cancel any time with one click.</p>
</div>
</div>
</div>7Fixed-top navbar
fixed-top pins a navbar to the top edge; the frame acts as the viewport, so the bar stays inside the example.
Our open API and ready-made integrations fit into the stack you already have.
Onboarding guides and live chat help new colleagues get going on day one.
Clear prices, honest advice and no surprises along the way.
Every update lands in one place, so nothing gets lost in email threads.
Thousands of customers already trust us, and we work hard to keep it that way.
Teams report saving around five hours a week after the first month.
Our team has done this many times, so you never have to guess.
Automations take care of the repetitive steps, so people can focus on real work.
<div class="hp-pos">
<nav class="navbar fixed-top bg-page border-b px-4 py-2" aria-label="Demo">
<span class="navbar-brand mb-0 h6"><i class="bi bi-lightning-charge-fill" aria-hidden="true"></i> Aeroora Flow</span>
<button type="button" class="btn btn-sm btn-outline-primary">Sign up</button>
</nav>
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Fixed navbar demo">
<div class="px-4 pb-4" style="padding-top:4rem">
<p class="small mb-4">Our open API and ready-made integrations fit into the stack you already have.</p>
<p class="small mb-4">Onboarding guides and live chat help new colleagues get going on day one.</p>
<p class="small mb-4">Clear prices, honest advice and no surprises along the way.</p>
<p class="small mb-4">Every update lands in one place, so nothing gets lost in email threads.</p>
<p class="small mb-4">Thousands of customers already trust us, and we work hard to keep it that way.</p>
<p class="small mb-4">Teams report saving around five hours a week after the first month.</p>
<p class="small mb-4">Our team has done this many times, so you never have to guess.</p>
<p class="small mb-4">Automations take care of the repetitive steps, so people can focus on real work.</p>
</div>
</div>
</div>8Fixed-bottom tab bar
A mobile style tab bar with fixed-bottom; content gets bottom padding so nothing hides behind it.
We measure success by how many customers come back and tell their friends.
Friendly people answer your questions quickly, by phone, chat or email.
Our open API and ready-made integrations fit into the stack you already have.
Our team has done this many times, so you never have to guess.
Plan projects, track progress and share updates without another status meeting.
Every update lands in one place, so nothing gets lost in email threads.
Your data is encrypted, backed up daily and hosted in the region you choose.
Clear prices, honest advice and no surprises along the way.
<div class="hp-pos">
<nav class="fixed-bottom flex bg-page border-t" aria-label="App">
<a href="#" class="flex-auto text-center small py-2 no-underline text-primary-ink" aria-current="page"><i class="bi bi-house-fill" aria-hidden="true"></i><span class="block">Home</span></a><a href="#" class="flex-auto text-center small py-2 no-underline text-muted"><i class="bi bi-search" aria-hidden="true"></i><span class="block">Search</span></a><a href="#" class="flex-auto text-center small py-2 no-underline text-muted"><i class="bi bi-heart-fill" aria-hidden="true"></i><span class="block">Saved</span></a><a href="#" class="flex-auto text-center small py-2 no-underline text-muted"><i class="bi bi-person-fill" aria-hidden="true"></i><span class="block">Profile</span></a>
</nav>
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Mobile tab bar demo">
<div class="px-4 pt-4" style="padding-bottom:4.5rem">
<p class="small mb-4">We measure success by how many customers come back and tell their friends.</p>
<p class="small mb-4">Friendly people answer your questions quickly, by phone, chat or email.</p>
<p class="small mb-4">Our open API and ready-made integrations fit into the stack you already have.</p>
<p class="small mb-4">Our team has done this many times, so you never have to guess.</p>
<p class="small mb-4">Plan projects, track progress and share updates without another status meeting.</p>
<p class="small mb-4">Every update lands in one place, so nothing gets lost in email threads.</p>
<p class="small mb-4">Your data is encrypted, backed up daily and hosted in the region you choose.</p>
<p class="small mb-4">Clear prices, honest advice and no surprises along the way.</p>
</div>
</div>
</div>9App shell: fixed top and bottom
A fixed-top title bar plus a fixed-bottom status line around a scrolling list.
- Nora HaddadOur favourite tips for busy weeks
- Samir FischerSeven automations every team should set up
- Aria DelgadoLooking back at a busy season
- Lucas MorganHow remote teams keep projects on track
- Lea DuarteA beginner's guide to getting started
- Freya OrtegaInside our product roadmap for next year
- Maya NguyenA practical guide to async work
- Isla LindqvistHow to choose the right plan
- Nadia IbrahimWriting status updates people actually read
<div class="hp-pos">
<div class="fixed-top text-bg-dark px-4 py-2 small font-semibold">
<i class="bi bi-inbox-fill" aria-hidden="true"></i> Inbox
</div>
<div class="fixed-bottom bg-surface-3 border-t px-4 py-1 small text-muted">
Synced 45 min ago
</div>
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="App shell demo">
<ul class="list-group list-group-flush" style="padding-top:2.5rem;padding-bottom:2rem">
<li class="list-group-item small"><strong class="block">Nora Haddad</strong>Our favourite tips for busy weeks</li>
<li class="list-group-item small"><strong class="block">Samir Fischer</strong>Seven automations every team should set up</li>
<li class="list-group-item small"><strong class="block">Aria Delgado</strong>Looking back at a busy season</li>
<li class="list-group-item small"><strong class="block">Lucas Morgan</strong>How remote teams keep projects on track</li>
<li class="list-group-item small"><strong class="block">Lea Duarte</strong>A beginner's guide to getting started</li>
<li class="list-group-item small"><strong class="block">Freya Ortega</strong>Inside our product roadmap for next year</li>
<li class="list-group-item small"><strong class="block">Maya Nguyen</strong>A practical guide to async work</li>
<li class="list-group-item small"><strong class="block">Isla Lindqvist</strong>How to choose the right plan</li>
<li class="list-group-item small"><strong class="block">Nadia Ibrahim</strong>Writing status updates people actually read</li>
</ul>
</div>
</div>10Sticky chat composer
The message input uses sticky-bottom so it is always at hand below the conversation.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Chat demo">
<div class="p-4">
<div class="flex mb-2">
<div class="px-4 py-2 rounded-lg small bg-surface-3" style="max-width:75%">
Start in minutes and get help from a real person whenever you need it.
</div>
</div>
<div class="flex justify-end mb-2">
<div class="px-4 py-2 rounded-lg small text-bg-primary" style="max-width:75%">
Onboarding guides and live chat help new colleagues get going on day one.
</div>
</div>
<div class="flex mb-2">
<div class="px-4 py-2 rounded-lg small bg-surface-3" style="max-width:75%">
Teams report saving around five hours a week after the first month.
</div>
</div>
<div class="flex justify-end mb-2">
<div class="px-4 py-2 rounded-lg small text-bg-primary" style="max-width:75%">
Clear reports turn weekly numbers into decisions in minutes, not days.
</div>
</div>
<div class="flex mb-2">
<div class="px-4 py-2 rounded-lg small bg-surface-3" style="max-width:75%">
Start free, upgrade when you grow and cancel any time with one click.
</div>
</div>
<div class="flex justify-end mb-2">
<div class="px-4 py-2 rounded-lg small text-bg-primary" style="max-width:75%">
We listen first, then build a plan around what you actually need.
</div>
</div>
</div>
<form class="sticky-bottom bg-page border-t p-2 flex gap-2">
<label class="sr-only" for="hp-msg-1234">Message</label>
<input class="form-control form-control-sm" id="hp-msg-1234" type="text" placeholder="Write a message">
<button type="submit" class="btn btn-sm btn-primary" aria-label="Send"><i class="bi bi-send-fill" aria-hidden="true"></i></button>
</form>
</div>
</div>11Sticky cart total
The order total sticks to the bottom of a long basket list.
- Analytics add-on$11.00
- Business plan$53.00
- Automation pack$16.00
- Priority support$31.00
- Team plan$20.00
- API boost$39.99
- Storage pack$10.00
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Basket">
<ul class="list-group list-group-flush">
<li class="list-group-item flex justify-between small"><span>Analytics add-on</span><span>$11.00</span></li>
<li class="list-group-item flex justify-between small"><span>Business plan</span><span>$53.00</span></li>
<li class="list-group-item flex justify-between small"><span>Automation pack</span><span>$16.00</span></li>
<li class="list-group-item flex justify-between small"><span>Priority support</span><span>$31.00</span></li>
<li class="list-group-item flex justify-between small"><span>Team plan</span><span>$20.00</span></li>
<li class="list-group-item flex justify-between small"><span>API boost</span><span>$39.99</span></li>
<li class="list-group-item flex justify-between small"><span>Storage pack</span><span>$10.00</span></li>
</ul>
<div class="sticky-bottom text-bg-light border-t flex justify-between items-center px-4 py-2">
<strong>Total $180.99</strong>
<button type="button" class="btn btn-sm btn-success">Checkout</button>
</div>
</div>
</div>12Sticky filters on large screens
sticky-lg-top keeps the filter row in view on wide screens only.
We keep things simple, so you can focus on what matters to you.
Friendly people answer your questions quickly, by phone, chat or email.
Automations take care of the repetitive steps, so people can focus on real work.
Granular roles keep sensitive work private while everyone else stays informed.
Every detail is handled by people who care about getting it right.
Real-time dashboards show what is on track and what needs attention.
Set up in an afternoon, connect the tools you use and invite your team.
Thousands of customers already trust us, and we work hard to keep it that way.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Product filters">
<div class="sticky-lg-top bg-page border-b p-2 flex gap-2 items-center">
<label class="small whitespace-nowrap" for="hp-sort-1235">Sort by</label>
<select class="form-select form-select-sm" id="hp-sort-1235">
<option>Newest</option>
<option>Price</option>
<option>Rating</option>
</select>
</div>
<div class="p-4">
<p class="small mb-4">We keep things simple, so you can focus on what matters to you.</p>
<p class="small mb-4">Friendly people answer your questions quickly, by phone, chat or email.</p>
<p class="small mb-4">Automations take care of the repetitive steps, so people can focus on real work.</p>
<p class="small mb-4">Granular roles keep sensitive work private while everyone else stays informed.</p>
<p class="small mb-4">Every detail is handled by people who care about getting it right.</p>
<p class="small mb-4">Real-time dashboards show what is on track and what needs attention.</p>
<p class="small mb-4">Set up in an afternoon, connect the tools you use and invite your team.</p>
<p class="small mb-4">Thousands of customers already trust us, and we work hard to keep it that way.</p>
</div>
</div>
</div>13Sticky editor toolbar
Formatting buttons stay at the top of a long document while you edit.
Know what is happening, without asking
We measure success by how many customers come back and tell their friends.
Set up in an afternoon, connect the tools you use and invite your team.
Every update lands in one place, so nothing gets lost in email threads.
Our open API and ready-made integrations fit into the stack you already have.
We listen first, then build a plan around what you actually need.
We keep things simple, so you can focus on what matters to you.
Your data is encrypted, backed up daily and hosted in the region you choose.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Editor demo">
<div class="sticky-top bg-surface-3 border-b p-1 flex gap-1" role="toolbar" aria-label="Formatting">
<button type="button" class="btn btn-sm btn-light" aria-label="Bold"><i class="bi bi-type-bold" aria-hidden="true"></i></button>
<button type="button" class="btn btn-sm btn-light" aria-label="Italic"><i class="bi bi-type-italic" aria-hidden="true"></i></button>
<button type="button" class="btn btn-sm btn-light" aria-label="Bulleted list"><i class="bi bi-list-ul" aria-hidden="true"></i></button>
<button type="button" class="btn btn-sm btn-light" aria-label="Insert link"><i class="bi bi-link-45deg" aria-hidden="true"></i></button>
<button type="button" class="btn btn-sm btn-light" aria-label="Insert image"><i class="bi bi-image-fill" aria-hidden="true"></i></button>
</div>
<div class="p-4">
<h3 class="h5">Know what is happening, without asking</h3>
<p class="small mb-4">We measure success by how many customers come back and tell their friends.</p>
<p class="small mb-4">Set up in an afternoon, connect the tools you use and invite your team.</p>
<p class="small mb-4">Every update lands in one place, so nothing gets lost in email threads.</p>
<p class="small mb-4">Our open API and ready-made integrations fit into the stack you already have.</p>
<p class="small mb-4">We listen first, then build a plan around what you actually need.</p>
<p class="small mb-4">We keep things simple, so you can focus on what matters to you.</p>
<p class="small mb-4">Your data is encrypted, backed up daily and hosted in the region you choose.</p>
</div>
</div>
</div>14Sticky day dividers
Date pills in a message thread stick at the top until the next day arrives.
Teams report saving around five hours a week after the first month.
Real-time dashboards show what is on track and what needs attention.
Start in minutes and get help from a real person whenever you need it.
Clear prices, honest advice and no surprises along the way.
Onboarding guides and live chat help new colleagues get going on day one.
Thousands of customers already trust us, and we work hard to keep it that way.
Start free, upgrade when you grow and cancel any time with one click.
Our team has done this many times, so you never have to guess.
Granular roles keep sensitive work private while everyone else stays informed.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Message thread">
<div class="sticky-top text-center py-1">
<span class="badge rounded-full text-bg-secondary">Monday</span>
</div>
<p class="small bg-surface-3 rounded-lg px-4 py-2 mx-4">Teams report saving around five hours a week after the first month.</p>
<p class="small bg-surface-3 rounded-lg px-4 py-2 mx-4">Real-time dashboards show what is on track and what needs attention.</p>
<p class="small bg-surface-3 rounded-lg px-4 py-2 mx-4">Start in minutes and get help from a real person whenever you need it.</p>
<div class="sticky-top text-center py-1">
<span class="badge rounded-full text-bg-secondary">Yesterday</span>
</div>
<p class="small bg-surface-3 rounded-lg px-4 py-2 mx-4">Clear prices, honest advice and no surprises along the way.</p>
<p class="small bg-surface-3 rounded-lg px-4 py-2 mx-4">Onboarding guides and live chat help new colleagues get going on day one.</p>
<p class="small bg-surface-3 rounded-lg px-4 py-2 mx-4">Thousands of customers already trust us, and we work hard to keep it that way.</p>
<div class="sticky-top text-center py-1">
<span class="badge rounded-full text-bg-secondary">Today</span>
</div>
<p class="small bg-surface-3 rounded-lg px-4 py-2 mx-4">Start free, upgrade when you grow and cancel any time with one click.</p>
<p class="small bg-surface-3 rounded-lg px-4 py-2 mx-4">Our team has done this many times, so you never have to guess.</p>
<p class="small bg-surface-3 rounded-lg px-4 py-2 mx-4">Granular roles keep sensitive work private while everyone else stays informed.</p>
</div>
</div>15Fixed-bottom update notice
A dismissible style notice pinned with fixed-bottom over scrolling content.
Automations take care of the repetitive steps, so people can focus on real work.
Clear reports turn weekly numbers into decisions in minutes, not days.
We measure success by how many customers come back and tell their friends.
Friendly people answer your questions quickly, by phone, chat or email.
Plan projects, track progress and share updates without another status meeting.
Every detail is handled by people who care about getting it right.
Start in minutes and get help from a real person whenever you need it.
Our open API and ready-made integrations fit into the stack you already have.
<div class="hp-pos">
<div class="fixed-bottom m-2 alert alert-info flex items-center gap-2 mb-2 py-2 small" role="status">
<i class="bi bi-arrow-repeat" aria-hidden="true"></i><span class="me-auto">A new version is ready.</span>
<button type="button" class="btn btn-sm btn-info">Reload</button>
</div>
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Update notice demo">
<div class="px-4 pt-4" style="padding-bottom:5rem">
<p class="small mb-4">Automations take care of the repetitive steps, so people can focus on real work.</p>
<p class="small mb-4">Clear reports turn weekly numbers into decisions in minutes, not days.</p>
<p class="small mb-4">We measure success by how many customers come back and tell their friends.</p>
<p class="small mb-4">Friendly people answer your questions quickly, by phone, chat or email.</p>
<p class="small mb-4">Plan projects, track progress and share updates without another status meeting.</p>
<p class="small mb-4">Every detail is handled by people who care about getting it right.</p>
<p class="small mb-4">Start in minutes and get help from a real person whenever you need it.</p>
<p class="small mb-4">Our open API and ready-made integrations fit into the stack you already have.</p>
</div>
</div>
</div>16Sticky category chips
A horizontal row of chips with sticky-top above a feed of cards.
Five things we learned this year
Teams report saving around five hours a week after the first month.
The small habits that make a big difference
Clear reports turn weekly numbers into decisions in minutes, not days.
How one support team cut first replies to 20 minutes
Every detail is handled by people who care about getting it right.
A beginner's guide to getting started
Friendly people answer your questions quickly, by phone, chat or email.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Category feed">
<div class="sticky-top bg-page p-2 flex flex-wrap gap-1 border-b">
<span class="badge rounded-full text-bg-light border">Product</span><span class="badge rounded-full text-bg-light border">Engineering</span><span class="badge rounded-full text-bg-light border">Marketing</span><span class="badge rounded-full text-bg-light border">Sales</span><span class="badge rounded-full text-bg-light border">Support</span>
</div>
<div class="p-2 vstack gap-2">
<div class="card">
<div class="card-body py-2">
<h3 class="h6 mb-1">Five things we learned this year</h3>
<p class="small mb-0">Teams report saving around five hours a week after the first month.</p>
</div>
</div>
<div class="card">
<div class="card-body py-2">
<h3 class="h6 mb-1">The small habits that make a big difference</h3>
<p class="small mb-0">Clear reports turn weekly numbers into decisions in minutes, not days.</p>
</div>
</div>
<div class="card">
<div class="card-body py-2">
<h3 class="h6 mb-1">How one support team cut first replies to 20 minutes</h3>
<p class="small mb-0">Every detail is handled by people who care about getting it right.</p>
</div>
</div>
<div class="card">
<div class="card-body py-2">
<h3 class="h6 mb-1">A beginner's guide to getting started</h3>
<p class="small mb-0">Friendly people answer your questions quickly, by phone, chat or email.</p>
</div>
</div>
</div>
</div>
</div>17Table of contents on extra-large screens
sticky-xl-top only sticks at 1200 px and wider, a common choice for docs layouts.
Set up in an afternoon, connect the tools you use and invite your team.
Your data is encrypted, backed up daily and hosted in the region you choose.
We measure success by how many customers come back and tell their friends.
Start free, upgrade when you grow and cancel any time with one click.
We keep things simple, so you can focus on what matters to you.
Automations take care of the repetitive steps, so people can focus on real work.
Real-time dashboards show what is on track and what needs attention.
Our team has done this many times, so you never have to guess.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Docs layout">
<div class="sticky-xl-top bg-surface-3 border-b px-4 py-2 small">
<i class="bi bi-list-nested" aria-hidden="true"></i> Contents: Introduction · Install · Usage
</div>
<div class="p-4">
<p class="small mb-4">Set up in an afternoon, connect the tools you use and invite your team.</p>
<p class="small mb-4">Your data is encrypted, backed up daily and hosted in the region you choose.</p>
<p class="small mb-4">We measure success by how many customers come back and tell their friends.</p>
<p class="small mb-4">Start free, upgrade when you grow and cancel any time with one click.</p>
<p class="small mb-4">We keep things simple, so you can focus on what matters to you.</p>
<p class="small mb-4">Automations take care of the repetitive steps, so people can focus on real work.</p>
<p class="small mb-4">Real-time dashboards show what is on track and what needs attention.</p>
<p class="small mb-4">Our team has done this many times, so you never have to guess.</p>
</div>
</div>
</div>18Checkout button on phones
sticky-sm-bottom sticks the call to action at the bottom from the sm breakpoint up.
Plan projects, track progress and share updates without another status meeting.
We listen first, then build a plan around what you actually need.
Clear prices, honest advice and no surprises along the way.
Thousands of customers already trust us, and we work hard to keep it that way.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Product details">
<div class="p-4">
<img src="../assets/img/product-5.svg" alt="Analytics add-on" class="img-fluid rounded-md mb-4">
<p class="small mb-4">Plan projects, track progress and share updates without another status meeting.</p>
<p class="small mb-4">We listen first, then build a plan around what you actually need.</p>
<p class="small mb-4">Clear prices, honest advice and no surprises along the way.</p>
<p class="small mb-4">Thousands of customers already trust us, and we work hard to keep it that way.</p>
</div>
<div class="sticky-sm-bottom bg-page border-t p-2">
<button type="button" class="btn btn-primary w-full"><i class="bi bi-bag-plus-fill" aria-hidden="true"></i> Add to bag · $186.78</button>
</div>
</div>
</div>19Reading progress header
A sticky header with a thin progress bar showing how far the reader has come.
Granular roles keep sensitive work private while everyone else stays informed.
Every update lands in one place, so nothing gets lost in email threads.
Onboarding guides and live chat help new colleagues get going on day one.
Your data is encrypted, backed up daily and hosted in the region you choose.
Thousands of customers already trust us, and we work hard to keep it that way.
We keep things simple, so you can focus on what matters to you.
Granular roles keep sensitive work private while everyone else stays informed.
We listen first, then build a plan around what you actually need.
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Reading demo">
<div class="sticky-top bg-page">
<div class="px-4 py-2 small font-semibold">
Inside our product roadmap for next year
</div>
<div class="progress rounded-none" role="progressbar" aria-label="Reading progress" aria-valuenow="72" aria-valuemin="0" aria-valuemax="100" style="--ui-progress-height:.25rem">
<div class="progress-bar" style="width:72%">
</div>
</div>
</div>
<div class="p-4">
<p class="small mb-4">Granular roles keep sensitive work private while everyone else stays informed.</p>
<p class="small mb-4">Every update lands in one place, so nothing gets lost in email threads.</p>
<p class="small mb-4">Onboarding guides and live chat help new colleagues get going on day one.</p>
<p class="small mb-4">Your data is encrypted, backed up daily and hosted in the region you choose.</p>
<p class="small mb-4">Thousands of customers already trust us, and we work hard to keep it that way.</p>
<p class="small mb-4">We keep things simple, so you can focus on what matters to you.</p>
<p class="small mb-4">Granular roles keep sensitive work private while everyone else stays informed.</p>
<p class="small mb-4">We listen first, then build a plan around what you actually need.</p>
</div>
</div>
</div>20Sticky table footer
A tfoot with sticky-bottom keeps the running total visible in a timesheet.
| Date | Task | Hours |
|---|---|---|
| Apr 26, 2026 | Smart reporting | 1 h |
| Jun 2, 2026 | Smart reporting | 8 h |
| May 25, 2026 | Team analytics | 6 h |
| Mar 4, 2026 | Secure file sharing | 5 h |
| Oct 17, 2025 | API integrations | 8 h |
| Sep 17, 2025 | Workflow automation | 3 h |
| Dec 17, 2025 | Team analytics | 6 h |
| Apr 12, 2026 | Secure file sharing | 5 h |
| Nov 22, 2025 | Secure file sharing | 3 h |
| Apr 24, 2026 | Workflow automation | 5 h |
| Total | 50 h | |
<div class="hp-pos">
<div class="hp-pos-scroll" tabindex="0" role="region" aria-label="Timesheet">
<table class="table table-sm mb-0">
<thead>
<tr>
<th scope="col">Date</th>
<th scope="col">Task</th>
<th scope="col" class="text-end">Hours</th>
</tr>
</thead>
<tbody>
<tr>
<td>Apr 26, 2026</td>
<td>Smart reporting</td>
<td class="text-end">1 h</td>
</tr>
<tr>
<td>Jun 2, 2026</td>
<td>Smart reporting</td>
<td class="text-end">8 h</td>
</tr>
<tr>
<td>May 25, 2026</td>
<td>Team analytics</td>
<td class="text-end">6 h</td>
</tr>
<tr>
<td>Mar 4, 2026</td>
<td>Secure file sharing</td>
<td class="text-end">5 h</td>
</tr>
<tr>
<td>Oct 17, 2025</td>
<td>API integrations</td>
<td class="text-end">8 h</td>
</tr>
<tr>
<td>Sep 17, 2025</td>
<td>Workflow automation</td>
<td class="text-end">3 h</td>
</tr>
<tr>
<td>Dec 17, 2025</td>
<td>Team analytics</td>
<td class="text-end">6 h</td>
</tr>
<tr>
<td>Apr 12, 2026</td>
<td>Secure file sharing</td>
<td class="text-end">5 h</td>
</tr>
<tr>
<td>Nov 22, 2025</td>
<td>Secure file sharing</td>
<td class="text-end">3 h</td>
</tr>
<tr>
<td>Apr 24, 2026</td>
<td>Workflow automation</td>
<td class="text-end">5 h</td>
</tr>
</tbody>
<tfoot class="sticky-bottom">
<tr class="table-light font-semibold">
<td colspan="2">Total</td>
<td class="text-end">50 h</td>
</tr>
</tfoot>
</table>
</div>
</div>