diff --git a/android/app/src/main/res/drawable-land-hdpi/splash.png b/android/app/src/main/res/drawable-land-hdpi/splash.png
index 954b5b8..d3e4bdb 100644
Binary files a/android/app/src/main/res/drawable-land-hdpi/splash.png and b/android/app/src/main/res/drawable-land-hdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-land-ldpi/splash.png b/android/app/src/main/res/drawable-land-ldpi/splash.png
index 44955d2..1116891 100644
Binary files a/android/app/src/main/res/drawable-land-ldpi/splash.png and b/android/app/src/main/res/drawable-land-ldpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-land-mdpi/splash.png b/android/app/src/main/res/drawable-land-mdpi/splash.png
index c939fe0..04a4595 100644
Binary files a/android/app/src/main/res/drawable-land-mdpi/splash.png and b/android/app/src/main/res/drawable-land-mdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-land-night-hdpi/splash.png b/android/app/src/main/res/drawable-land-night-hdpi/splash.png
index ded167b..f318fa0 100644
Binary files a/android/app/src/main/res/drawable-land-night-hdpi/splash.png and b/android/app/src/main/res/drawable-land-night-hdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-land-night-ldpi/splash.png b/android/app/src/main/res/drawable-land-night-ldpi/splash.png
index 05ee2df..e232e9a 100644
Binary files a/android/app/src/main/res/drawable-land-night-ldpi/splash.png and b/android/app/src/main/res/drawable-land-night-ldpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-land-night-mdpi/splash.png b/android/app/src/main/res/drawable-land-night-mdpi/splash.png
index e3d702d..7a20737 100644
Binary files a/android/app/src/main/res/drawable-land-night-mdpi/splash.png and b/android/app/src/main/res/drawable-land-night-mdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-land-night-xhdpi/splash.png b/android/app/src/main/res/drawable-land-night-xhdpi/splash.png
index 7094f7c..30dc03c 100644
Binary files a/android/app/src/main/res/drawable-land-night-xhdpi/splash.png and b/android/app/src/main/res/drawable-land-night-xhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png b/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png
index b71451f..db71bd6 100644
Binary files a/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png and b/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png b/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png
index abd8b3b..77ebded 100644
Binary files a/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png and b/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-land-xhdpi/splash.png b/android/app/src/main/res/drawable-land-xhdpi/splash.png
index 3da2d80..40b267d 100644
Binary files a/android/app/src/main/res/drawable-land-xhdpi/splash.png and b/android/app/src/main/res/drawable-land-xhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-land-xxhdpi/splash.png b/android/app/src/main/res/drawable-land-xxhdpi/splash.png
index a9df37f..e2b6c01 100644
Binary files a/android/app/src/main/res/drawable-land-xxhdpi/splash.png and b/android/app/src/main/res/drawable-land-xxhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-land-xxxhdpi/splash.png b/android/app/src/main/res/drawable-land-xxxhdpi/splash.png
index a37e9cc..7b89145 100644
Binary files a/android/app/src/main/res/drawable-land-xxxhdpi/splash.png and b/android/app/src/main/res/drawable-land-xxxhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-night/splash.png b/android/app/src/main/res/drawable-night/splash.png
index 05ee2df..e232e9a 100644
Binary files a/android/app/src/main/res/drawable-night/splash.png and b/android/app/src/main/res/drawable-night/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-hdpi/splash.png b/android/app/src/main/res/drawable-port-hdpi/splash.png
index 88ab407..f236559 100644
Binary files a/android/app/src/main/res/drawable-port-hdpi/splash.png and b/android/app/src/main/res/drawable-port-hdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-ldpi/splash.png b/android/app/src/main/res/drawable-port-ldpi/splash.png
index bdd7d08..00cb143 100644
Binary files a/android/app/src/main/res/drawable-port-ldpi/splash.png and b/android/app/src/main/res/drawable-port-ldpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-mdpi/splash.png b/android/app/src/main/res/drawable-port-mdpi/splash.png
index 20639da..208c32b 100644
Binary files a/android/app/src/main/res/drawable-port-mdpi/splash.png and b/android/app/src/main/res/drawable-port-mdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-night-hdpi/splash.png b/android/app/src/main/res/drawable-port-night-hdpi/splash.png
index 9b1e18d..fe41766 100644
Binary files a/android/app/src/main/res/drawable-port-night-hdpi/splash.png and b/android/app/src/main/res/drawable-port-night-hdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-night-ldpi/splash.png b/android/app/src/main/res/drawable-port-night-ldpi/splash.png
index a831bb1..82c7d76 100644
Binary files a/android/app/src/main/res/drawable-port-night-ldpi/splash.png and b/android/app/src/main/res/drawable-port-night-ldpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-night-mdpi/splash.png b/android/app/src/main/res/drawable-port-night-mdpi/splash.png
index 3d40a82..27e24b7 100644
Binary files a/android/app/src/main/res/drawable-port-night-mdpi/splash.png and b/android/app/src/main/res/drawable-port-night-mdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-night-xhdpi/splash.png b/android/app/src/main/res/drawable-port-night-xhdpi/splash.png
index db67778..5d9763b 100644
Binary files a/android/app/src/main/res/drawable-port-night-xhdpi/splash.png and b/android/app/src/main/res/drawable-port-night-xhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png b/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png
index 708ae50..5faba73 100644
Binary files a/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png and b/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png b/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png
index de18bc6..5322ca7 100644
Binary files a/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png and b/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-xhdpi/splash.png b/android/app/src/main/res/drawable-port-xhdpi/splash.png
index ba84bf2..ea1a36f 100644
Binary files a/android/app/src/main/res/drawable-port-xhdpi/splash.png and b/android/app/src/main/res/drawable-port-xhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-xxhdpi/splash.png b/android/app/src/main/res/drawable-port-xxhdpi/splash.png
index 44644ad..7f5b55d 100644
Binary files a/android/app/src/main/res/drawable-port-xxhdpi/splash.png and b/android/app/src/main/res/drawable-port-xxhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-port-xxxhdpi/splash.png b/android/app/src/main/res/drawable-port-xxxhdpi/splash.png
index 6d033ae..3feaa9e 100644
Binary files a/android/app/src/main/res/drawable-port-xxxhdpi/splash.png and b/android/app/src/main/res/drawable-port-xxxhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable/splash.png b/android/app/src/main/res/drawable/splash.png
index 20639da..208c32b 100644
Binary files a/android/app/src/main/res/drawable/splash.png and b/android/app/src/main/res/drawable/splash.png differ
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
index 5d5cc3a..e0e6d3a 100644
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
index b5299cf..b95027e 100644
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
index 60b3a2c..be54a0a 100644
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/android/app/src/main/res/mipmap-ldpi/ic_launcher.png b/android/app/src/main/res/mipmap-ldpi/ic_launcher.png
index eadebf3..813ce36 100644
Binary files a/android/app/src/main/res/mipmap-ldpi/ic_launcher.png and b/android/app/src/main/res/mipmap-ldpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png
index 4d70d41..e86ca10 100644
Binary files a/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png and b/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png
index e5d1a75..146b7a0 100644
Binary files a/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png and b/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
index d5cdace..fb1810d 100644
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
index 91d7fe5..43fb134 100644
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
index 56aacc1..d80bca7 100644
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index f49356d..8069613 100644
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
index 4ceb225..39ac4ab 100644
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
index 4924a01..8958e61 100644
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 9d5e9c5..10d9bf2 100644
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
index 3623a87..28fb9e8 100644
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
index 19e02c1..d339d95 100644
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 5bded3d..7e4a1d0 100644
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
index bcd52f5..40877ef 100644
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
index 205cc1d..849eece 100644
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/index.html b/index.html
index 7aa927b..e49cba1 100644
--- a/index.html
+++ b/index.html
@@ -16,8 +16,9 @@
-
-
+
+
diff --git a/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png
index 26733dc..99b1359 100644
Binary files a/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png and b/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png differ
diff --git a/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany-dark.png b/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany-dark.png
index 60ff7b2..b2b57e3 100644
Binary files a/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany-dark.png and b/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany-dark.png differ
diff --git a/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany.png b/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany.png
index 9972f58..5a5d2d2 100644
Binary files a/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany.png and b/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany.png differ
diff --git a/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany-dark.png b/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany-dark.png
index 60ff7b2..b2b57e3 100644
Binary files a/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany-dark.png and b/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany-dark.png differ
diff --git a/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany.png b/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany.png
index 9972f58..5a5d2d2 100644
Binary files a/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany.png and b/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany.png differ
diff --git a/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany-dark.png b/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany-dark.png
index 60ff7b2..b2b57e3 100644
Binary files a/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany-dark.png and b/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany-dark.png differ
diff --git a/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany.png b/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany.png
index 9972f58..5a5d2d2 100644
Binary files a/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany.png and b/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany.png differ
diff --git a/resources/icon.png b/resources/icon.png
index 805558d..510d87d 100644
Binary files a/resources/icon.png and b/resources/icon.png differ
diff --git a/resources/splash-dark.png b/resources/splash-dark.png
index a57cfb7..ed80283 100644
Binary files a/resources/splash-dark.png and b/resources/splash-dark.png differ
diff --git a/resources/splash.png b/resources/splash.png
index ff06fd8..401a70e 100644
Binary files a/resources/splash.png and b/resources/splash.png differ
diff --git a/scripts/generate-icons.mjs b/scripts/generate-icons.mjs
index d786b6e..e74c677 100644
--- a/scripts/generate-icons.mjs
+++ b/scripts/generate-icons.mjs
@@ -8,7 +8,7 @@
// which consumes these three files and installs the full iOS + Android
// size matrix into the native projects.
-import { GlobalFonts, createCanvas } from '@napi-rs/canvas';
+import { createCanvas } from '@napi-rs/canvas';
import { writeFileSync } from 'node:fs';
import { join, dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
@@ -22,12 +22,26 @@ const VIOLET = '#6b3cff';
const CREAM = '#fafaf7';
const INK = '#0c0b10';
-const fontOk = GlobalFonts.registerFromPath(
- join(RES, 'fonts', 'Nunito-Black.ttf'),
- 'Nunito',
-);
-if (!fontOk) {
- throw new Error('Failed to register Nunito-Black.ttf — check resources/fonts/');
+// The mark: a filled dot with a soft ripple ring, proportions locked to the
+// identity pack — dot r = 0.218·s, ring r = 0.373·s, stroke = max(1.5, 0.0136·s).
+function drawMark(ctx, cx, cy, s, { dotColor, ringColor, ringOpacity = 0.25 }) {
+ const dotR = s * 0.218;
+ const ringR = s * 0.373;
+ const strokeW = Math.max(1.5, s * 0.0136);
+
+ ctx.save();
+ ctx.globalAlpha = ringOpacity;
+ ctx.strokeStyle = ringColor;
+ ctx.lineWidth = strokeW;
+ ctx.beginPath();
+ ctx.arc(cx, cy, ringR, 0, Math.PI * 2);
+ ctx.stroke();
+ ctx.restore();
+
+ ctx.fillStyle = dotColor;
+ ctx.beginPath();
+ ctx.arc(cx, cy, dotR, 0, Math.PI * 2);
+ ctx.fill();
}
function renderIcon() {
@@ -39,13 +53,13 @@ function renderIcon() {
ctx.fillStyle = VIOLET;
ctx.fillRect(0, 0, size, size);
- // Cream `b` glyph. Optical-centre nudge up 3% because `b` has an ascender
- // but no descender — geometric centring leaves it looking low.
- ctx.fillStyle = CREAM;
- ctx.font = `900 ${size * 0.68}px Nunito`;
- ctx.textAlign = 'center';
- ctx.textBaseline = 'middle';
- ctx.fillText('b', size / 2, size / 2 - size * 0.03);
+ // Cream dot + ripple — the "iOS rounded" artboard from the identity pack.
+ // Ring opacity bumps to 0.4 so the cream stroke holds against violet.
+ drawMark(ctx, size / 2, size / 2, size, {
+ dotColor: CREAM,
+ ringColor: CREAM,
+ ringOpacity: 0.4,
+ });
return c.toBuffer('image/png');
}
@@ -58,11 +72,13 @@ function renderSplash({ bg, fg }) {
ctx.fillStyle = bg;
ctx.fillRect(0, 0, size, size);
- // Violet dot ~18% of the short-edge diameter.
- ctx.fillStyle = fg;
- ctx.beginPath();
- ctx.arc(size / 2, size / 2, size * 0.09, 0, Math.PI * 2);
- ctx.fill();
+ // Dot ~18% diameter (r ≈ 0.09·size) — keep that by sizing the mark so its
+ // dot resolves to the same radius: markSize = (0.09 / 0.218)·size.
+ drawMark(ctx, size / 2, size / 2, size * 0.413, {
+ dotColor: fg,
+ ringColor: fg,
+ ringOpacity: 0.25,
+ });
return c.toBuffer('image/png');
}
diff --git a/src/index.css b/src/index.css
index 5324feb..cca301d 100644
--- a/src/index.css
+++ b/src/index.css
@@ -391,6 +391,7 @@ html {
}
.dark .boop-wordmark { color: #f1eef9; }
.boop-dot {
+ position: relative;
display: inline-block;
width: 0.73em;
height: 0.73em;
@@ -398,6 +399,20 @@ html {
background: var(--boop-accent);
flex: none;
}
+/* Soft ripple ring — the design's "01 · Original" mark. */
+.boop-dot::after {
+ content: "";
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 1.25em;
+ height: 1.25em;
+ border-radius: 50%;
+ border: max(1.5px, 0.025em) solid var(--boop-accent);
+ opacity: 0.25;
+ transform: translate(-50%, -50%);
+ pointer-events: none;
+}
/* Hide focus ring for mouse users */
:focus:not(:focus-visible) {
diff --git a/src/pages/Landing.css b/src/pages/Landing.css
index 21c1a64..ac1fa31 100644
--- a/src/pages/Landing.css
+++ b/src/pages/Landing.css
@@ -33,9 +33,12 @@
.boop-landing .nav { position: sticky; top: 0; z-index: 20; backdrop-filter: blur(14px); background: rgba(250,250,247,0.75); border-bottom: 1px solid var(--lineSoft); }
.boop-landing .nav-inner { display: flex; align-items: center; justify-content: space-between; height: 64px; }
.boop-landing .wordmark { display: inline-flex; align-items: center; gap: 8px; font-family: var(--rounded); font-weight: 800; font-size: 22px; letter-spacing: -0.8px; color: var(--ink); white-space: nowrap; }
-.boop-landing .wordmark .dot { width: 16px; height: 16px; border-radius: 50%; background: var(--accent); flex-shrink: 0; }
+.boop-landing .wordmark .dot { position: relative; width: 16px; height: 16px; border-radius: 50%; background: var(--accent); flex-shrink: 0; }
+/* Soft ripple ring from the identity pack (ring-to-dot diameter ratio ≈ 1.71). */
+.boop-landing .wordmark .dot::after { content: ""; position: absolute; top: 50%; left: 50%; width: 27px; height: 27px; border-radius: 50%; border: 1.5px solid var(--accent); opacity: 0.25; transform: translate(-50%, -50%); pointer-events: none; }
.boop-landing .wordmark-sm { font-size: 18px; gap: 6px; }
.boop-landing .wordmark-sm .dot { width: 13px; height: 13px; }
+.boop-landing .wordmark-sm .dot::after { width: 22px; height: 22px; }
.boop-landing .nav-links { display: flex; gap: 28px; font-size: 14px; color: var(--muted); }
.boop-landing .nav-links a:hover { color: var(--ink); }
.boop-landing .nav-cta { display: flex; gap: 10px; align-items: center; }
@@ -48,7 +51,8 @@
.boop-landing .hero { padding: 64px 0 60px; position: relative; }
.boop-landing .hero h1 { display: flex; align-items: center; gap: clamp(14px, 1.4vw, 20px); flex-wrap: nowrap; font-family: var(--rounded); font-weight: 900; font-size: clamp(48px, 8vw, 108px); letter-spacing: -3px; line-height: 0.95; margin: 0 0 24px; max-width: 900px; }
-.boop-landing .hero h1 .mark { display: block; width: clamp(40px, 7vw, 90px); height: clamp(40px, 7vw, 90px); border-radius: 50%; background: var(--accent); flex-shrink: 0; }
+.boop-landing .hero h1 .mark { position: relative; display: block; width: clamp(40px, 7vw, 90px); height: clamp(40px, 7vw, 90px); border-radius: 50%; background: var(--accent); flex-shrink: 0; }
+.boop-landing .hero h1 .mark::after { content: ""; position: absolute; top: 50%; left: 50%; width: clamp(68px, 11.97vw, 154px); height: clamp(68px, 11.97vw, 154px); border-radius: 50%; border: 2px solid var(--accent); opacity: 0.25; transform: translate(-50%, -50%); pointer-events: none; }
.boop-landing .hero-signin { margin-top: 20px; font-size: 14px; color: var(--muted); }
.boop-landing .hero-signin a { color: var(--accent); font-weight: 600; }
.boop-landing .hero-signin a:hover { text-decoration: underline; }