Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 26 additions & 40 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -113,21 +113,20 @@
}

/* ---------- the eye / aperture motif ----------
One reusable glyph: a cold, almond eye (unchanged register — cyan
sclera, sepia iris, dark-red pupil) with a rose-window's radial rim
— thin desaturated spoke segments, cathedral-glass architecture —
engraved into the white between iris and lid. Clipped to the sclera
(#eyeScleraClip) so the spokes read as detail *inside* the eye, never
as a separate flower silhouette bursting past it.
The clip-path is now a dilating circle rather than a sliding band: it
Restraint pass (owner feedback: the shipped rose-window hybrid read as
"too cheesy / too prominent" — LULL's pillar is restraint over
spectacle). One reusable glyph: a cold, almond eye (unchanged register
— cyan sclera, sepia iris, dark-red pupil). The rose-window rim from
the previous pass is pulled back hard: the twelve spokes are gone, and
the ring itself is now a hairline, near-invisible hint rather than a
visible ornament — a texture you'd have to look for, not a set piece.
The clip-path is a dilating circle rather than a sliding band: it
grows from the center, so opening reads as a pupil/aperture actually
dilating — pupil first, then iris, then the rose rim, then the white
— rather than an eyelid parting top-to-bottom. Nothing about
visibility of real *content* ever depends on this — it is purely
decorative, so a failure in the script below never breaks the page,
it just leaves the eye at its calm CSS default (--scroll-lid: 25%,
declared on :root) — which, at this geometry, already shows a full
pupil, iris, and rim: the calm state reads as an eye, not a bud. */
dilating — pupil first, then iris, then the white — rather than an
eyelid parting top-to-bottom. Nothing about visibility of real
*content* ever depends on this — it is purely decorative, so a
failure in the script below never breaks the page, it just leaves the
eye at its calm CSS default (--scroll-lid: 25%, declared on :root). */
.eye {
display: inline-block;
width: 46px;
Expand All @@ -140,17 +139,15 @@
clip-path: circle(var(--lid) at 50% 50%);
}
.eye-white { fill: none; stroke: var(--cyan); stroke-width: 2.5; opacity: .5; }
/* The rim: a thin ring plus twelve short spokes, cold and desaturated
(cyan/steel, not the rose-window prototype's amber) — a cathedral
window's structure quoted, not its warmth. Kept faint on purpose: it
is a texture the iris sits inside, never competing with it. */
.eye-rose-ring { fill: none; stroke: var(--faint); stroke-width: .7; opacity: .4; }
.eye-rose-spokes line { stroke: var(--cyan); stroke-width: .6; opacity: .28; }
/* A faint cold glow behind the iris — the one place this variant allows
itself an accent beyond stroke work. Literal hex, not var(--cyan),
/* What's left of the rose-window rim after the restraint pass: no
spokes, and the ring itself down to a hairline the eye barely admits
to having. */
.eye-rose-ring { fill: none; stroke: var(--faint); stroke-width: .4; opacity: .1; }
/* A faint cold glow behind the iris, cut back with everything else so it
reads as a trace of light, not a bloom. Literal hex, not var(--cyan),
because SVG gradient stops read the value at parse time; keep in sync
with --cyan (#7f9aa2) by hand if that ever changes. */
.eye-glow { opacity: .55; }
.eye-glow { opacity: .3; }
.eye-iris { fill: none; stroke: var(--sepia); stroke-width: 2; opacity: .6; }
.eye-pupil { fill: var(--red); opacity: .6; }

Expand All @@ -161,14 +158,17 @@
separate icons. Sits behind normal page content (z-index: -1); every
section's own background/text still paints over it normally, so it
reads most clearly wherever a section has no opaque background of its
own — which is exactly the phase-descent section this is built for. */
own — which is exactly the phase-descent section this is built for.
Restraint pass: sized and dimmed down hard from the shipped hybrid —
it should read as a faint, cold, watching presence you almost don't
notice until it opens, not a centerpiece. */
.scroll-eye {
position: fixed;
top: 50%; left: 50%;
transform: translate(-50%, -50%);
z-index: -1;
width: min(46vw, 26rem);
opacity: .14;
width: min(26vw, 14rem);
opacity: .08;
pointer-events: none;
}
.scroll-eye .eye { --lid: var(--scroll-lid); width: 100%; }
Expand Down Expand Up @@ -559,20 +559,6 @@
<ellipse class="eye-white" cx="50" cy="50" rx="45" ry="23"/>
<g clip-path="url(#eyeScleraClip)">
<circle class="eye-rose-ring" cx="50" cy="50" r="21"/>
<g class="eye-rose-spokes">
<line x1="50" y1="29" x2="50" y2="35"/>
<line x1="50" y1="29" x2="50" y2="35" transform="rotate(30 50 50)"/>
<line x1="50" y1="29" x2="50" y2="35" transform="rotate(60 50 50)"/>
<line x1="50" y1="29" x2="50" y2="35" transform="rotate(90 50 50)"/>
<line x1="50" y1="29" x2="50" y2="35" transform="rotate(120 50 50)"/>
<line x1="50" y1="29" x2="50" y2="35" transform="rotate(150 50 50)"/>
<line x1="50" y1="29" x2="50" y2="35" transform="rotate(180 50 50)"/>
<line x1="50" y1="29" x2="50" y2="35" transform="rotate(210 50 50)"/>
<line x1="50" y1="29" x2="50" y2="35" transform="rotate(240 50 50)"/>
<line x1="50" y1="29" x2="50" y2="35" transform="rotate(270 50 50)"/>
<line x1="50" y1="29" x2="50" y2="35" transform="rotate(300 50 50)"/>
<line x1="50" y1="29" x2="50" y2="35" transform="rotate(330 50 50)"/>
</g>
</g>
<circle class="eye-glow" cx="50" cy="50" r="17" fill="url(#eyeColdGlow)"/>
<circle class="eye-iris" cx="50" cy="50" r="14"/>
Expand Down