01 / concept
An archive that still has soil under its nails.
The voice is deliberately close and specific. Instead of treating botanical knowledge as a lifestyle backdrop, the collection records a plant’s gathering place, household use, and limits. The details — Lake Sognsvann rain, the first hard frost, the pine reading table — give the fictional archive a life beyond its layout.
The page moves from an expansive field-facing cover to the order of a shelf, then to one close study, then to the cabinet’s rules. That change in scale keeps the site from becoming a stack of identical editorial panels.
02 / signature
Five plants, five depths.
Each hero plant is an inline SVG made from loose stem and leaf paths. The SVGs are intentionally independent: their individual drift runs inside a parent layer, while the parent is translated by real pointer and scroll values. The far yarrow barely moves; the front sage responds nearly six times as much.
The second botanical gesture is a field-study SVG. Every visible stroke begins with its dash offset equal to its dash length. Once its section is genuinely in view, an IntersectionObserver adds one class: stem first, then divisions, then flowers over a patient 2.45-second sequence. A no-script rule and an observer fallback leave the finished drawing visible if the enhancement cannot run.
For the final pass, the shelf became a handling desk rather than a list to skim. Each native button opens one changing accession note and makes its own pressed-ink imprint appear. Selecting the same label again — or returning the note — restores the intentionally quiet unopened state.
Drawing reveal — exact CSS from the site
.draw-line {
fill: none;
stroke: var(--ink);
stroke-width: 2.15;
stroke-linecap: round;
stroke-linejoin: round;
stroke-dasharray: 1800;
stroke-dashoffset: 1800;
transition: stroke-dashoffset 2.45s var(--ease-patient);
}
.draw-line:nth-child(1) { --draw-delay: 0s; }
.draw-line:nth-child(2), .draw-line:nth-child(3) { --draw-delay: .2s; }
.draw-line:nth-child(n + 7) { --draw-delay: 1.12s; }
.line-study.is-drawn .draw-line {
stroke-dashoffset: 0;
transition-delay: var(--draw-delay, 0s);
}
Observer — exact JavaScript from the site
const revealStudy = () => lineStudy.classList.add("is-drawn");
if ("IntersectionObserver" in window) {
const studyObserver = new IntersectionObserver((entries, observer) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
revealStudy();
observer.unobserve(entry.target);
}
});
}, { threshold: .12 });
studyObserver.observe(lineStudy);
} else {
revealStudy();
}
Handling desk state — exact JavaScript from the site
function paintReading(key) {
const isOpen = Boolean(key);
const reading = isOpen ? specimenNotes[key] : emptyReading;
openSpecimen = isOpen ? key : null;
specimenDesk.classList.toggle("is-active", isOpen);
deskTitle.textContent = reading.title;
deskCopy.textContent = reading.copy;
deskClear.disabled = !isOpen;
imprints.forEach((imprint) =>
imprint.classList.toggle("is-current", imprint.dataset.imprint === openSpecimen)
);
}
The reduced-motion media query makes the complete drawing visible immediately and clears parallax transforms. The hero observer also pauses the SVG drift and pointer work as soon as the hero is off-screen or the tab is hidden.
03 / material
Paper, leaf, ink, petal.
The palette avoids bright “wellness” green. Its sage has the softened quality of dried leaf; the rose works as an old label and small botanical accent; the brown is kept dark enough to carry the body copy.
Display and body
EB Garamond, with Latin binomials set in its true italic.
Archive labels
DM MONO / ACCESSION 041
04.08.82 / RØYSE / PAGE 67
04 / revision
Iteration log.
Pass 1 — correctness
- Added no-script and unsupported-
IntersectionObserverfallbacks so the field study never remains blank; reduced its drawing reveal from 3.6s to 2.8s. - Paused hero SVG drift and pointer animation when the hero leaves the viewport or the document is hidden, and removed transforms when reduced motion is requested.
- Made the 390px and 768px layouts more resilient: the guide stacks before its former 768px grid pinch, narrow headers wrap safely, and navigation/footer links now have 44px minimum targets.
- Changed low-contrast rose metadata, hover text, selection, and focus treatment to an accessible darker rose while retaining the original dried-rose decorative colour.
- Known limitation: the in-app browser preview was unavailable for this pass, so responsive rendering was checked through source and layout constraints rather than live screenshots.
Pass 2 — design depth
- The middle was too safely modular. The opening now has a bleeding pressed-plate drawing, shelf entries step gently across the page, and the custody cards form an overlapping, diagonal cabinet rather than a three-up row.
- Editorial type softened after the hero. A shared spacing scale now drives the large sections; display faces have tighter, deliberately balanced measures, stronger scale changes, and a less uniform vertical rhythm.
- The field study gave away the whole plant at once. Its stem, divisions, and flower heads now draw in botanical order with staged delays, while the five-depth hero drift uses the same patient custom easing.
Pass 3 — complexify
- The open shelf still asked too little of a curious visitor. Each specimen is now a real, keyboard-operable label that pulls a changing handling note onto a paper-textured desk. A distinct pressed-ink drawing, accession detail, and per-visit consultation count reward opening more than one.
- An interactive collection needs a dignified resting state. The desk begins — and can be returned — as an “unopened” file rather than as a blank void. Pressing an open label a second time closes it, while the return control moves focus safely back to the desk.
- The finish needed to be invisible. JavaScript removes the no-script class in the document head so the line study does not flash complete before it is observed; social metadata now names the collection accurately. Syntax, focus, reduced-motion, and layout-constraint checks were repeated; the in-app browser preview remained unavailable for a live console and screenshot pass.