1+1 anchor pricing, contact form, and the release system itself
Pricing rework focused on a single hero deal — the smallest pack now carries a permanent 1+1 bonus while the larger packs sit clean as anchors, the way a CU 1+1 deal works. Reading-unlock CTA stops shouting prices at the entry point. Plus a real contact form (with a brutalist confirmation email), a public release page so you can see what we ship, and footer links to the SEO categories that were previously hidden.
1+1 deal lives on the smallest pack only
PricingBonus credits no longer dilute every pack. The €1.49 try pack stays "buy 1, get 1 free" forever, while the 5- and 15-credit packs are plain volume options. The bonus regains anchor power because the other packs don't copy it.
Reading-unlock CTA leads with the deal, not the price
PricingThe "Reveal Full Reading" button used to expose a per-credit "from €0.49" anchor that read as expensive in some currencies and abstract in others. It now shows a brutalist "1+1 Buy 1, get 1 free" chip right under the title — value framing instead of unit pricing at the conversion point.
Checkout banner cleaned up
DesignRemoved the 48-hour countdown timer (a permanent deal needs no urgency) and the duplicate tilted "1+1" sticker that was competing with the try-pack badge. Single bonus marker per element now.
Long button labels no longer overlap prices in KRW
FixOn Korean Won prices like ₩495, the unlock button text would visually crash into the price tag. Button content now stacks vertically with proper wrapping so labels and chips never collide, in any currency.
Real contact form at /contact
NewReplaces the scattered (and partially non-working) privacy@/dmca@/legal@/support@/contact@idolsaju.com mailto links with a single brutalist form in EN/KO/JA/ES. Topic dropdown covers general questions, privacy, DMCA, billing, bugs, and image attribution. Honeypot anti-spam baked in.
Brutalist confirmation email
NewEvery contact submission triggers an instant confirmation in the user's inbox — yellow IdolSaju background, white card with black borders and hard shadow, brand chip, status sticker, summary of their submission, and a CTA back to their language's homepage. Localized in 4 languages.
What's new — public release page
NewNew /releases page (linked in the footer as "What's new") lists every IdolSaju update with category chips and dates. This very entry is the first one visible. Built with the same brutalist look as the rest of the site.
Footer links to Numerology, Angel Numbers, Crystals, Chakras
SEOThe Explore footer column now points into the previously orphaned SEO categories (~256 pages with no internal links from the global nav). Each link leads to a representative entry that cross-links to its siblings, so Google has an actual entry path.
Live readings counter on the unlock card
NewA subtle "✦ 1,247 readings unlocked this week" line now appears under the trust badges, showing real activity from the last seven days. Hidden when the count is too low to be impressive — no fake numbers.
Library updates and Stripe API bump
InfraPulled minor/patch updates across Stripe, Prisma, Biome, lucide-react, Cloudinary, and the Stripe JS SDKs. Stripe API version moved to 2026-04-22.dahlia. Tests and build green throughout.
Dead teaser code removed
InfraCleared an empty `/api/reading-teaser` folder and corrected our internal documentation: the teaser/preview UI is fully client-side and writes nothing to the database until a paid reading runs. No more phantom "cleanup cron" debt on the backlog.