docs(store): rename marketing assets to Closer Couples
This commit is contained in:
parent
213cfddb16
commit
1242799001
10
README.md
10
README.md
|
|
@ -1,8 +1,8 @@
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="docs/store/feature-graphic-1024x500.png" alt="Closer feature graphic" width="920" />
|
<img src="docs/store/feature-graphic-1024x500.png" alt="Closer Couples feature graphic" width="920" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h1 align="center">Closer</h1>
|
<h1 align="center">Closer Couples</h1>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<strong>A private space for two.</strong><br />
|
<strong>A private space for two.</strong><br />
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Closer is a native relationship app for couples who want a quieter way to check in with each other.
|
Closer Couples is a native relationship app for couples who want a quieter way to check in with each other.
|
||||||
Each partner answers privately, reveals intentionally, and keeps a record of the conversations that
|
Each partner answers privately, reveals intentionally, and keeps a record of the conversations that
|
||||||
matter.
|
matter.
|
||||||
|
|
||||||
|
|
@ -86,7 +86,7 @@ Fresh Android captures from the current emulator build.
|
||||||
|
|
||||||
<h2 align="center">Visual system</h2>
|
<h2 align="center">Visual system</h2>
|
||||||
|
|
||||||
Closer uses paired light and dark illustration assets so the product can stay warm without fighting
|
Closer Couples uses paired light and dark illustration assets so the product can stay warm without fighting
|
||||||
the selected theme. The home daily-question card is intentionally people-forward: the ready-to-answer
|
the selected theme. The home daily-question card is intentionally people-forward: the ready-to-answer
|
||||||
and reveal-ready moments use the couple/cards artwork, while quieter waiting states can fall back to
|
and reveal-ready moments use the couple/cards artwork, while quieter waiting states can fall back to
|
||||||
the answer-card ritual art.
|
the answer-card ritual art.
|
||||||
|
|
@ -106,7 +106,7 @@ the answer-card ritual art.
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td width="33%"><strong>Theme-aware art</strong><br />Light and dark illustrations are paired for the same product moments.</td>
|
<td width="33%"><strong>Theme-aware art</strong><br />Light and dark illustrations are paired for the same product moments.</td>
|
||||||
<td width="33%"><strong>Human warmth</strong><br />The home ritual leads with people and recognizable Closer card artwork.</td>
|
<td width="33%"><strong>Human warmth</strong><br />The home ritual leads with people and recognizable Closer Couples card artwork.</td>
|
||||||
<td width="33%"><strong>Private rituals</strong><br />The visual language reinforces answering alone, revealing together, and continuing gently.</td>
|
<td width="33%"><strong>Private rituals</strong><br />The visual language reinforces answering alone, revealing together, and continuing gently.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
# App rename: "Closer" → "Closer Couples" (store / marketing tier only)
|
||||||
|
|
||||||
|
> Audit + decision record for renaming the product's public name to **"Closer Couples"**.
|
||||||
|
> Status: **executed in repo.** Store-console changes remain external owner steps.
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
After auditing every occurrence of the name across Android, iOS, images, and docs, the chosen approach is a deliberate **two-tier branding** outcome:
|
||||||
|
|
||||||
|
- **Store & marketing name** = "Closer Couples"
|
||||||
|
- **Installed-app name** (home-screen launcher label + every in-app string) **stays "Closer"** — it fits under the icon ("Closer Couples" at 14 chars truncates to "Closer Coupl…") and avoids a full in-app rewrite.
|
||||||
|
|
||||||
|
**Most important consequence:** no code changes, no rebuild, no app re-release. And critically — **the only thing users actually see change (the store listing title + the feature graphic) is set in the Google Play / App Store console, which is an EXTERNAL step performed by the owner.** Editing this repo does not rename anything that is live; the repo work is (a) the source-of-truth feature-graphic asset, (b) doc/record housekeeping. The wordless C-heart-keyhole icon/logo is unaffected (icon SVG sources contain zero `<text>`).
|
||||||
|
|
||||||
|
## Technical identifiers that must NOT change
|
||||||
|
|
||||||
|
Renaming any of these breaks builds / Firebase / the Play listing:
|
||||||
|
`namespace app.closer` · `applicationId closer.app` · package `app.closer.*` + `class CloserApp` · deep-link host `closer.app` + `closer://` scheme · Firebase `closer-app-22014` (`google-services.json`, `GoogleService-Info.plist`) · iOS `PRODUCT_BUNDLE_IDENTIFIER app.closer.iphone` + `bundleIdPrefix app.closer` + product/target/scheme `Closer` · SPM package `Closer` · Gradle `rootProject.name "Closer"` · resource filenames (`closer_launcher_*`, `ic_notification_closer`, `ic_launcher*`) · XML styles `Theme.Closer[.Splash]` · entitlement id `closer_premium` · crypto AAD constants.
|
||||||
|
|
||||||
|
## What does NOT change (per the chosen tier)
|
||||||
|
|
||||||
|
- **Android launcher label** — `app/src/main/res/values/strings.xml` → `app_name` stays **"Closer"**.
|
||||||
|
- **iOS home-screen label** — `iphone/Closer/Info.plist` → `CFBundleDisplayName` stays **"Closer"** (`CFBundleName`/`PRODUCT_NAME` untouched).
|
||||||
|
- **All ~25 in-app copy strings** stay "Closer" (paywall, onboarding/age-gate, settings, widget, invite share text, privacy `strings.xml:95-96`, share card, iOS onboarding, etc.).
|
||||||
|
- **Wordmark logos** (onboarding, auth alt-text, widget, share card) stay "Closer" → their asserting tests stay green, untouched.
|
||||||
|
- **Internal engineering/brand-system docs** using "Closer" as codename/design-system name (`DEVELOPMENT_LOG.md`, `SECURITY.md`, `Future.md`, `Engineering_Reference_Manual`, the `Claude*.md` reports, `docs/brand/asset-system.md` "Closer Artwork Asset System", `docs/brand/generated-art/glyphs/README.md` "Closer G-set").
|
||||||
|
|
||||||
|
## Changes to make (in-repo)
|
||||||
|
|
||||||
|
### 1. Store feature graphic (the one required image) — `docs/store/`
|
||||||
|
The exhaustive wordmark-SVG list is exactly three files; only this one is store-facing (the other two are unreferenced internal art — see §5).
|
||||||
|
- Completed: `docs/store/sources/feature-graphic.svg` now uses `Closer Couples` at `font-size="58"`, with the three small card icons/headlines/sublabels centered inside their cards.
|
||||||
|
- Completed: `docs/store/feature-graphic-1024x500.png` was re-exported from the SVG (1024×500, **no alpha**) — see re-export procedure.
|
||||||
|
|
||||||
|
### 2. Store-listing doc — `docs/release/store-assets.md`
|
||||||
|
- Completed: title, app-name checklist, full-description prose, and §9 inventory now use **"Closer Couples"** while documenting that the launcher label remains **"Closer"**.
|
||||||
|
|
||||||
|
### 3. `README.md` — product-name references only
|
||||||
|
Completed: `<h1>`, feature-graphic alt text, and product-facing prose use "Closer Couples". Codename/dir/scheme mentions (`iphone/Closer`, `Closer.xcodeproj`, `-scheme Closer`) remain unchanged.
|
||||||
|
|
||||||
|
### 4. `docs/brand/visual-identity.md` — product-name prose (consistency, optional)
|
||||||
|
Completed: product-name prose uses "Closer Couples"; asset paths stay unchanged.
|
||||||
|
|
||||||
|
### 5. Two internal `generated-art` feature graphics — OPTIONAL (not store-facing)
|
||||||
|
`docs/brand/generated-art/closer_app_explainer_feature.svg` + `closer_e2ee_privacy_feature.svg` render "Closer" but are referenced by no store/README doc — internal exploration art. Update their `<text>` + re-export **only if** internal consistency is wanted; not required for the rename.
|
||||||
|
|
||||||
|
## Feature-graphic re-export procedure (the installed tooling can't do it naively)
|
||||||
|
|
||||||
|
`rsvg-convert` / `inkscape` / `resvg` are **not installed**, and ImageMagick's SVG delegate is wired to the missing `rsvg-convert`, so a bare `convert file.svg file.png` falls back to ImageMagick's native renderer and **will mangle** this SVG's `feDropShadow` filters, gradients, and embedded `<image>`. Use the rasterizer that IS present:
|
||||||
|
|
||||||
|
- **Headless Chrome** (`google-chrome` is installed) — pixel-accurate; **DejaVu Sans Bold is installed**, so text renders correctly.
|
||||||
|
- The SVG's `<image href="../../brand/sources/…png">` is **relative to `docs/store/sources/`**, so serving the repo root and loading the SVG over `http://` resolves the embedded icon correctly:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
python3 -m http.server 8099 & # or: npx http-server -p 8099 (node is available)
|
||||||
|
google-chrome --headless --disable-gpu --hide-scrollbars \
|
||||||
|
--window-size=1024,500 --screenshot=/tmp/fg.png \
|
||||||
|
"http://localhost:8099/docs/store/sources/feature-graphic.svg"
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Flatten alpha** (Play requires no alpha; Chrome screenshots carry an alpha channel — the opaque `#24122F` rect covers it visually but the channel persists):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
convert /tmp/fg.png -background '#24122F' -flatten -alpha off docs/store/feature-graphic-1024x500.png
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Fallback** if headless Chrome misbehaves (sandbox/sizing): the corrected `.svg` is the source of truth — commit it and re-export the PNG with proper design tooling before uploading to Play Console. Per `store-assets.md:200`, never hand-edit the raster; always regenerate from the SVG.
|
||||||
|
|
||||||
|
## External steps (owner performs — outside the repo; this is what actually renames the app)
|
||||||
|
|
||||||
|
- **Google Play Console** → store listing → **App name = "Closer Couples"**, paste the updated description, upload the re-exported feature graphic.
|
||||||
|
- **App Store Connect** (when iOS ships) → app name "Closer Couples".
|
||||||
|
- Heads-up: (a) Play title policy allows a descriptor addition — "Closer" → "Closer Couples" is a clear same-brand superset, low risk, but a launcher label that differs from the store title is worth a sanity check at review; (b) `store-assets.md:14`'s trademark check should be re-run against the **new** name.
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
- Re-exported `feature-graphic-1024x500.png`: visibly reads "Closer Couples", legible, no clipping/overlap with the icon or the three cards; confirm **1024×500 and no alpha** (`identify -verbose … | grep -iE 'Geometry|Alpha|Type'`).
|
||||||
|
- Grep the touched docs for leftover standalone "Closer" that should be "Closer Couples" (excluding codename/dir/scheme + technical URLs).
|
||||||
|
- **Launcher untouched:** `app_name` in `strings.xml` and `CFBundleDisplayName` in `Info.plist` both still "Closer".
|
||||||
|
- No build required (no source touched); optional `./gradlew :app:assembleDebug` still succeeds unchanged.
|
||||||
|
|
||||||
|
## Pre-existing issue noted (NOT fixed here)
|
||||||
|
|
||||||
|
`store-assets.md:106` — support URL `couplesconnect.app` vs the `closer.app` domain used elsewhere; unrelated to this rename, leave for separate cleanup.
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Closer visual identity
|
# Closer Couples visual identity
|
||||||
|
|
||||||
Closer should feel private, warm, and made for an equal partnership—not clinical, gamified, or like
|
Closer Couples should feel private, warm, and made for an equal partnership—not clinical, gamified, or like
|
||||||
a public dating profile.
|
a public dating profile.
|
||||||
|
|
||||||
Product goal: **private, mutual-reveal relationship questions with real encryption and calmer UX**.
|
Product goal: **private, mutual-reveal relationship questions with real encryption and calmer UX**.
|
||||||
|
|
@ -11,7 +11,7 @@ requirements, see `docs/brand/asset-system.md`.
|
||||||
|
|
||||||
## Brand mark
|
## Brand mark
|
||||||
|
|
||||||
The mark is the approved Closer `C-heart-keyhole`: a soft pink upper `C`, lavender lower sweep,
|
The mark is the approved Closer Couples `C-heart-keyhole`: a soft pink upper `C`, lavender lower sweep,
|
||||||
a heart-shaped inner space, and a true centered keyhole. Pink and lavender represent two people
|
a heart-shaped inner space, and a true centered keyhole. Pink and lavender represent two people
|
||||||
meeting in one private space; the keyhole represents trust and privacy.
|
meeting in one private space; the keyhole represents trust and privacy.
|
||||||
|
|
||||||
|
|
@ -81,7 +81,7 @@ Approved production rotation:
|
||||||
- **No audience. No public feed. Just the two of you.**
|
- **No audience. No public feed. Just the two of you.**
|
||||||
- **Private by design.**
|
- **Private by design.**
|
||||||
- **A private space for two.**
|
- **A private space for two.**
|
||||||
- **Not even Closer can read your answers.**
|
- **Not even Closer Couples can read your answers.**
|
||||||
- **End to end encrypted private responses.**
|
- **End to end encrypted private responses.**
|
||||||
- **Built for trust, not tracking.**
|
- **Built for trust, not tracking.**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Closer — Google Play Store Assets Checklist
|
# Closer Couples — Google Play Store Assets Checklist
|
||||||
|
|
||||||
> Checklist of assets, metadata, and compliance items needed for a Google Play Store submission. Targeting the private MVP / internal launch phase.
|
> Checklist of assets, metadata, and compliance items needed for a Google Play Store submission. Targeting the private MVP / internal launch phase.
|
||||||
|
|
||||||
|
|
@ -9,8 +9,9 @@ Store assets should express the product goal: **private, mutual-reveal relations
|
||||||
## 1. Store Listing Metadata
|
## 1. Store Listing Metadata
|
||||||
|
|
||||||
### 1.1 App name
|
### 1.1 App name
|
||||||
- [x] App name finalized: **Closer**.
|
- [x] Store app name finalized: **Closer Couples**.
|
||||||
- [x] App name matches `android:label` in `AndroidManifest.xml` (currently `@string/app_name`).
|
- [x] Store name intentionally differs from the launcher label **Closer** (`android:label` is
|
||||||
|
`@string/app_name`) so the installed app stays short under the icon.
|
||||||
- [ ] App name is not trademark-conflicting in target categories/territories.
|
- [ ] App name is not trademark-conflicting in target categories/territories.
|
||||||
|
|
||||||
### 1.2 Short description
|
### 1.2 Short description
|
||||||
|
|
@ -29,10 +30,10 @@ Recommended short description:
|
||||||
|
|
||||||
Draft full description:
|
Draft full description:
|
||||||
|
|
||||||
Closer is a private space for two people who want more intentional conversations.
|
Closer Couples is a private space for two people who want more intentional conversations.
|
||||||
|
|
||||||
Answer one daily question, explore deeper question packs, spin a shared prompt wheel, plan date
|
Answer one daily question, explore deeper question packs, spin a shared prompt wheel, plan date
|
||||||
ideas, save bucket-list moments, and reveal answers when you are both ready. Closer is built for
|
ideas, save bucket-list moments, and reveal answers when you are both ready. Closer Couples is built for
|
||||||
quiet connection, not public posting or pressure.
|
quiet connection, not public posting or pressure.
|
||||||
|
|
||||||
What you can do:
|
What you can do:
|
||||||
|
|
@ -43,7 +44,7 @@ What you can do:
|
||||||
- Use playful connection games like the spin wheel and this-or-that prompts.
|
- Use playful connection games like the spin wheel and this-or-that prompts.
|
||||||
- Plan dates and keep shared ideas in one calm place.
|
- Plan dates and keep shared ideas in one calm place.
|
||||||
|
|
||||||
Closer is not therapy and does not promise to fix a relationship. It gives couples a steady,
|
Closer Couples is not therapy and does not promise to fix a relationship. It gives couples a steady,
|
||||||
private rhythm for checking in, listening better, and making time for each other.
|
private rhythm for checking in, listening better, and making time for each other.
|
||||||
|
|
||||||
### 1.4 Keywords / tags
|
### 1.4 Keywords / tags
|
||||||
|
|
@ -182,7 +183,7 @@ private rhythm for checking in, listening better, and making time for each other
|
||||||
|
|
||||||
| Asset | Spec | Status | Owner |
|
| Asset | Spec | Status | Owner |
|
||||||
|-------|------|--------|-------|
|
|-------|------|--------|-------|
|
||||||
| App name | ≤ 30 chars displayed | Draft | |
|
| App name | Closer Couples, 14 chars displayed | Draft | |
|
||||||
| Short description | ≤ 80 chars | Draft | |
|
| Short description | ≤ 80 chars | Draft | |
|
||||||
| Full description | ≤ 4,000 chars | Draft | |
|
| Full description | ≤ 4,000 chars | Draft | |
|
||||||
| Launcher icon | Adaptive + round + monochrome | Ready | |
|
| Launcher icon | Adaptive + round + monochrome | Ready | |
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 458 KiB After Width: | Height: | Size: 93 KiB |
|
|
@ -1,4 +1,4 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="500" viewBox="0 0 1024 500">
|
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="500" viewBox="0 0 1024 500" role="img" aria-label="Closer Couples feature graphic">
|
||||||
<defs>
|
<defs>
|
||||||
<filter id="markShadow" x="-30%" y="-30%" width="160%" height="180%">
|
<filter id="markShadow" x="-30%" y="-30%" width="160%" height="180%">
|
||||||
<feDropShadow dx="0" dy="14" stdDeviation="14" flood-color="#180C20" flood-opacity=".45"/>
|
<feDropShadow dx="0" dy="14" stdDeviation="14" flood-color="#180C20" flood-opacity=".45"/>
|
||||||
|
|
@ -13,35 +13,35 @@
|
||||||
<path d="M0 372c144-62 292-57 449-14 142 39 259 43 358 7 70-25 142-33 217-13v148H0Z" fill="#180C20" opacity=".34"/>
|
<path d="M0 372c144-62 292-57 449-14 142 39 259 43 358 7 70-25 142-33 217-13v148H0Z" fill="#180C20" opacity=".34"/>
|
||||||
<path d="M900 0h124v500H820c31-76 34-154 8-236C800 174 812 88 900 0Z" fill="#F7C8E4" opacity=".08"/>
|
<path d="M900 0h124v500H820c31-76 34-154 8-236C800 174 812 88 900 0Z" fill="#F7C8E4" opacity=".08"/>
|
||||||
|
|
||||||
<image x="68" y="74" width="312" height="312" href="docs/brand/sources/closer-approved-icon-square-white-keyhole.png" preserveAspectRatio="xMidYMid slice" filter="url(#markShadow)"/>
|
<image x="68" y="74" width="312" height="312" href="../../brand/sources/closer-approved-icon-square-white-keyhole.png" preserveAspectRatio="xMidYMid slice" filter="url(#markShadow)"/>
|
||||||
|
|
||||||
<text x="408" y="142" fill="#FFF8FC" font-family="DejaVu Sans" font-size="72" font-weight="700">Closer</text>
|
<text x="408" y="142" fill="#FFF8FC" font-family="DejaVu Sans" font-size="58" font-weight="700">Closer Couples</text>
|
||||||
<text x="412" y="198" fill="#F7C8E4" font-family="DejaVu Sans" font-size="26" font-weight="600">A private space</text>
|
<text x="412" y="198" fill="#F7C8E4" font-family="DejaVu Sans" font-size="26" font-weight="600">A private space</text>
|
||||||
<text x="660" y="198" fill="#FFF8FC" font-family="DejaVu Sans" font-size="26" font-weight="700">for two.</text>
|
<text x="660" y="198" fill="#FFF8FC" font-family="DejaVu Sans" font-size="26" font-weight="700">for two.</text>
|
||||||
<text x="412" y="236" fill="#F3E8FF" font-family="DejaVu Sans" font-size="18" font-weight="500">Private questions and intentional reveals.</text>
|
<text x="412" y="236" fill="#F3E8FF" font-family="DejaVu Sans" font-size="18" font-weight="500">Private questions and intentional reveals.</text>
|
||||||
|
|
||||||
<g transform="translate(408 274)" filter="url(#cardShadow)">
|
<g transform="translate(408 274)" filter="url(#cardShadow)">
|
||||||
<rect width="176" height="116" rx="22" fill="#FFF8FC"/>
|
<rect width="176" height="116" rx="22" fill="#FFF8FC"/>
|
||||||
<circle cx="34" cy="36" r="16" fill="#F0DFFF"/>
|
<circle cx="88" cy="32" r="16" fill="#F0DFFF"/>
|
||||||
<path d="M34 26l9 5v8c0 7-4 11-9 14-5-3-9-7-9-14v-8l9-5Z" fill="#56306F"/>
|
<path d="M88 22l9 5v8c0 7-4 11-9 14-5-3-9-7-9-14v-8l9-5Z" fill="#56306F"/>
|
||||||
<text x="24" y="76" fill="#24122F" font-family="DejaVu Sans" font-size="18" font-weight="700">Private first</text>
|
<text x="88" y="78" fill="#24122F" font-family="DejaVu Sans" font-size="18" font-weight="700" text-anchor="middle">Private first</text>
|
||||||
<text x="24" y="98" fill="#6D5A75" font-family="DejaVu Sans" font-size="14">Reveal when ready</text>
|
<text x="88" y="100" fill="#6D5A75" font-family="DejaVu Sans" font-size="14" text-anchor="middle">Reveal when ready</text>
|
||||||
</g>
|
</g>
|
||||||
|
|
||||||
<g transform="translate(606 274)" filter="url(#cardShadow)">
|
<g transform="translate(606 274)" filter="url(#cardShadow)">
|
||||||
<rect width="176" height="116" rx="22" fill="#FFF8FC"/>
|
<rect width="176" height="116" rx="22" fill="#FFF8FC"/>
|
||||||
<circle cx="34" cy="36" r="16" fill="#FFE8F4"/>
|
<circle cx="88" cy="32" r="16" fill="#FFE8F4"/>
|
||||||
<path d="M34 48c-4-5-20-17-23-27-3-8 2-15 11-15 5 0 9 3 12 8 3-5 7-8 12-8 9 0 14 7 11 15-3 10-19 22-23 27Z" fill="#9B1B5A"/>
|
<path d="M34 48c-4-5-20-17-23-27-3-8 2-15 11-15 5 0 9 3 12 8 3-5 7-8 12-8 9 0 14 7 11 15-3 10-19 22-23 27Z" fill="#9B1B5A" transform="translate(54 -4)"/>
|
||||||
<text x="24" y="76" fill="#24122F" font-family="DejaVu Sans" font-size="18" font-weight="700">For two</text>
|
<text x="88" y="78" fill="#24122F" font-family="DejaVu Sans" font-size="18" font-weight="700" text-anchor="middle">For two</text>
|
||||||
<text x="24" y="98" fill="#6D5A75" font-family="DejaVu Sans" font-size="14">No public feed</text>
|
<text x="88" y="100" fill="#6D5A75" font-family="DejaVu Sans" font-size="14" text-anchor="middle">No public feed</text>
|
||||||
</g>
|
</g>
|
||||||
|
|
||||||
<g transform="translate(804 274)" filter="url(#cardShadow)">
|
<g transform="translate(804 274)" filter="url(#cardShadow)">
|
||||||
<rect width="138" height="116" rx="22" fill="#FFF8FC"/>
|
<rect width="138" height="116" rx="22" fill="#FFF8FC"/>
|
||||||
<circle cx="34" cy="36" r="16" fill="#F4E8FF"/>
|
<circle cx="69" cy="32" r="16" fill="#F4E8FF"/>
|
||||||
<path d="M24 36h20M34 26v20" stroke="#56306F" stroke-width="5" stroke-linecap="round"/>
|
<path d="M59 32h20M69 22v20" stroke="#56306F" stroke-width="5" stroke-linecap="round"/>
|
||||||
<text x="24" y="76" fill="#24122F" font-family="DejaVu Sans" font-size="18" font-weight="700">Daily</text>
|
<text x="69" y="78" fill="#24122F" font-family="DejaVu Sans" font-size="18" font-weight="700" text-anchor="middle">Daily</text>
|
||||||
<text x="24" y="98" fill="#6D5A75" font-family="DejaVu Sans" font-size="14">Small rituals</text>
|
<text x="69" y="100" fill="#6D5A75" font-family="DejaVu Sans" font-size="14" text-anchor="middle">Small rituals</text>
|
||||||
</g>
|
</g>
|
||||||
|
|
||||||
<g transform="translate(408 410)">
|
<g transform="translate(408 410)">
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.6 KiB |
Loading…
Reference in New Issue