/
KST
We are a web studio turning abrand's philosophy into immersivedigital experiences. We care asmuch about the process.
Email:info@alephstudio.art
Interactive

Inner Sleeve

DESCRIPTION

Editorial Web Journal Read from Inside a Folded Paper Box

DURATION

Sep 2026

MY ROLE

  • Reference analysis, world-building, and planning and writing of the four English articles.
  • The entire frontend — five-fold 3D reader, scroll engine, perspective handling and column switching.
  • Generated asset pipeline in Python Pillow.
  • Twelve UI studies, the ruler UI and responsive layout.
  • Playwright verification and Vercel deployment.

TECH

Frontend

Vite · Vanilla JavaScript · CSS 3D Transforms

Creative

GSAP 3 (Draggable · InertiaPlugin) · Generated Collage Assets

Tooling

Python Pillow · Playwright

Ops

Vercel

Project Purpose

"The writing hidden on the inside of the box." INNER SLEEVE is a self-initiated web journal, published by a content studio of the same name inside Halden Paper Mill, a fictional paper company. Vol.02, "Static", carries four English long-reads — Reading Glasses, an interview with a comedy duo; Amethyst, a ceramicist; Dentures, a retired dentist; Lucky Bonsai, a bonsai club — and every one of them is read as if it were printed on the inside of a folded paper box. The starting point was the box reader of a Taiwanese web magazine, taken apart with frame captures at each scroll position and a reverse-read of its bundle, then rebuilt on the same structural principle with its own world, its own English content and an entirely different UI. There is no Three.js and no canvas; the sense of space comes from the DOM and CSS 3D alone.

Scope

  • · Concept, Fictional World & Four English Long-form Articles
  • · Five-Fold CSS 3D Box Reader & Hijacked Smooth Scroll
  • · Generated Collage Asset Pipeline in Python Pillow
  • · Twelve UI Studies, Ruler UI, Responsive Layout & Playwright Verification

Key Technical Features

Five-Fold Box Renderer

  • · The same article DOM is cloned five times. The centre face stays flat while the top, bottom, left and right faces are folded away at rotateX / rotateY ±90°, and the five are assembled into a box under a 20vw perspective — an open carton seen from the inside.
  • · The side walls are mirrored with scaleX(-1) and dropped to 5% opacity, so they read as text showing through the paper rather than a second copy. All five faces receive the same translateY on scroll, which is why a sentence running off the centre face continues across the fold instead of breaking at it.

Hijacked Smooth Scroll without a Library

  • · No scroll library. The body is forced to the article height plus one viewport so the native scrollbar survives, and a requestAnimationFrame loop chases scrollY with a lerp of 0.1 and writes the result into the transforms of all five faces — about thirty lines in total.
  • · The same loop derives reading progress and drives the READ % track in the top-right corner. Body height is re-measured after fonts and images load and on every resize, so the scroll range never drifts away from the content.

Mouse-driven Perspective Origin

  • · Pointer position is normalised to a 0.1–0.9 range and eased with a lerp of 0.08 before being written to perspective-origin, which travels from 33% / 35% at the top-left to 68% / 68% at the bottom-right. The box leans with the hand rather than snapping to it.
  • · Its easing coefficient is deliberately different from the scroll lerp, so the two motions never lock into step — the page follows the wheel at one speed and the viewpoint follows the mouse at another.

Client-side Column Switching

  • · The four articles live as JSON and a render function builds their HTML. Switching columns fades the box out with GSAP, resets scroll to zero, remounts all five faces with the new article and fades back in.
  • · The ruler tabs, the arrow buttons and the keyboard all share one goTo(), which locks while a transition is running, so a second click mid-fade cannot leave two articles on screen at once.

Generated Asset Pipeline

  • · Every image is generated in Python Pillow rather than sourced: four cover collages (a magnifier, an amethyst, dentures, a bonsai), eight documentary photographs, ten screentone fragments, two pixel cursors and the logo.
  • · Torn-paper edges, drop shadows, halftone, film grain and duotone are written as composable functions, and every render is seeded, so the whole set can be regenerated identically after any change.

Toggleable Layers

  • · A puzzle overlay whose pieces are nudged on hover on desktop and dragged with Draggable + InertiaPlugin on mobile, a custom cursor, and a 3D cover card that rotates toward the mouse and folds shut on click.
  • · Three UI versions — the original-style header, a floating dock and the full-width ruler — are kept in the markup behind display-tag comment blocks, so each can be switched on or off without touching the code.

Design Points

Box as Page

A white box on grey paper. There is no header and no hero — the page opens on an object label and the article title, the way a scanned object arrives, and the reader is already inside the carton.

Full-width Tab Ruler

Twelve UI studies were drawn before the ruler was chosen — four layout changes, four material changes, four concept derivations. The one that stayed puts the wordmark, four tabs, links and arrows on a single line, with the current column marked by a heavy underline.

Type as Texture

The mirrored text on the side walls and the body copy sliding down the floor are texture, not content. Inter Tight carries the articles and JetBrains Mono the labels and the progress track.

Editorial Blocks

Five block types cover all four articles: a single-column body, a two-column body with the lead on the left, an arrowhead pull quote, a transcript with the speaker set on the left, and a two-photograph block.

Gallery

Click to enlarge

FAQ

How is a 3D interactive website different from a regular one?

It runs Three.js and WebGL in the browser, so objects move and respond to the cursor and scroll. A regular site organises information; an interactive one delivers the brand as an experience. It pays off most in fashion, beauty, architecture and exhibitions.

How long does a website take to build?

Seven days for a landing page, fifteen for a five-page company site, thirty for a ten-page 3D interactive build. The clock starts when your material arrives and shifts with design feedback. If a date is fixed, say so at the first call and feasibility is checked first.

Are hosting, domain and server costs separate?

SSL certificate, hosting setup and database provisioning are included at no cost. You only pay for the domain, about ₩20,000–30,000 a year. Accounts are created in your name from the start, so nothing lapses when staff change.

Can I edit the content myself after launch?

An admin page is built alongside the site, so text, images and posts can be edited without development knowledge, and a manual is handed over at delivery. Only structural changes or new features need development.

Next Project

Atelier Varga

Editorial

Keep scrolling