Skip to content

Prototype: rose-window eye (side-by-side variant, not a replacement) - #17

Draft
testtest126 wants to merge 1 commit into
mainfrom
prototype/rose-window-eye
Draft

Prototype: rose-window eye (side-by-side variant, not a replacement)#17
testtest126 wants to merge 1 commit into
mainfrom
prototype/rose-window-eye

Conversation

@testtest126

Copy link
Copy Markdown
Owner

Summary

A second, original eye variant on the landing page — not a replacement. The shipped eye stays exactly as it is; a new rose-window eye sits beside it so it can be compared scrolling, then kept or tossed. Draft — review prototype, not for merge as-is.

The insight from the moodboard brief: a gothic cathedral rose window is an eye — radial glowing petals standing in for an iris, a dark center for the pupil. Built entirely original: 12 hand-authored petal <path>s rotated in 30° increments around a center pupil circle, two radialGradient defs (pane glow + candle pinpoints), one feGaussianBlur for the candles. No traced or copied artwork — pure inline SVG/CSS.

How it shares the existing mechanic

Zero JavaScript changes. Both eyes read the exact same --scroll-lid custom property the existing throttled-requestAnimationFrame scroll listener already computes — only the CSS consuming that shared value differs:

.scroll-eye .eye { clip-path: inset(calc(50% - var(--lid)) 0); }          /* existing — eyelid band */
.rose-eye svg    { clip-path: circle(var(--scroll-lid) at 50% 50%); }     /* new — dilating circle */

An inset-band "eyelid" reveal suits the almond shape; a dilating circle suits a round window — a literal aperture-opening reading. Reduced-motion handling, the calm 25% default, and the fallback-if-JS-fails guarantee are all unchanged and apply to both automatically, since neither is new JS — just a second reader of one already-robust value.

Layout & palette

  • The existing eye shifts from dead-center to 32% from the left; the rose window sits at 68% — side by side on desktop, stacked vertically on mobile (< 40rem).
  • New, intentionally separate warm palette: --amber / --amber-deep / --amber-pale / --stone — kept apart from the existing cold cyan/sepia palette so the two read as genuinely different registers, not the same design in a different hue. Restrained: petals and candles are low-opacity, fading to near-black at the rim.
  • A small on-page prototype note (in the phase-descent intro) plus two tiny labels ("current" / "rose window (prototype)") make the comparison legible in the page itself, not just in screenshots — clearly marked prototype-only.

Verification

Headless Chrome + Playwright, both desktop (1280px) and mobile (390px):

position lid
top (closed) 2.00%
entering 8.06%
quarter 18.50%
mostway 29.46%
past (fully open) 42.00%
  • Both apertures open in lockstep at every position (confirmed visually — screenshots show the rose window's petals and pupil expanding exactly as the cold eye's eyelid band does)
  • Candle pinpoints confirmed rendering (subtle by design at normal settings — verified with a temporary debug boost, then reverted)
  • Mobile (390px): both eyes stack vertically, no overlap, zero console errors
  • Reduced-motion emulation: --scroll-lid holds fixed at 25% regardless of scroll position, for both eyes simultaneously
  • Zero console errors, zero failed requests throughout

🤖 Generated with Claude Code

A second, original eye variant on the landing page -- NOT a
replacement. The shipped almond/eyelid eye stays exactly as-is at 32%
from the left; a new rose-window eye sits at 68%, on the right, so
the owner can compare them scrolling side by side and keep or toss.

The insight from the brief: a gothic rose window IS an eye -- radial
glowing petals standing in for an iris, a dark center for the pupil.
Built entirely by hand as inline SVG/CSS (12 petal <path>s rotated in
30-degree increments around a center pupil circle, two radialGradient
defs for the pane glow and the candle pinpoints, a feGaussianBlur for
the candles) -- no traced or copied artwork.

Zero JavaScript changes. Both eyes read the exact same --scroll-lid
custom property the existing throttled-rAF scroll listener already
computes; only the CSS consuming that one shared value differs:
  .scroll-eye .eye  { clip-path: inset(calc(50% - var(--lid)) 0); }   (existing)
  .rose-eye svg     { clip-path: circle(var(--scroll-lid) at 50% 50%); }  (new)
An inset-band "eyelid" reveal for the almond shape; a dilating circle
for the rose window -- a literal aperture-opening reading that suits
a round window better. Reduced-motion handling, the calm 25% default,
and the fallback-if-JS-fails guarantee are unchanged and automatically
apply to both, since neither is new JS, just a second reader of one
already-robust value.

Palette is intentionally separate from the existing cold cyan/sepia
one -- new --amber/--amber-deep/--amber-pale/--stone variables, warm
and restrained, fading into near-black at the rim per the brief.

A small on-page prototype note (in the phase-descent intro) and two
tiny comparison labels ("current" / "rose window (prototype)") make
the A/B comparison legible in the page itself, not just in
screenshots -- clearly marked as prototype-only, meant to be deleted
along with whichever variant loses.

Verified: headless Chrome + Playwright. Desktop (1280px) and mobile
(390px, where the two eyes stack vertically instead of side by side)
screenshots at 5 and 3 scroll positions respectively confirm both
apertures open in lockstep from closed (2%) to fully open (42%).
Reduced-motion emulation confirms --scroll-lid holds at a fixed 25%
regardless of scroll position, for both eyes simultaneously. Zero
console errors, zero failed requests throughout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
testtest126 added a commit that referenced this pull request Jul 23, 2026
Replaces the single scroll-driven eye with a hybrid of the current cold
almond eye (cyan sclera, sepia iris, dark-red pupil — unchanged palette)
and the rose-window prototype's (#17) radial architecture: a thin,
desaturated ring + twelve spoke segments engraved into the white between
iris and lid, clipped to the sclera so the rim reads as texture inside
the eye rather than a separate flower shape. No warm/amber tones adopted.

The aperture switches from a sliding eyelid-band clip to a dilating
circle, so scrolling reads as a pupil/aperture actually dilating — pupil,
then iris, then rim, then white — while a real iris+pupil stay visible
at every openness, including the 25% reduced-motion rest state. Same
--scroll-lid mechanic and reduced-motion calm-hold; no JS changes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant