4 Commits

Author SHA1 Message Date
Claude (Beletage) c0bc2c2f04 Redesign: new logo, fonts, toon-shaded 3D, scroll animations
Visual overhaul addressing render glitches and adding wow factor.

Type:
- Display: Fraunces -> Instrument Serif (more elegant, italic-forward)
- Body:    Inter    -> Geist (tighter, more contemporary)
- Mono:    JetBrains -> Geist Mono

Logo:
- New SVG mark — pairs a gabled vernacular silhouette with a glass-grid
  contemporary tower, divided by a ground line. Communicates "2D3D" through
  architectural language rather than typography.
- Component supports mark / full / inverse variants
- Favicon + apple-touch-icon updated to match
- OG image regenerated with new palette and 3 representative house silhouettes

3D models (houses.ts):
- Switched to MeshToonMaterial with a 3-step gradient LUT — flat designer-toy
  look that's forgiving of low-poly approximations
- Reworked geometry across all six typologies for consistent scale and clean
  composition (real arches via ExtrudeGeometry on cula loggia, proper sasesc
  roof shapes via extruded slope, contemporary slats sized to volume)
- Per-house camera framing
- 2D->3D intro animation when scene first becomes visible — house extrudes
  from a flat plane (on-brand for the 2d3d.ro concept)
- Subtle breathing y-translation while idle
- Hover speeds up the spin smoothly

Animations:
- Word-split + staggered reveal for hero headline
- IntersectionObserver-based reveal-on-scroll for [data-reveal]/[data-reveal-blur]
- Animated number counters (Romanian locale)
- Magnetic hover on CTAs and brand mark
- Cursor-tracking radial glow in hero
- Section dividers with blueprint dimension-line aesthetic
- Marquee strip listing typology names in intro
- Glow-ring (animated conic gradient) on primary CTAs

Palette refined — slightly less saturated terra/wood/sky-mist for a more
sophisticated tone.

All animations respect prefers-reduced-motion. Off-screen 3D scenes still
paused via the prior IntersectionObserver fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 10:54:31 +03:00
Claude (Beletage) 5e47123446 Perf: pause off-screen 3D scenes; cheaper materials and lighting
The previous build kicked off 7 simultaneous WebGL render loops (1 hero + 6
typology canvases), each running at 60fps with shadow recompute, multiple
directional lights and (on the contemporary house) an expensive
MeshPhysicalMaterial with transmission. By the bottom of the page the GPU
budget was completely saturated and scrolling juddered.

Changes:
- Scene render loop now respects an `active` flag; rAF stops when paused
- IntersectionObserver in bootstrap activates only canvases in/near viewport
  (rootMargin 150px), pauses the rest
- Hero scene also gets its own IO so it stops rendering once scrolled past
- visibilitychange listener pauses every scene when the tab is backgrounded
- Hero canvas shadow render is on-demand via a `needsRender` flag — auto-rotate
  still triggers a re-render each frame (otherwise nothing moves), but pointer
  drag, resize and idle frames coalesce
- Replaced MeshPhysicalMaterial (multi-pass transmission) with a cheap
  MeshStandardMaterial for contemporary house glass — visually almost identical
- Reduced per-scene lighting from hemi+key+fill+rim (4 lights) to hemi+key (2)
- DPR cap lowered from 2 to 1.5 — invisible at typical viewing distance
- Disabled MSAA when DPR > 1.25; relies on supersampling instead

End-of-page scroll should now be smooth on integrated GPUs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 09:03:30 +03:00
Claude (Beletage) df35ee6632 Build: Arhitectura României — interactive 3D scrollytelling
Astro 6 + Tailwind 4 + Three.js + GSAP/Lenis stack.

- Hero with animated procedural 3D Maramures house silhouette
- Six typology sections (Maramures, cula, sasesc, interbelic, comunist, contemporan), each with a low-poly Three.js model and interactive drag-to-rotate
- 5-question quiz that recommends a typology, with native + social share
- Beletage backlinks throughout: footer, header CTA, dedicated section, quiz result, share strip
- Full SEO: dynamic OG image, JSON-LD WebSite/Organization/Article, sitemap (i18n), robots, canonical, hreflang
- RO primary, EN landing variant
- Romanian-warm palette (terra/wood/sky-mist/bone), Fraunces + Inter fonts
- Lazy-init Three scenes via IntersectionObserver, prefers-reduced-motion respected

Static output, ready for Cloudflare Pages.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 03:21:18 +03:00
Claude VM afc9477d3e Initial scaffold 2026-04-20 02:55:43 +03:00