← The library

Shirune Studio

Marketing site for an architecture and interior design studio

Full template Members only Open the demo
Preview of the Shirune Studio template: a full-height hero over a photo of a glass roof, the heading “Thoughtful Design for a Refined Lifestyle” and a project card at the bottom right.

What it is

An architecture studio's site, complete: a full-height hero, an intro, services in tabs, client logos, projects on a horizontal rail, a review carousel, articles, an FAQ and a footer. One page, one HTML file.

The design follows that of a Webflow template, of which only the photos and the icons have been kept. All the code has been rewritten: the original came to 129 kB of minified CSS, jQuery, four Webflow bundles totalling 400 kB, a proprietary animation engine (IX2) and three GSAP files loaded from two domains — whose calling code is nowhere to be found in the export.

That's the whole point: this template isn't here to be admired, it's here to be read, broken and rebuilt.

What you change first

The colours — five lines

Right at the top of assets/css/style.css:

--green:       #506e61;  /* buttons, section pills */
--green-dark:  #3f574d;  /* the same green, darkened for hover */
--green-light: #8fb0a1;  /* the same green, lightened: focus and text over photos */
--paper-grey:  #f5f5f5;  /* the background of alternating sections */
--bark:        #2f2c25;  /* the headings on project cards */

One thing to grasp before touching anything else: there are three greens, not one. The solid green passes AA contrast on white and on the section grey (5.6:1 and 5.1:1), but it vanishes into a photo. That's why the focus ring and the states over photos use the lightened version (6.0:1 on a dark photo). If you change the green, change all three.

The name

Search for “Shirune” in index.html. No CSS class carries the brand name: a find-and-replace can't break anything.

The sizes

The type scale is declared once, then redeclared at every breakpoint. So a heading never gets its own media query: you change --h2 and the whole page follows.

The fifteen effects, and how they're built

All taken from the data of the original's animation engine — 97 events and 24 action lists pulled out of its store, then measured in the browser, not by eye. After deduplication 35 distinct events remain, grouped here into fifteen effects.

EffectOriginal settingsHow
Scroll reveal (22 blocks)opacity 0→1 and 100 px bottom to top, 1 s, outQuartIntersectionObserver, same values, firing 15% up from the bottom of the screen
Navigation bar entrance−100 px from the top, 1 s outQuart, 200 ms delaythe same in CSS, under html.js
Navigation bar scrimfrom 0 to 9% of the scroll: background transparent → 60% black, pill 20% black → 34% whitea --veil variable written on scroll, color-mix for the pill
Navigation bar that hides−100% going down, 0 coming back up, 500 ms inOutQuada class set on scroll, with an 8 px dead zone
Hero parallaxthe content drops by 50% over one screen of scrollingsame run, worked out on scroll
Project railsection pinned over 5 screens, the cards slide 1,700 pxscrollLeft driven by the progress, the run measured rather than hard-coded
Buttons (6)two labels rising 20 px, arrow +10 px, 400 ms inOutQuadtwo labels stacked in a clipping box, same durations
Project cards (7)the photo scales to 1.2×, 500 ms inOutCubicun transform, same values
Hero card arrowtwo arrows translated by 22 px, 300 mstwo <use> in a clipping box
Article cards (2)the photo scales to 1.2×, 500 ms inOutCubicsame
FAQ accordion (5)height 0 ↔ auto in 500 ms, the “+” turns 45°<details> native, transition on ::details-content
Service tabs (3)Webflow panels, a dot appears on the active tabthree native radio buttons and :has() — zero JavaScript
Mobile menuthe panel comes in from the right, 800 ms inOutCubicsame translation, plus the focus trap and the Escape key
Review carousel (4)Webflow slider, 500 ms slidescroll-snap native; the arrows become buttons
Text that lights upGSAP SplitText — the code isn't in the export, only the resting state can be observedreconstructed: the words light up one by one as you scroll

What you should know

  • No external requests. 43 requests on load, all of them local. The original loaded jQuery, four Webflow bundles, three GSAP files and two font families from four domains.
  • Scroll reveals can't hide the content. The hidden state only exists once the JavaScript has run. Checked by removing the <script>: 21 headings out of 23 stay visible, the last two being the unselected tab panels — which the CSS hides, and a click brings back. The original, meanwhile, set style="opacity:0" on each of the 22 animated blocks.
  • Zero inline styles, zero inline scripts. The template honours the site's strict security policy — the very one that style="opacity:0" breaks.
  • The trigger sits 15% up from the bottom of the screen, not at the first pixel as in the original: a block visibly enters instead of having finished before it was seen.
  • The project rail works without JavaScript. It's a real horizontal scroll container: you can swipe it and reach it from the keyboard. Driving it from the vertical scroll comes on top of that.
  • Accessibility: skip link, menu state announced, native FAQ, carousel position announced, a single visible focus style, decorations hidden from screen readers, animations and delays switched off if the system asks.
  • Responsive checked at 390, 1440 and 2560 px, on load and after scrolling all the way down, with no horizontal overflow.

What isn't perfect

Better said here than left for you to find out.

  • The text that lights up is a reconstruction. The original loads GSAP and SplitText but the code driving them appears nowhere in the export: only the resting state can be observed, words in pale grey. The effect was rebuilt from that.
  • The project rail doesn't slide the same distance. The original translates by 1,700 px whatever the width, which leaves a gap on the right on a large screen. Here the run is measured, so the last card arrives exactly at the edge. Beyond 2,550 px all six cards fit side by side: the section stops being pinned rather than holding the page for five screens.
  • The grey of the text that lights up has been darkened. The original's falls to 2.6:1 on the section background — unreadable for anyone not scrolling the page. Ours is at 4.6:1 and the effect is still visible.
  • Three sections differ by more than 1% below 992 px: the hero (+5.2% at 767 px, −2.4% at 479 px), the reviews (−4.0% at 479 px) and the footer (+2.6% at 479 px). All of it comes from where the copy wraps as the column narrows. Nothing overlaps.
  • The inner pages don't exist. The original is a multi-page site; all its links are brought back to anchors on the single page, and the contact button opens the mail client.
  • The photos come from the original template and several are generated images — their file names say so. The code is yours; for the visuals, check the licence or replace them. The three fonts are under the SIL Open Font Licence 1.1 and are redistributable.

Take it, open it, break it.

Shirune Studio is free. The full library — the other templates and the components — comes with the subscription, alongside the course.

Immediate access · No commitment · Cancel in one click