
00 // the frame
A site you
look through.
How smaranalva.com was made: one mark as the architecture, two colours, three typefaces, and a lot of small decisions about motion. Scroll, drag, poke at it.
The mark is the architecture
01 // geometryThe 2023 SMAL mark is a box with two notches joined by a slope, turned on itself. Written as a few numbers, the same shape is the logo, a frame around the whole screen, or anything between. Move it.
before it, there was a square: SM over AL, in a box. It signs off the about page.
Paper and window
02 // layoutOne rule does the layout. The work lives in the window; everything that isn't the work (the name, the menu, the brands, the contact) lives on the paper, tucked into the notches. Drag the corner and watch the paper keep its things.
smaranalvawork · photos · abouthello@smaranalva.comThree faces, three jobs
03 // typeFilms, motion, 3D.
The work speaks first. Words are short, and they say what a thing is, who it was for, and one true detail.
012 // since 2014 // mangalore → everywhere
tight tracking on the display (−4.5%), loose on the mono, nothing in between. type here; it's live.
Two colours
04 // paletteeverything else is one of these at an opacity. the colour comes from the work. click to copy.
Nothing moves without a reason
05 // motionThings arrive fast and settle slow. The mark opens because you scrolled; the window draws in a breath when you change pages; a tile plays when you're near it. One curve does most of it.
Every film introduces itself
06 // media- 500+finished pieces, catalogued off six drives
- 5moments scored for detail; the liveliest becomes the poster
- 6 sa seamless loop, silent, cut from that moment
- −16LUFS, every film, so nothing jumps when you swipe
- 1voice at a time: any film with sound pauses the rest
Small things you can hold
07 // interactionpull the tab ←
the reels drawer: pulled in from the edge, never in the way
the art side, as a terminal session: it types itself out
The parts nobody sees
08 // craft- 100accessibility, best practices, SEO (Lighthouse, mobile)
- 0frames where the frame disappears between pages
- 9:16reels, never cropped; posters and loops lazy-loaded around you
- 10devices and engines it was tested on, iOS Safari included
Take it apart
09 // kit- frame-geometry.jsthe shape, as code · MIT
- tokens.csscolours, faces, curves
- smaranalva-mark.svgthe mark
- smal-square.pngthe first mark
export function framePath({ x0, y0, x1, y1, nh, a, b, r, s }) {
const w = x1 - x0, yT = y0 + nh, yB = y1 - nh;
const xa = x0 + w * a, xb = x0 + w * b, xc = x1 - w * a, xd = x1 - w * b;
const dx = xb - xa, L = Math.hypot(dx, nh), ux = dx / L, uy = nh / L, S = Math.min(s, dx * .3, nh * .45);
const f = (n) => Math.round(n * 10) / 10;
return `M${f(x0)},${f(yT + r)}Q${f(x0)},${f(yT)} ${f(x0 + r)},${f(yT)}L${f(xa - S)},${f(yT)}Q${f(xa)},${f(yT)} ${f(xa + S * ux)},${f(yT - S * uy)}` +
`L${f(xb - S * ux)},${f(y0 + S * uy)}Q${f(xb)},${f(y0)} ${f(xb + S)},${f(y0)}L${f(x1 - r)},${f(y0)}Q${f(x1)},${f(y0)} ${f(x1)},${f(y0 + r)}` +
`L${f(x1)},${f(yB - r)}Q${f(x1)},${f(yB)} ${f(x1 - r)},${f(yB)}L${f(xc + S)},${f(yB)}Q${f(xc)},${f(yB)} ${f(xc - S * ux)},${f(yB + S * uy)}` +
`L${f(xd + S * ux)},${f(y1 - S * uy)}Q${f(xd)},${f(y1)} ${f(xd - S)},${f(y1)}L${f(x0 + r)},${f(y1)}Q${f(x0)},${f(y1)} ${f(x0)},${f(y1 - r)}Z`;
}