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; }