✶ welcome traveler ✶ site under gentle construction ✶ last updated: aug 13, 2026 ✶ new art coming soon ✶

[ field guide ]

design system

The tokens, primitives, and patterns that build the realm. One world, one language.

{ color & surfaces }

Amber structures, cream informs, green invites, orange warns. Components use semantic roles, never raw hexes. The palette lives in globals.css; these swatches read the live tokens.

--surface-pagepage behind wallpaper
--surface-paneldefault panel body
--surface-panel-altelevated panel
--surface-insetrecessed wells
--surface-stripamber title strips
--surface-interactivehover fills
--text-primarybody cream
--text-secondarymuted cream
--text-headingheadings
--interactive-linklinks
--accent-warmwarnings, sparse
--border-structuralframes, borders
--border-stronghover amber
--border-subtlehairlines
--status-successplaying, success
--status-warningpaused, warning
--border-focusfocus rings
--text-inversetext on amber

{ typography }

Five fonts, five jobs. Cinzel Decorative is only the site title. Cinzel heads panels and pages. Cormorant navigates and labels. Lora reads. Mystery Quest whispers.

Cinzel Decorative - site title only

Cinzel - headings, panel strips, page titles

Cormorant - nav, labels, metadata

Lora - body prose. The quiet workhorse at 17px, 1.7 line height, comfortable in long reads and short captions alike.

Mystery Quest - whisper lines, track titles, sign-offs


scalemicro .7meta .75caption .85base 1.0md 1.1lg 1.25

{ panels }

The specimen box is the core unit. Amber strip labels what is inside. Default moss for side rails, alt moss for primary content. InsetPanel is the recessed well you look INTO, not AT.

[ default panel ]

Deep moss body. Side rails, widgets, secondary content.

[ alt panel ]

Lighter moss. Primary page content steps forward.

[ with right slot ]

meta

The strip carries a small metadata or action on the right.

InsetPanel: cassette windows, code, inputs. One level of recess is the whole trick.

{ buttons & links }

Amber fill is the main action, one per panel. Ghost is the secondary. Links navigate and glow green; buttons act. IconButtons always carry an aria-label.



{ badges & metadata }

Chips are the 90s web-badge look. Pills label expeditions and topics. Metadata rows orient the reader quietly, in uppercase Cormorant.

[neocities][next.js]frontendvisual design

infrafeb 4, 2026expedition #04

{ dividers & callouts }

Structural dividers split major regions, subtle ones separate dense content, the glyph is for storybook moments. Callouts hold the one sentence to remember; warning is the loudest voice in the realm.



{ media frames }

Images live in amber frames on deep moss. The corner tag is for a small decorative gif; captions stay quiet and italic.

A fox crossing a snowy log bridge in a dark winter forest
a fox crossing the old log bridge

{ form controls }

Every control has a visible label bound with htmlFor. Inputs sit in inset wells. Errors are described with aria-describedby and announced. Radios take the amber accent.

what should the realm call you?

{ states }

Empty, loading, error, and disabled are designed, not accidental. The EmptyState carries art and a whisper; the words stay factual.

~ watch your step! ~

this area is under construction. check back soon.

loading tracks…

{ realm radio controls }

One transport language across widget, deck, dock, bar, and sheet. Play is always amber. Status is text plus LED, never LED alone. Demo is interactive but does not touch the real audio engine.

status row

paused

transport - sm (widget chrome, grows on touch)

transport - lg (deck / sheet)

volume (with mute toggle)

{ motion & access }

Animation is sparse: menu disclosure, player state, loading, small confirmations. Everything freezes under prefers-reduced-motion. Tab anywhere on this page: the green ring always shows where you are.

then me
focus: 2px green ringmotion: 120/250ms ease-realm

{ asset library: cabinet parts }

The notebook + cabinet hybrid family (design-kitchen/ASSET-SYSTEM-PLAN.md). CabinetIndex frames a set of DrawerFaces; every drawer shows number plate, label plate, caption, lamp, and decorative handle.

[ cabinet index ]

CabinetIndex (no label, no screws) + DrawerFace
MR-001FW-017StatusLabel (accession numbers)

{ asset library: paper surfaces }

Physical paper: --surface-paper with dark ink, token-controlled texture. PaperSheet variants cover plain, aged, ruled, graph, log; stack/fold/torn are modifiers.

plain paper, stacked.

PaperSheet stack

spiral notebook page, ruled.

NotebookSheet (ruled + spiral)

engineering graph sheet.

PaperSheet variant="graph"

log sheet with red margin.

PaperSheet variant="log"

aged, torn edges.

PaperSheet aged torn
index card 001-012 · filed: samples

catalog index card with metadata strip.

IndexCard meta + ruled

recipe card, pre-stained.

RecipeCardSurface (stained)

{ asset library: tabs & folders }

FolderTab positions interlock like a folder row. Active is manila with ✶. Local cabinet navigation only.

resultsnotes
FolderTab left(active) / center / right

{ asset library: labels & stamps }

Stamp text stays editable (component, not baked). Baked wordmarks ship as SVGs. Tones map to status colors.

testedsamplefailedwip2026-07-19
Stamp success / amber / warning / sm + StampDate
do not erase stampproperty of mossyrealm stampofficial business stamp
stamps/do-not-erase, property-of-mossyrealm, official-business.svg
handwritten check markcross-out markregistration marksmeasurement arrows
check-mark / cross-out / registration / measure-arrow.svg

{ asset library: utility icons }

One sprite, one MossyIcon component, currentColor everywhere. Late-90s utility style at 16/20/24px.

cabin
profile
status
mail
learnings
note
gallery
guestbook
rabbit-hole
external
folder
file
floppy
cdrom
terminal
book
music
cooking
weather
trail
telescope
archive
collected
changelog
sitemap
recipe
sizes 16 / 20 / 24

{ asset library: technical icons }

The workbench set: machines, instruments, and honest outcomes.

workbench
experiment
hardware
gamepad
gear
rocket
drone
target
network
packet
pipeline
build
test
warning
success
failure
radio
signal

{ asset library: stickers }

Flat SVG stickers in stickers/. Frog family, tiny objects, word banners. Upgraded painterly versions are briefed in design-kitchen/IMAGE-ASSET-BRIEFS.md.

frog-deskfrog-desk
frog-wrenchfrog-wrench
frog-notebookfrog-notebook
frog-terminalfrog-terminal
frog-folderfrog-folder
frog-radiofrog-radio
tiny-rockettiny-rocket
tiny-crttiny-crt
tiny-beige-pctiny-beige-pc
tiny-gamepadtiny-gamepad
tiny-cassettetiny-cassette
tiny-floppytiny-floppy
tiny-gearstiny-gears
tiny-satellitetiny-satellite
tiny-signtiny-sign
tiny-mugtiny-mug
tiny-cabletiny-cable
sticker-built-insteadsticker-works-on-my-machinesticker-graph-wrongsticker-projects-folders
word stickers (baked banners)

{ asset library: section marks }

One frame, four glyphs. The emblem for each wing, in the component and as static SVGs in section-marks/.

cabin (house + lamp)
fieldwork (caliper + ticks)
crossroads (signpost)
archives (drawer)

{ asset library: textures }

Tiny seamless tiles in textures/, layered via CSS with token-controlled opacity. Never full-screen, never blocking, always static.

paper-fiber.svg
dust-specks.svg
photocopy-noise.svg
cabinet-patina.svg
ink-imperfect.svg
smudge.svg
edge-wear.svg
print-banding.svg

{ asset library: interactive states }

Files report state by shape and mark, never color alone: hovered file slides 2px, active file stays open with amber plate and ►, focus uses the global green ring. Tab through the row.

DrawerFace default / active / lamp

{ asset library: attachments }

Small paper hardware, absolutely positioned inside relative parents. All decorative.

Paperclip
TapeStrip
Pushpin
Staple
✶ the forest remembers → take your time → all paths lead onward ✶
[neocities][next.js][best viewed with ☼]
● visitors: ------♥ MossyRealm 2026

☆ thanks for visiting! come back soon ☆