/**
 * Hero Server Component
 * 
 * Renders all static content server-side:
 * - Poster de fond (élément LCP)
 * - Title, subtitle, description
 * - CTA button structure
 *
 * La vidéo de fond est déléguée à <HeroVideo>, un composant client qui ne la
 * monte que sur écran large et hors `prefers-reduced-motion` (cf. son en-tête).
 */

import type { HeroContentProps } from "./hero.types";
import { CalButton } from "../cal-button";
import { HeroVideo } from "./HeroVideo";

export function HeroServer({ variant }: HeroContentProps) {
  return (
    <section className="relative flex min-h-[85vh] items-center justify-center overflow-hidden">
      {/* Précharge le poster (élément LCP) en priorité haute — hoisté dans <head>.
          `type` restreint le préchargement aux navigateurs qui savent lire l'AVIF :
          les autres l'ignorent et prendront le WebP ou le JPEG via <picture>,
          sans double téléchargement. */}
      <link
        rel="preload"
        as="image"
        href="/videos/hero-poster.avif"
        type="image/avif"
        fetchPriority="high"
      />
      {/* Fond du hero — le poster est l'élément LCP : rendu serveur, présent dès
          le HTML initial, préchargé ci-dessus. Il ne dépend pas de JavaScript et
          reste l'unique fond sur mobile et en `prefers-reduced-motion`. */}
      <picture>
        <source srcSet="/videos/hero-poster.avif" type="image/avif" />
        <source srcSet="/videos/hero-poster.webp" type="image/webp" />
        <img
          src="/videos/hero-poster.jpg"
          alt=""
          aria-hidden="true"
          fetchPriority="high"
          decoding="async"
          width={1600}
          height={900}
          className="absolute inset-0 -z-10 h-full w-full object-cover"
        />
      </picture>
      {/* La vidéo se superpose au poster, uniquement si le contexte s'y prête. */}
      <HeroVideo />

      {/* Dark overlay for text contrast */}
      <div className="absolute inset-0 bg-gray-900/60 z-0" aria-hidden="true" />

      {/* Content */}
      <div className="relative z-10 mx-auto max-w-7xl px-4 pt-20 pb-16 text-center sm:px-6 lg:px-8">
        <h1 className="mx-auto max-w-5xl text-4xl font-semibold tracking-tight leading-tight sm:text-6xl lg:text-7xl">
          <span className="text-white">{variant.title.part1}</span>
          <span className="bg-linear-to-b from-[rgba(255,167,86,1)] to-[rgba(238,96,44,1)] bg-clip-text text-transparent pb-2">
            {variant.title.part2}
          </span>
        </h1>
        <p className="mx-auto mt-8 max-w-3xl text-lg font-semibold tracking-tight text-white sm:text-xl lg:text-2xl">
          {variant.subtitle}
        </p>
        <p className="mx-auto mt-4 max-w-3xl text-base tracking-tight text-white font-medium sm:text-lg">
          {variant.description}
        </p>

        {/* CTA Button */}
        <div className="mt-8 flex justify-center">
          <CalButton location="hero" className="px-8 py-4 text-lg shadow-lg hover:shadow-xl transform hover:scale-105">
            Prendre rendez-vous
          </CalButton>
        </div>
      </div>
    </section>
  );
}
