Skip to content

Commit 033eb5c

Browse files
committed
fix(site): the mark's intro is now the Admin UI's hello, complete
The port was partial: it had the roof draw and the bar dance, but not the parts that make the Admin UI intro read as the Admin UI intro — the settle from large (2.2s), the glow that swells and recedes (2s), and the two pulse rings radiating from the mark's centre (1.4s/1.6s, one after the other). All four now run verbatim from the shipped admin CSS — same keyframe values, same curve — and the logo still ends standing still. Rings and glow sit out prefers-reduced-motion.
1 parent 2485723 commit 033eb5c

1 file changed

Lines changed: 89 additions & 6 deletions

File tree

assets/site.css

Lines changed: 89 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,20 +1020,93 @@ section[data-num]::before {
10201020
}
10211021
}
10221022

1023+
/*
1024+
* The mark's entrance — the Admin UI's own hello, complete and verbatim: the mark
1025+
* settles from large, the roofline draws, each bar dances once, two pulse rings
1026+
* radiate outward while a glow swells and recedes — and then the logo simply STANDS
1027+
* in its designed shape. One-shot, pure CSS; it ends static because the logo is the
1028+
* brand, not a meter. (Admin's --spring and this file's --ease are the same curve.)
1029+
*/
10231030
.hero-mark {
1031+
position: relative;
10241032
width: 66px;
10251033
height: 53px;
10261034
color: var(--accent);
10271035
view-transition-name: sonn-mark;
10281036
filter: drop-shadow(0 0 16px rgb(74 222 128 / 40%));
1037+
animation:
1038+
mark-intro 2.2s var(--ease) backwards,
1039+
mark-glow 2s var(--ease) backwards;
1040+
}
1041+
1042+
/* The two pulse rings, radiating from the mark's centre one after the other. */
1043+
.hero-mark::before,
1044+
.hero-mark::after {
1045+
content: '';
1046+
position: absolute;
1047+
left: 50%;
1048+
top: 50%;
1049+
width: 96px;
1050+
height: 96px;
1051+
border: 1px solid rgb(74 222 128 / 60%);
1052+
border-radius: 50%;
1053+
transform: translate(-50%, -50%) scale(0);
1054+
opacity: 0;
1055+
pointer-events: none;
1056+
}
1057+
1058+
.hero-mark::before {
1059+
animation: mark-ring 1.4s var(--ease) 1s backwards;
1060+
}
1061+
1062+
.hero-mark::after {
1063+
animation: mark-ring 1.6s var(--ease) 1.2s backwards;
1064+
}
1065+
1066+
@keyframes mark-intro {
1067+
0% {
1068+
transform: scale(1.11);
1069+
}
1070+
60% {
1071+
transform: scale(1.04);
1072+
}
1073+
to {
1074+
transform: scale(1);
1075+
}
1076+
}
1077+
1078+
@keyframes mark-ring {
1079+
0% {
1080+
opacity: 0;
1081+
transform: translate(-50%, -50%) scale(0.2);
1082+
}
1083+
20% {
1084+
opacity: 0.8;
1085+
}
1086+
to {
1087+
opacity: 0;
1088+
transform: translate(-50%, -50%) scale(4);
1089+
}
1090+
}
1091+
1092+
@keyframes mark-glow {
1093+
0% {
1094+
filter: drop-shadow(0 0 0 rgb(74 222 128 / 0%));
1095+
}
1096+
25% {
1097+
filter: drop-shadow(0 0 12px rgb(74 222 128 / 30%));
1098+
}
1099+
55% {
1100+
filter: drop-shadow(0 0 28px rgb(74 222 128 / 50%));
1101+
}
1102+
80% {
1103+
filter: drop-shadow(0 0 56px rgb(74 222 128 / 85%));
1104+
}
1105+
to {
1106+
filter: drop-shadow(0 0 16px rgb(74 222 128 / 40%));
1107+
}
10291108
}
10301109

1031-
/*
1032-
* The mark's own entrance — ported from the Admin UI, where the product introduces
1033-
* itself the same way: the roofline draws, each bar dances once (overshoot, settle),
1034-
* and then the logo simply STANDS in its designed shape. One-shot, pure CSS; it ends
1035-
* static because the logo is the brand, not a meter.
1036-
*/
10371110
.mark-roof {
10381111
stroke-dasharray: 96;
10391112
stroke-dashoffset: 96;
@@ -3346,6 +3419,16 @@ footer {
33463419
}
33473420

33483421
/* The mark, the headline and the chain stand finished instead of performing. */
3422+
.hero-mark {
3423+
animation: none;
3424+
}
3425+
3426+
.hero-mark::before,
3427+
.hero-mark::after {
3428+
animation: none;
3429+
opacity: 0;
3430+
}
3431+
33493432
.mark-roof {
33503433
animation: none;
33513434
stroke-dashoffset: 0;

0 commit comments

Comments
 (0)