Port the /services page from the legacy site: hero, "Field of activity"
with the five expertise areas, the video feature image that straddles the
section boundary, the services slider, the stats row, and the capability
lists with the closing "architecture" watermark. Images come from the
legacy theme; they are also wired to Meshkee static-image slots
(services-hero/feature/cards/gallery) so they can be swapped from the panel.
The navbar Services link now points at /services instead of the homepage
anchor, and the sitemap picks the route up automatically.
PortfolioCarousel takes an optional `items` prop so the new page can reuse
it, and now supports pointer dragging. Two fixes were needed for that:
- Easing is toggled on the track imperatively with a forced style flush
instead of via a class. Chrome decides whether to animate from the
before-change style, so a class-based `transition: none` also suppressed
the transition on the commit that removed it — the drag snap jumped, and
the loop reset (which was driven by onTransitionEnd) never ran at all,
letting the track drift off the end of the list. The loop now re-anchors
on a timer and the reset hops instead of gliding.
- The gesture is tracked on the window rather than through pointer capture,
so releasing outside the carousel or losing focus mid-drag still settles
it instead of leaving the track parked at its dragged offset.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wire CMS routes and account UI, match the original header icons, and publish sitemap-config with unique page metadata.
Co-authored-by: Cursor <cursoragent@cursor.com>