amirhosein.ashourlooandClaude Opus 5 6bcbe73d81 Add services page and make the portfolio carousel draggable
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>
2026-09-14 12:33:19 +03:30
S
Description
No description provided
7.6 MiB
Languages
TypeScript 72.8%
CSS 26.9%
JavaScript 0.3%