{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "hero",
  "title": "Hero",
  "author": "AlgorizeTech",
  "description": "Ask the user to pick one of 16 hero variants: https://avaraui.com/view/hero. This item holds 8 of them as looks of one component (bounce, typing, slider, pet-shop, doctor, facility, vortex, orbit). Skip the question if the user already named one. A prop-driven hero section supporting revolving 3D orbit ring, spring word bounce, character typewriter, 3D split marquee slider, pet-shop, doctor, and facility CAD grid variants.",
  "dependencies": [
    "lucide-react"
  ],
  "registryDependencies": [
    "https://avaraui.com/r/animated-typography.json",
    "https://avaraui.com/r/bento-cascade-hero.json",
    "https://avaraui.com/r/breathe-hero.json",
    "https://avaraui.com/r/solar-snapshot-hero.json",
    "utils"
  ],
  "files": [
    {
      "path": "src/components/custom/blocks/HeroBlock.tsx",
      "content": "\"use client\";\n\nimport React, { forwardRef, useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { AnimatedTypographyBlock, type PrefixPosition } from \"./AnimatedTypographyBlock\";\nimport { BentoCascadeHero, type BentoCascadeCardItem } from \"./BentoCascadeHeroBlock\";\nimport { BreatheHero } from \"./BreatheHeroBlock\";\nimport { SolarSnapshotHero } from \"./SolarSnapshotHeroBlock\";\nimport { ArrowRight, ArrowUpRight, Check, Copy, Sparkles, Terminal, Star, Code, Mail, FileText, Heart, ShieldCheck, ShoppingBag, Package } from \"lucide-react\";\n\n/* ═══════════════════════════════════════════════\n   SELF-CONTAINED SVG BRAND ICONS\n   ═══════════════════════════════════════════════ */\n\nconst GitHubIcon = (props: React.SVGProps<SVGSVGElement>) => (\n  <svg\n    viewBox=\"0 0 24 24\"\n    fill=\"currentColor\"\n    aria-hidden=\"true\"\n    {...props}\n  >\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.53 1.032 1.53 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z\"\n    />\n  </svg>\n);\n\n/* ═══════════════════════════════════════════════\n   TYPES & INTERFACES\n   ═══════════════════════════════════════════════ */\n\nexport interface OrbitHighlight {\n  label: string;\n  color?: string;\n}\n\nexport interface HeroBlockProps extends React.HTMLAttributes<HTMLElement> {\n  /** Animation variant: \"bounce\", \"typing\", \"slider\", \"glow-arc\", \"pet-shop\", \"doctor\", \"facility\", \"geometric\", \"vortex\", \"radar\", \"orbit\", \"orbit-gallery\", \"orbit-ring\", \"bento-cascade\" */\n  variant?:\n    | \"bounce\"\n    | \"typing\"\n    | \"slider\"\n    | \"glow-arc\"\n    | \"pet-shop\"\n    | \"doctor\"\n    | \"facility\"\n    | \"geometric\"\n    | \"vortex\"\n    | \"radar\"\n    | \"cyclone\"\n    | \"orbit\"\n    | \"orbit-gallery\"\n    | \"orbit-ring\"\n    | \"orbit-hero\"\n    | \"bento-cascade\"\n    | \"cascade\"\n    | \"breathe\"\n    | \"hero-breathe\"\n    | \"curved-cards\"\n    | \"arch\"\n    | \"solar-snapshot\"\n    | \"sun-cursor\"\n    | \"solar\";\n  /** Optional badge text displayed inside the top pill badge */\n  badgeText?: string;\n  /** Badge link URL */\n  badgeHref?: string;\n  /** Optional monospace eyebrow text above the main title (used in \"vortex\" variant) */\n  eyebrow?: string;\n  /** Main static title text prefix */\n  titlePrefix?: string;\n  /** Main static title text (used in \"orbit\" variant, falls back to titlePrefix) */\n  title?: string;\n  /** Words to animate in the bounce, typing, or flip effect */\n  typingWords?: string[];\n  /** Main static title text suffix */\n  titleSuffix?: string;\n  /** Accent line of headline (used in \"orbit\" variant, falls back to titleSuffix) */\n  titleAccent?: string;\n  /**\n   * Whether the title text before the animated word holds still (\"fixed\")\n   * or re-centres as the word changes width (\"fluid\"). Defaults to \"fluid\"\n   * for the typing variant and \"fixed\" for bounce.\n   */\n  prefixPosition?: PrefixPosition;\n  /** Subtitle / description paragraph */\n  subtitle?: string;\n  /** CLI copy command */\n  cliCommand?: string;\n  /**\n   * The element used for links. Defaults to a plain `a`, so this component works\n   * in any React app with no adaptation. In Next.js, pass `next/link` to keep\n   * client-side navigation and prefetching: `linkComponent={Link}`.\n   */\n  linkComponent?: React.ElementType;\n  /** Primary action button label */\n  primaryActionLabel?: string;\n  /** Primary action button URL */\n  primaryActionHref?: string;\n  /** Secondary action button label */\n  secondaryActionLabel?: string;\n  /** Secondary action button URL */\n  secondaryActionHref?: string;\n  /** Array of image URLs for the continuous right-to-left thumbnail slider (used in \"slider\" variant) */\n  sliderImages?: string[];\n  /** Main featured image URL for the right column (used in \"slider\" variant) */\n  mainImage?: string;\n  /** Array of category pill tags (used in \"pet-shop\" variant) */\n  categories?: string[];\n  /** Rating text (used in \"pet-shop\" variant, e.g. \"4.9 ★ Rated\") */\n  ratingText?: string;\n  /** Feature pill badge text (used in \"pet-shop\" variant) */\n  featurePillText?: string;\n  /** Array of top badge strings (used in \"pet-shop\" variant) */\n  badgeTags?: string[];\n  /** Main featured pet image URL (used in \"pet-shop\" variant) */\n  petImage?: string;\n  /** Secondary pet avatar image URL (used in \"pet-shop\" variant) */\n  secondaryPetImage?: string;\n  /** Key statistics / metrics shown at the bottom (used in \"vortex\" variant) */\n  metrics?: Array<{ value: string; label: string }>;\n  /** Radar/cyclone HUD card title (used in \"vortex\" variant) */\n  hudTitle?: string;\n  /** Radar/cyclone HUD timestamp/status (used in \"vortex\" variant) */\n  hudTime?: string;\n  /** Radar/cyclone HUD telemetry items (used in \"vortex\" variant) */\n  hudMetrics?: Array<{ label: string; value: string }>;\n  /** Speed of the rotating vortex in radians per frame (default: 0.014) */\n  rotationSpeed?: number;\n  /** Custom accent color (CSS color or tailwind var) */\n  color?: string;\n  /** Array of image URLs for the revolving circular photo ring (used in \"orbit\" variant) or bento cascade variant */\n  images?: string[];\n  /** Array of custom card objects for the bento cascade variant */\n  cards?: BentoCascadeCardItem[];\n  /** Optional custom image rendering component (e.g. Next.js next/image) */\n  imageComponent?: React.ElementType;\n  /** Seconds for one full orbit revolution (used in \"orbit\" variant, default: 36) */\n  duration?: number;\n  /** Dotted bullet highlights under actions (used in \"orbit\" variant) */\n  highlights?: OrbitHighlight[];\n}\n\ntype Rgb = [number, number, number];\n\nconst LIGHT_SURFACE_LUM = 1;\nconst DARK_SURFACE_LUM = 0.003;\nconst MIN_CONTRAST = 3;\n\nconst parseColor = (input: string): Rgb | null => {\n  const hex = input.trim().replace(/^#/, \"\");\n  if (/^[a-f\\d]{3}$/i.test(hex)) {\n    const [r, g, b] = hex.split(\"\");\n    return [parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16)];\n  }\n  if (/^[a-f\\d]{6}$/i.test(hex)) {\n    return [\n      parseInt(hex.slice(0, 2), 16),\n      parseInt(hex.slice(2, 4), 16),\n      parseInt(hex.slice(4, 6), 16),\n    ];\n  }\n  const m = input.match(/^rgba?\\(\\s*([\\d.]+)[\\s,]+([\\d.]+)[\\s,]+([\\d.]+)/i);\n  return m ? [+m[1], +m[2], +m[3]] : null;\n};\n\nconst relLuminance = ([r, g, b]: Rgb) => {\n  const f = (v: number) => {\n    const c = v / 255;\n    return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n  };\n  return 0.2126 * f(r) + 0.7152 * f(g) + 0.0722 * f(b);\n};\n\nconst contrast = (a: number, b: number) =>\n  (Math.max(a, b) + 0.05) / (Math.min(a, b) + 0.05);\n\nconst ensureContrast = (rgb: Rgb, surfaceLum: number, target: 0 | 255): Rgb => {\n  let out = rgb;\n  for (let i = 0; i < 16; i++) {\n    if (contrast(relLuminance(out), surfaceLum) >= MIN_CONTRAST) break;\n    out = out.map((v) => Math.round(v + (target - v) * 0.12)) as Rgb;\n  }\n  return out;\n};\n\nconst toCss = ([r, g, b]: Rgb) => `rgb(${r}, ${g}, ${b})`;\n\nconst getAccentForeground = (rgb: Rgb | null): string => {\n  if (!rgb) return \"var(--primary-foreground)\";\n  return relLuminance(rgb) > 0.45 ? \"#09090b\" : \"#ffffff\";\n};\n\n/* ═══════════════════════════════════════════════\n   DEFAULT DEVELOPER-FIRST RENDER & CODE IMAGES\n   ═══════════════════════════════════════════════ */\n\nconst DEFAULT_SLIDER_IMAGES = [\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_800,c_limit/v1790148864/photo-1618005182384-a83a8bd57fbe-1790148865111.jpg\",\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_800,c_limit/v1790158810/photo-1634017839464-5c339ebe3cb4-1790158812203.jpg\",\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_800,c_limit/v1790158809/photo-1618005198919-d3d4b5a92ead-1790158812198.jpg\",\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_800,c_limit/v1790158809/photo-1633356122544-f134324a6cee-1790158812203.jpg\",\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_800,c_limit/v1790158809/photo-1620641788421-7a1c342ea42e-1790158812200.jpg\",\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_800,c_limit/v1790158811/photo-1635070041078-e363dbe005cb-1790158812204.jpg\",\n];\n\nconst DEFAULT_MAIN_IMAGE =\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_1200,c_limit/v1790150482/photo-1524504388940-b1c1722653e1-1790150482279.jpg\";\n\nconst DEFAULT_ORBIT_IMAGES = [\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790146210/photo-1506744038136-46273834b3fb-1790146212208.jpg\", // Yosemite\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790145141/photo-1448375240586-882707db888b-1790145143491.jpg\", // Sunlit forest path\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790146209/photo-1470071459604-3b5ec3a7fe05-1790146212205.jpg\", // Mountain fog\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790146211/photo-1441974231531-c6227db76b6e-1790146212212.jpg\", // Forest sunbeam\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790146210/photo-1472214103451-9374bd1c798e-1790146212205.jpg\", // Green valley\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790146210/photo-1501785888041-af3ef285b470-1790146212207.jpg\", // Mountain lake\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790146209/photo-1469474968028-56623f02e42e-1790146212205.jpg\", // Wilderness\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790145140/photo-1426604966848-d7adac402bff-1790145143490.jpg\", // Peak at sunset\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790148863/photo-1447752875215-b2761acb3c5d-1790148865109.jpg\", // Autumn stream\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790146210/photo-1507525428034-b723cf961d3e-1790146212208.jpg\", // Tropical coast\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790158813/photo-1433086966358-54859d0ed716-1790158812209.jpg\", // Waterfall\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790145141/photo-1464822759023-fed622ff2c3b-1790145143491.jpg\", // Alps\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790145142/photo-1500530855697-b586d89ba3ee-1790145143493.jpg\", // Golden lake\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790148863/photo-1473448912268-2022ce9509d8-1790148865110.jpg\", // Pine forest\n  \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_600,c_limit/v1790158814/photo-1518495973542-4542c06a5843-1790158812213.jpg\", // Sunlit trees\n];\n\nconst DEFAULT_ORBIT_HIGHLIGHTS: OrbitHighlight[] = [\n  { label: \"15 hand-picked scenes\" },\n  { label: \"Full-circle rotation\", color: \"#10b981\" },\n  { label: \"Holds still on hover\", color: \"#f59e0b\" },\n];\n\n/* ═══════════════════════════════════════════════\n   MOTION (CSS keyframes, no animation library)\n   ═══════════════════════════════════════════════ */\n\n/** A tween given only a duration eases out: cubic-bezier(0, 0, 0.58, 1). */\nconst EASE_OUT = \"cubic-bezier(0, 0, 0.58, 1)\";\n/** The blueprint grid's lines and shape glide between hover zones. */\nconst GLIDE = { duration: 900, easing: \"cubic-bezier(0.16, 1, 0.3, 1)\" };\n\nconst HERO_CSS = `\n@keyframes hero-rise-30 { from { opacity: 0; transform: translateY(30px); } }\n@keyframes hero-rise-20 { from { opacity: 0; transform: translateY(20px); } }\n@keyframes hero-grow { from { opacity: 0; transform: scale(0.95); } }\n`;\n\n/** Where the blueprint's four grid lines and the shape sit for each hover zone. */\ntype ShapeZone = \"idle\" | \"left\" | \"right\" | \"center\";\nconst shapeTargets = (zone: ShapeZone): Record<string, string>[] => {\n  const pick = (right: string, left: string, rest: string) => (zone === \"right\" ? right : zone === \"left\" ? left : rest);\n  return [\n    { top: pick(\"26%\", \"30%\", \"28%\") }, // top line\n    { top: pick(\"74%\", \"70%\", \"72%\") }, // bottom line\n    { left: pick(\"23%\", \"29%\", \"26%\") }, // left line\n    { left: pick(\"77%\", \"71%\", \"74%\") }, // right line\n    // the shape, bounded by all four\n    { left: pick(\"23%\", \"29%\", \"26%\"), width: pick(\"54%\", \"42%\", \"48%\"), top: pick(\"26%\", \"30%\", \"28%\"), height: pick(\"48%\", \"40%\", \"44%\") },\n  ];\n};\n\n/* ═══════════════════════════════════════════════\n   VORTEX RADAR CYCLONE DEFAULTS & EXACT RADAR CANVAS\n   ═══════════════════════════════════════════════ */\n\nconst DEFAULT_VORTEX_METRICS = [\n  { value: \"134M\", label: \"PARCELS COVERED\" },\n  { value: \"412K\", label: \"SCORES A DAY\" },\n  { value: \"180ms\", label: \"P95 RESPONSE\" },\n];\n\nconst DEFAULT_HUD_METRICS = [\n  { label: \"SUSTAINED\", value: \"129 kt\" },\n  { label: \"CENTRAL\", value: \"959 mb\" },\n  { label: \"EYE\", value: \"50 km\" },\n  { label: \"TRACK\", value: \"W 271°\" },\n  { label: \"SWATH Ø\", value: \"16 km\" },\n];\n\n// Exact dot-for-dot coordinates extracted from the climate risk radar reference image (804 points)\nconst VORTEX_COORDS_B64 = \"dP8q+LD/Kvju/yj4MgAq+G4AKviyACj48AAq+C4BKPhyASr4rgEq+PQBKvgwAir4bgIo+LICKvjuAir4MgMo+HADKviuAyj48gMq+C4EKvh0BCr4cgYq+HL8Zviw/Gj48P5o+DD/aPhy/2j4sP9m+PH/afgyAGb4cABo+LIAaPjwAGb48AJo+DIDaPhwA2b4sQNp+PADaPgwBGj4cgRo+LAEZvjuBGj4Mfyq+DL+qvhy/qr4rv6q+PD+qvgw/6r4cv+q+LD/rPgwBKr4cgSq+LAErPjuBKr4MAWq+HAFqviyBar4tPvo+O796Pgy/ur4cP7o+LH+6Pjy/uj4sATo+O4E6vgyBej4bgXo+LIF6vjwBej4cf0p+a8FKfkxBin5Mvsp+bD9LPnx/Sn5Mv4p+XD+KfnxBCn5cAUs+fAFKflwBin58fpq+TD9avlx/Wr5sv1q+e79avlw/mr5sf5q+fL+avkuAWj5cgFq+a4BavluBWr58AVq+S4GaPlyBmr5svqo+fL8qPkw/ab5cf2p+bD9qPnw/aj5cQKp+a8FqflwBqj5cvrq+bD86vny/Or5MP3s+XT96vnwAur5MgPq+fAF7Pkw+ir6cvwo+q78KPry/Cr6cAMo+i4GKvox/Gn6sfxp+vD5bPpw/Gz68ANp+nAGafqx+ar68Puq+jH8qvpy/Kr6LgSq+nL56Pqy++j68Pvm+jH86fpy/+j6sP/m+vH/6fowAOj6cADo+rIA6PrwAOb6cgTo+nD7Kvuy+yr78Pss+zH8Kvtw/iz7sf4q+3IBLPuwASr7Mvto+277aPuy+2r78Pto++79aPvwAGj7LgFq+3IBaPuuAWj78gFq+zACaPtuAmr7sgJo+/H6qftx+6n7svup+3H9qfswAKz7cACs+7IArPvwAKn7LwGp+3ABqfuwAaz78gGs+zACqftxAqz7sAKs+/ACrPsyA6n7bgOs+zAFrPsy++r7bvvq+7T76vsw/er7sP/q+/H/6vsyAOr7bgDq+7QA6vvwAOr7LgHo+24C6PuyAur77gLq+zID6PtwA+r7rgPo+/ID6vsuBOr7bgXq+7L6KPww+yj8cPso/PL8KPxy/yj8sv8o/PH/KfwwACj8sQMp/PADKPwwBCj8cgQo/K8FKfxwAyb8cvpq/DL7bPxw+2r8sPxq/PL+bPww/2r8cv9q/LD/bPyxA2r88ANq/C4EbPxyBGr8sARs/O4Eavzx+qv8Mvuo/HD7qvxy/Kj8rv6q/PL+qPwu/6j8cv+q/PIDqPxyBKr8sASo/O4EqvwyBaj88AWo/DD67Pzx+un8Mvvp/DH87Pyx/un88P7s/DD/7PwwBOz8sgTs/O4E7PwwBez8cAXs/C4G7Pzx+ir9Mvsq/fD7Kv1w/ir9sf4q/fL+Kv0yBSr9bgUq/a8FKv0xBir98fpp/bH+af1yBGj9cAVo/bIFaP3w+Wj9MPto/XL+aP3uBWj98vms/bD6rP3x+qz9Mvus/bL7qv0y/qr9cP6s/bAErP1uBaz9sgWq/fAFrP0uBqr9cgas/bD66P3x+uv9Mvvo/TL+6v1w/uj9sATo/bIF6v3wBej9Lgbq/XIG6P2x+Sz+svos/vH6LP4y+y7+cPss/jL+LP5y/iz+8AUu/i4GLP5wBiz+sflq/rD6av7x+mr+Mvtq/m77av40/mr+cP5q/nT/av6w/2r+7P9q/jIAav5uAGr+tABq/vAAav7sBGr+LAZq/nIGav7x+qn+Mv6o/jD/qP5y/6j+7v+o/jAAqP5wAKj+sgCo/i4BqP5wAaj+sAGo/vIBqP7uBKj+Lgao/rL6qP4y+6v+cv6o/rL/qP7wAKv+MAKr/nAGqP6w+uz+9Prq/jL77P4y/ur+cP7s/vL+7P4u/+z+cv/q/rD/7P7u/+r+MgDs/m4A7P6yAOr+8ADs/i4B6v5yAez+rgHs/vIB6v4wAuz+bgLq/rIC7P5yBuz+8for/zL7KP8y/ir/cP4o/67+Kv/y/ij/Lv8o/3L/Kv/wACj/LgEq/3IBKP+uASj/MAIo/3ECK/+yAij/8AIq/3IGKP9y+Wz/8fps/zD7bP8y/mz/cP5u/7H+bP/w/mz/MP9s/y4BbP9wAWz/sAFs/7ACbP/wAmz/MgNs/zAFbP9w+ar/8fqq/zL7qv9w/qr/rv6s//L+qv8u/6r/LAGq/3IBqv+uAar/7gKq/y8Dqv8yBar/8frp/3D76P+x/un/8P7o/zEB6f9wAej/sAHo//AC6P8yA+j/cvno/zD76P9y/uj/cAPr/zAF6P9w+SwAMvssAHD7KgBw/iwArv4qAPL+LAAu/ywALgEqAHIBLACuASwAMgMqAHADLAAyBSwAcPloADL7aABw+2oAsvtqAK7+agDy/mgALv9oAC4BagBwAWoArgFoADIDagBwA2gArgNqADAFagAw+6wAcPusALL7rACx/qwA8P6sADD/rABy/6wA8ACuAC4BrABwAawAsAGsAHADrgCxA6wAMAWsADL76gBu++oAtPvqAPD76gDy/uoALv/qAHT/6gCw/+oA7v/sAG4A6gC0AOoA8ADqACwB6gByAeoAcAPqAKwD6gAx/CsBMf8rAXL/KwHx/ysBMQErAbEDKwGy+ysB8PsrAfD+KwGw/ysBMgArAXAAKAGyACgB8AArAXADKwGx+WoB8PtsATH8agFy/GwBcv9qAbD/bAHu/2oBMgBsAW4AbAGyAGoB8ABsAXADbAGuA2oB8gNsAe4EagGx+asBcPuqAfD7qAEx/KsBcvyoAbD8qgHu/6oBMACqAXAAqgGyAKoBcAOoAbEDqwHwA6oB7gSqATH87AFy/O4BsPzsAfL87AEyAO4BcADsAXAD7gGxA+wBsATuAfL5KgK0+yoCrvwqAvT8KgIw/SoCcf0qArD/KgLu/ywCMgAqAm4AKgJwAyoCrgMsArAEKgJyBioC8vxrAnH9awLx/WsCMv5rAq/+awIx/2sCcv9rArP/awLv/2sCsQNrAvL5awIy/WgCsP1uAnD+awLw/msCMABoAnADawJyBG4C8PusAnH9rAKy/awC7v2sAjT+rAJw/qwCrv6qAvL+rAIu/6wCdP+sArD/rAJwA6wCrgOqAnIEqgIuBqoCMPrqAjH86wIyA+oCcAPoArED6wIwBOoCLgbqAjIDLANwAy4D8AMsA/AFLgNw+WoDdPpqA3L8agPuAmoDLwNqA3ADagOuA2wD8AVqA7H5qwOy+qgDsfyrAzIDqwOvBasDcPmrA7ACqAPwAqgDcAOrA3D57AOx+ewD8vnsAzD97AOyAuwD7gLsAzID6gNuBewDcPkoBLH5KwTy+SgEMPoqBPH6KwR0/SoEcQIrBLACKgTwAioEcAYqBLH5bATy+W4EMPpsBHL6bAQy+24E8P1sBDD6rARy+qwEsPqqBPH6qgRu+6oEcP6qBLH+qgTx+usEMf/rBHL/6wTx/+sEcPnrBHL66wSy+u4EMvvrBLL76wSw/+sEMgDrBHEA6wSyAOsE8ADrBLH5LAWw+iwF8fosBTL7LAVu+ywFtPssBfD7LAXy+WgFMvtoBXD7agWy+2oF8vtqBTH8awVw/GoFcABqBbIAagXwAGgFMPqsBbL7rAXw+64FLvysBXL8rgWw/KwF8vysBTD9rgVu/awFcv+sBbD/rgXu/6wFMgCuBXAArAWyAKwF8ACuBXL67AUx/OoFcvzqBa786gXy/OwFMP3qBXH96gWy/eoF7v3qBTL+7AVw/uoFsf7qBfL+6gUu/+oFcv/sBbD/6gXu/+wFMgDqBW4A6gWyAOwFsvouBvL8KwYy/S4Gcf0rBrD9Lgbx/SsGMv4uBnD+Kwax/i4G8P4uBjD/LgZy/ysGsv8uBvH/Lgbx+mwGcP5sBrH+bAYy+6gGsP+oBvH/qwYwAKoGcACqBrIAqgay++wG8PsqB3L5bgdw/G4H9PysBzD9rAcw+uoH8P3qB7D96gdw+S4IsfksCHL6LAhw/i4Isf4sCPL+Lggu/y4ILgEsCHIBLgiuAS4I7gIuCDIDLAhwAy4IrgMsCPIDLgjwBS4IGgJKBNcBeASRAaIERgHHBH8CWQQ7Ao0E9AG9BKkB6QRaAQ8FCAExBSYDIgTnAmAEpAKaBFwC0QQQAgMFwQEwBW0BWAUWAXsFUwNeBBEDnwTJAtwEfQIUBS0CSAXZAXcFgAGgBSUBxAVuBDIGIgRvBtIDqAZ/A94GKQMPB9ACPAd1AmUHGAKKB7gBqQdXAcQHnQRzBk0Esgb6A+4GowMlB0kDWAftAocHjgKxBy0C1wfKAfcH\";\n\nfunction decodeVortexCoords(b64: string): Array<[number, number]> {\n  if (typeof window === \"undefined\") return [];\n  try {\n    const bin = atob(b64);\n    const bytes = new Uint8Array(bin.length);\n    for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);\n    const int16 = new Int16Array(bytes.buffer);\n    const result: Array<[number, number]> = [];\n    for (let i = 0; i < int16.length; i += 2) {\n      result.push([int16[i] / 10, int16[i + 1] / 10]);\n    }\n    return result;\n  } catch {\n    return [];\n  }\n}\n\nfunction VortexCanvas({\n  speed = 0.010,\n  className,\n}: {\n  speed?: number;\n  className?: string;\n}) {\n  const canvasRef = useRef<HTMLCanvasElement | null>(null);\n  const angleRef = useRef(0);\n  const gridRef = useRef<Array<{ x: number; y: number; r: number }>>([]);\n  const scaleRef = useRef<number>(1);\n\n  // Pre-rasterized 2D spatial hitmap of the cyclone shape (804 points), spanning 560x560 to cover all 360deg rotations:\n  const hitmapData = React.useMemo(() => {\n    const pts = decodeVortexCoords(VORTEX_COORDS_B64);\n    const CELL_SIZE = 2.5;\n    const ORIGIN_X = 280;\n    const ORIGIN_Y = 280;\n    const GRID_W = Math.ceil(560 / CELL_SIZE);\n    const GRID_H = Math.ceil(560 / CELL_SIZE);\n    const hitmap = new Uint8Array(GRID_W * GRID_H);\n    const R_HIT = 4.2;\n    const rCells = Math.ceil(R_HIT / CELL_SIZE);\n\n    for (let i = 0; i < pts.length; i++) {\n      const [px, py] = pts[i];\n      const cx = Math.round((px + ORIGIN_X) / CELL_SIZE);\n      const cy = Math.round((py + ORIGIN_Y) / CELL_SIZE);\n      for (let dy = -rCells; dy <= rCells; dy++) {\n        for (let dx = -rCells; dx <= rCells; dx++) {\n          if (dx * dx + dy * dy <= rCells * rCells) {\n            const gx = cx + dx;\n            const gy = cy + dy;\n            if (gx >= 0 && gx < GRID_W && gy >= 0 && gy < GRID_H) {\n              hitmap[gy * GRID_W + gx] = 1;\n            }\n          }\n        }\n      }\n    }\n\n    return { hitmap, CELL_SIZE, ORIGIN_X, ORIGIN_Y, GRID_W, GRID_H };\n  }, []);\n\n  useEffect(() => {\n    const canvas = canvasRef.current;\n    if (!canvas) return;\n\n    let animId: number;\n    let isReducedMotion = false;\n    if (typeof window !== \"undefined\") {\n      isReducedMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n    }\n\n    const updateCanvasSize = () => {\n      if (!canvas) return;\n      const parent = canvas.parentElement;\n      const rect = parent ? parent.getBoundingClientRect() : canvas.getBoundingClientRect();\n      const dpr = Math.min(window.devicePixelRatio || 1, 2);\n      const width = Math.max(rect.width, 300);\n      const height = Math.max(rect.height, 300);\n\n      canvas.width = width * dpr;\n      canvas.height = height * dpr;\n      canvas.style.width = width + \"px\";\n      canvas.style.height = height + \"px\";\n\n      // Scale cyclone to fit comfortably within radar frame (eye at center, arms sweeping outward)\n      const scale = Math.min(width, height) / 460;\n      scaleRef.current = scale;\n\n      // Fill entire radar frame right up to all 4 borders (top, bottom, left, right):\n      const halfW = (width / 2) / scale;\n      const halfH = (height / 2) / scale;\n      const step = 6.4;\n\n      const xStart = -Math.ceil(halfW / step) * step;\n      const xEnd = Math.ceil(halfW / step) * step;\n      const yStart = -Math.ceil(halfH / step) * step;\n      const yEnd = Math.ceil(halfH / step) * step;\n\n      const dots: Array<{ x: number; y: number; r: number }> = [];\n      for (let y = yStart; y <= yEnd; y += step) {\n        for (let x = xStart; x <= xEnd; x += step) {\n          dots.push({\n            x: Number(x.toFixed(1)),\n            y: Number(y.toFixed(1)),\n            r: Number(Math.hypot(x, y).toFixed(1)),\n          });\n        }\n      }\n      gridRef.current = dots;\n    };\n\n    updateCanvasSize();\n\n    const resizeObserver = new ResizeObserver(() => {\n      updateCanvasSize();\n    });\n    if (canvas.parentElement) {\n      resizeObserver.observe(canvas.parentElement);\n    }\n\n    const render = () => {\n      if (!canvas) return;\n      const ctx = canvas.getContext(\"2d\");\n      if (!ctx) return;\n\n      const dpr = Math.min(window.devicePixelRatio || 1, 2);\n      const w = canvas.width / dpr;\n      const h = canvas.height / dpr;\n      const cx = w / 2;\n      const cy = h / 2;\n\n      const scale = scaleRef.current || Math.min(w, h) / 460;\n      const dotRadiusDim = Math.max(1.0, 1.25 * scale);\n      const dotRadiusLit = Math.max(1.85, 2.15 * scale);\n\n      const staticGrid = gridRef.current;\n      if (staticGrid.length === 0) {\n        animId = requestAnimationFrame(render);\n        return;\n      }\n\n      ctx.clearRect(0, 0, canvas.width, canvas.height);\n      ctx.save();\n      ctx.scale(dpr, dpr);\n      ctx.translate(cx, cy);\n      ctx.scale(scale, scale);\n\n      // Pass 1: Render ALL stationary grid dots in faint, translucent white\n      // IMPORTANT: Dots NEVER change physical positions! They remain fixed in their matrix.\n      ctx.fillStyle = \"rgba(255, 255, 255, 0.14)\";\n      ctx.beginPath();\n      for (let i = 0; i < staticGrid.length; i++) {\n        const d = staticGrid[i];\n        ctx.moveTo(d.x + dotRadiusDim, d.y);\n        ctx.arc(d.x, d.y, dotRadiusDim, 0, Math.PI * 2);\n      }\n      ctx.fill();\n\n      // Pass 2: Render illuminated white dots where the cyclone vortex sweeps over them\n      // Coherent rotation preserves the EXACT shape from the reference image without shearing.\n      // Clockwise rotation unwinds counter-clockwise spiral arms so they propagate outward from the eye.\n      // Outward radial pulse wave: Radiates concentric ripples of luminous intensity from center out.\n      const { hitmap, CELL_SIZE, ORIGIN_X, ORIGIN_Y, GRID_W, GRID_H } = hitmapData;\n      const angle = angleRef.current;\n      const cos = Math.cos(angle);\n      const sin = Math.sin(angle);\n\n      ctx.fillStyle = \"#ffffff\";\n      ctx.beginPath();\n      for (let i = 0; i < staticGrid.length; i++) {\n        const d = staticGrid[i];\n\n        // Clockwise sampling unwinds spiral arms outward from center:\n        const rx = d.x * cos - d.y * sin;\n        const ry = d.x * sin + d.y * cos;\n\n        const gx = Math.round((rx + ORIGIN_X) / CELL_SIZE);\n        const gy = Math.round((ry + ORIGIN_Y) / CELL_SIZE);\n        const isLit =\n          gx >= 0 && gx < GRID_W && gy >= 0 && gy < GRID_H && hitmap[gy * GRID_W + gx] === 1;\n\n        if (isLit) {\n          // Outward radial wave pulse: travels continuously from center eye to outer edge\n          const radialWave = Math.sin(d.r * 0.05 - angle * 3.5);\n          const rLit = dotRadiusLit * (0.95 + 0.12 * Math.max(0, radialWave));\n          ctx.moveTo(d.x + rLit, d.y);\n          ctx.arc(d.x, d.y, rLit, 0, Math.PI * 2);\n        }\n      }\n      ctx.fill();\n\n      ctx.restore();\n\n      if (!isReducedMotion) {\n        angleRef.current += speed;\n        animId = requestAnimationFrame(render);\n      }\n    };\n\n    render();\n\n    return () => {\n      if (animId) cancelAnimationFrame(animId);\n      resizeObserver.disconnect();\n    };\n  }, [hitmapData, speed]);\n\n  return (\n    <canvas\n      ref={canvasRef}\n      className={cn(\"w-full h-full block pointer-events-none select-none\", className)}\n    />\n  );\n}\n\n\n\n/* ═══════════════════════════════════════════════\n   MAIN HERO BLOCK COMPONENT\n   ═══════════════════════════════════════════════ */\n\nexport const HeroBlock = forwardRef<HTMLElement, HeroBlockProps>(\n  (\n    {\n      variant = \"bounce\",\n      linkComponent: Link = \"a\",\n      badgeText = \"Next-Gen React Components\",\n      badgeHref = \"#\",\n      eyebrow,\n      titlePrefix = \"Build \",\n      title,\n      typingWords = [\n        \"Interfaces\",\n        \"Components\",\n        \"Experiences\",\n        \"Animations\",\n        \"Dashboards\",\n      ],\n      titleSuffix = \"\",\n      titleAccent,\n      prefixPosition,\n      subtitle = \"A meticulous library of React components & interactive blocks, engineered for seamless performance with Tailwind CSS, TypeScript, GSAP, and Motion.\",\n      cliCommand = \"npx shadcn@latest add @avara-ui/button\",\n      primaryActionLabel = \"Browse Components\",\n      primaryActionHref = \"#\",\n      secondaryActionLabel = \"Star on GitHub\",\n      secondaryActionHref = \"#\",\n      sliderImages = DEFAULT_SLIDER_IMAGES,\n      mainImage = DEFAULT_MAIN_IMAGE,\n      petImage,\n      secondaryPetImage,\n      categories = [\"Dry Food\", \"Toys\", \"Grooming\", \"Wellness\", \"Subscription\"],\n      ratingText = \"4.9 ★ Rated\",\n      featurePillText = \"24/7 Vet Care\",\n      badgeTags = [\"Certified Organic & Vet Approved\", \"4.9 Star Rated\"],\n      metrics,\n      hudTitle,\n      hudTime,\n      hudMetrics,\n      rotationSpeed,\n      color,\n      images,\n      cards,\n      imageComponent,\n      duration = 36,\n      highlights,\n      className,\n      style,\n      onMouseMove,\n      onMouseEnter,\n      onMouseLeave,\n      ...props\n    },\n    ref,\n  ) => {\n    const [copied, setCopied] = useState(false);\n    // Shape hover zone state (used when variant === \"facility\" || variant === \"geometric\")\n    const [shapeHoverZone, setShapeHoverZone] = useState<ShapeZone>(\"idle\");\n\n    // Blueprint grid (used when variant === \"facility\" || \"geometric\"): the\n    // lines and the shape render at their zone's place; on a zone change each\n    // glides there from wherever it is on screen, the full 0.9s every time.\n    const shapeRefs = useRef<(HTMLDivElement | null)[]>([]);\n    const shapeAnims = useRef<(Animation | null)[]>([]);\n    const shapePlaced = useRef<Record<string, string>[] | null>(null);\n    const isBlueprint = variant === \"facility\" || variant === \"geometric\";\n    useLayoutEffect(() => {\n      if (!isBlueprint) {\n        shapePlaced.current = null;\n        return;\n      }\n      const targets = shapeTargets(shapeHoverZone);\n      const previous = shapePlaced.current;\n      shapePlaced.current = targets;\n      if (!previous) return;\n      targets.forEach((to, i) => {\n        const el = shapeRefs.current[i];\n        const before = previous[i];\n        if (!el || Object.keys(to).every((key) => to[key] === before[key])) return;\n        const running = shapeAnims.current[i];\n        let from = before;\n        if (running && running.playState === \"running\") {\n          const cs = getComputedStyle(el);\n          from = Object.fromEntries(Object.keys(to).map((key) => [key, cs.getPropertyValue(key)]));\n          running.cancel();\n        }\n        shapeAnims.current[i] = typeof el.animate === \"function\" ? el.animate([from, to], GLIDE) : null;\n      });\n    }, [shapeHoverZone, isBlueprint]);\n\n    const handleCopy = () => {\n      if (typeof window !== \"undefined\" && navigator.clipboard) {\n        navigator.clipboard.writeText(cliCommand);\n        setCopied(true);\n        setTimeout(() => setCopied(false), 2000);\n      }\n    };\n\n    const getAccentColor = (col?: string) => {\n      if (!col || col === \"primary\" || col === \"default\") return undefined;\n      const presets: Record<string, string> = {\n        lavender: \"#9b8afb\",\n        indigo: \"#6366f1\",\n        rose: \"#f43f5e\",\n        emerald: \"#10b981\",\n        zinc: \"#18181b\",\n      };\n      return presets[col] || col;\n    };\n\n    const resolvedColor = getAccentColor(color);\n    const accentRgb = resolvedColor ? parseColor(resolvedColor) : null;\n\n    const customStyle = {\n      \"--hero-accent-text\": accentRgb\n        ? `light-dark(${toCss(\n            ensureContrast(accentRgb, LIGHT_SURFACE_LUM, 0),\n          )}, ${toCss(ensureContrast(accentRgb, DARK_SURFACE_LUM, 255))})`\n        : \"var(--primary)\",\n      ...(resolvedColor ? { \"--primary\": resolvedColor } : {}),\n      ...(accentRgb\n        ? {\n            \"--primary-foreground\": getAccentForeground(accentRgb),\n          }\n        : {}),\n    } as React.CSSProperties;\n\n    /* ═══════════════════════════════════════════════\n       VARIANT: BENTO CASCADE INFINITE MOTION HERO\n       ═══════════════════════════════════════════════ */\n    if (variant === \"bento-cascade\" || variant === \"cascade\") {\n      const bentoImages =\n        images && images.length > 0\n          ? images\n          : sliderImages && sliderImages !== DEFAULT_SLIDER_IMAGES\n            ? sliderImages\n            : undefined;\n\n      return (\n        <BentoCascadeHero\n          ref={ref as any}\n          title={title || (titlePrefix === \"Build \" ? \"Explore wild nature & plan\" : titlePrefix) || \"Explore wild nature & plan\"}\n          titleAccent={titleAccent || (titleSuffix ? titleSuffix : \"your next escape\")}\n          subtitle={\n            subtitle === \"A meticulous library of React components & interactive blocks, engineered for seamless performance with Tailwind CSS, TypeScript, GSAP, and Motion.\"\n              ? \"Discover handpicked alpine sanctuaries, secluded glacial lakes, and ancient redwood trails tailored for unforgettable outdoor journeys.\"\n              : subtitle\n          }\n          primaryActionLabel={primaryActionLabel === \"Browse Components\" ? \"Start exploring\" : primaryActionLabel}\n          primaryActionHref={primaryActionHref === \"/docs\" ? \"#explore\" : primaryActionHref}\n          secondaryActionLabel={secondaryActionLabel === \"Star on GitHub\" ? \"View journeys\" : secondaryActionLabel}\n          secondaryActionHref={secondaryActionHref === \"https://github.com/AlgorizeTech\" ? \"#destinations\" : secondaryActionHref}\n          cards={cards}\n          images={bentoImages}\n          accent={color}\n          linkComponent={Link}\n          imageComponent={imageComponent}\n          className={className}\n          style={style}\n          {...props}\n        />\n      );\n    }\n\n    /* ═════════════════════════════════════════\n       VARIANT: BREATHE CURVED ARCH MOTION HERO\n       ═════════════════════════════════════════ */\n    if (\n      variant === \"breathe\" ||\n      variant === \"hero-breathe\" ||\n      variant === \"curved-cards\" ||\n      variant === \"arch\"\n    ) {\n      const breatheImages =\n        images && images.length > 0\n          ? images\n          : sliderImages && sliderImages !== DEFAULT_SLIDER_IMAGES\n            ? sliderImages\n            : undefined;\n\n      const breatheBadgeText =\n        badgeText === \"Next-Gen React Components\"\n          ? \"Interactive Motion Architecture\"\n          : badgeText;\n      const breatheBadgeHref =\n        !badgeHref || badgeHref === \"/docs\" || badgeHref === \"#\"\n          ? \"#explore\"\n          : badgeHref;\n      const breatheSecLabel =\n        secondaryActionLabel === \"Explore Blocks\"\n          ? \"View Showroom\"\n          : secondaryActionLabel;\n      const breatheSecHref =\n        secondaryActionHref === \"#features\" || secondaryActionHref === \"#\"\n          ? \"#showroom\"\n          : secondaryActionHref;\n\n      return (\n        <BreatheHero\n          ref={ref as any}\n          title={\n            title ||\n            (titlePrefix === \"Build \" ? \"Crafted for depth,\" : titlePrefix) ||\n            \"Crafted for depth,\"\n          }\n          titleAccent={\n            titleAccent || (titleSuffix ? titleSuffix : \"built for motion.\")\n          }\n          badgeText={breatheBadgeText}\n          badgeHref={breatheBadgeHref}\n          description={\n            subtitle ===\n            \"A meticulous library of React components & interactive blocks, engineered for seamless performance with Tailwind CSS, TypeScript, GSAP, and Motion.\"\n              ? \"Create immersive digital experiences where fluid scroll choreography, spatial architecture, and tactile visual polish move in effortless harmony.\"\n              : subtitle\n          }\n          buttonLabel={\n            primaryActionLabel === \"Browse Components\"\n              ? \"Start Exploring\"\n              : primaryActionLabel\n          }\n          buttonHref={\n            !primaryActionHref || primaryActionHref === \"/docs\" || primaryActionHref === \"#\"\n              ? \"#get-started\"\n              : primaryActionHref\n          }\n          secondaryButtonLabel={breatheSecLabel}\n          secondaryButtonHref={breatheSecHref}\n          cards={cards as any}\n          images={breatheImages}\n          accent={color}\n          linkComponent={Link}\n          imageComponent={imageComponent}\n          className={className}\n          style={style}\n          {...props}\n        />\n      );\n    }\n\n    /* ═════════════════════════════════════════\n       VARIANT: SOLAR SNAPSHOT SUN CURSOR HERO\n       ═════════════════════════════════════════ */\n    if (\n      variant === \"solar-snapshot\" ||\n      variant === \"sun-cursor\" ||\n      variant === \"solar\"\n    ) {\n      return (\n        <SolarSnapshotHero\n          ref={ref as any}\n          title={\n            title ||\n            (titlePrefix === \"Build \"\n              ? \"Where natural light meets\"\n              : titlePrefix) ||\n            \"Where natural light meets\"\n          }\n          titleAccent={\n            titleAccent ||\n            (titleSuffix ? titleSuffix : \"expressive digital craft.\")\n          }\n          description={\n            subtitle ===\n            \"A meticulous library of React components & interactive blocks, engineered for seamless performance with Tailwind CSS, TypeScript, GSAP, and Motion.\"\n              ? \"Guide the radiant sun across the canvas with your cursor and click anywhere to capture an instant live snapshot of the stage.\"\n              : subtitle\n          }\n          primaryActionLabel={\n            primaryActionLabel === \"Browse Components\"\n              ? \"Initiate Project\"\n              : primaryActionLabel\n          }\n          primaryActionHref={primaryActionHref}\n          secondaryActionLabel={\n            secondaryActionLabel === \"Star on GitHub\"\n              ? \"Explore Studio\"\n              : secondaryActionLabel\n          }\n          secondaryActionHref={secondaryActionHref}\n          accent={color}\n          linkComponent={Link}\n          className={className}\n          style={style}\n          {...props}\n        />\n      );\n    }\n\n    /* ═══════════════════════════════════════════════\n       VARIANT: ORBIT 3D PHOTO RING HERO\n       ═══════════════════════════════════════════════ */\n    if (variant === \"orbit\" || variant === \"orbit-gallery\" || variant === \"orbit-ring\" || variant === \"orbit-hero\") {\n      const orbitBadgeText = badgeText === \"Next-Gen React Components\" ? \"Identity & animation studio\" : badgeText;\n      const orbitBadgeHref = badgeHref === \"/docs\" ? \"#\" : badgeHref;\n      const orbitTitle = title || (titlePrefix === \"Build \" ? \"Movement is what\" : titlePrefix) || \"Movement is what\";\n      const orbitTitleAccent = titleAccent || (titleSuffix ? titleSuffix : \"people notice first.\");\n      const orbitSubtitle =\n        subtitle === \"A meticulous library of React components & interactive blocks, engineered for seamless performance with Tailwind CSS, TypeScript, GSAP, and Motion.\"\n          ? \"We design brand identities and the animation that brings them to life — from early sketches to the live release.\"\n          : subtitle;\n      const orbitPrimaryLabel = primaryActionLabel === \"Browse Components\" ? \"Work with us\" : primaryActionLabel;\n      const orbitPrimaryHref = primaryActionHref === \"/docs\" ? \"#\" : primaryActionHref;\n      const orbitSecondaryLabel = secondaryActionLabel === \"Star on GitHub\" ? \"View projects\" : secondaryActionLabel;\n      const orbitSecondaryHref = secondaryActionHref === \"https://github.com/AlgorizeTech\" ? \"#\" : secondaryActionHref;\n      const orbitImages = images && images.length > 0 ? images : sliderImages && sliderImages !== DEFAULT_SLIDER_IMAGES ? sliderImages : DEFAULT_ORBIT_IMAGES;\n      const orbitHighlights = highlights ?? DEFAULT_ORBIT_HIGHLIGHTS;\n      const orbitDuration = duration || 36;\n      const count = orbitImages.length;\n\n      return (\n        <section\n          ref={ref}\n          onMouseMove={onMouseMove}\n          onMouseEnter={onMouseEnter}\n          onMouseLeave={onMouseLeave}\n          style={{ ...customStyle, ...style }}\n          className={cn(\n            \"relative flex min-h-[600px] w-full select-none items-center overflow-hidden bg-background py-12 text-foreground transition-colors duration-300 sm:min-h-[660px] sm:py-16 lg:min-h-[720px] lg:py-20\",\n            className,\n          )}\n          {...props}\n        >\n\n          {/* The orbit: every card is rotated about the ring's centre, pushed out\n              by the radius, then counter-rotated so it stays upright. The radius\n              grows with the breakpoint. */}\n          <style>{`\n            .orbit-gallery-ring {\n              transform-style: preserve-3d;\n              perspective: 3000px;\n            }\n            .orbit-gallery-card {\n              --orbit-r: 110px;\n              backface-visibility: hidden;\n              will-change: transform;\n              animation: orbit-gallery-slide var(--orbit-duration, 36s) linear infinite;\n            }\n            @media (min-width: 480px) { .orbit-gallery-card { --orbit-r: 135px; } }\n            @media (min-width: 640px) { .orbit-gallery-card { --orbit-r: 185px; } }\n            @media (min-width: 1024px) { .orbit-gallery-card { --orbit-r: 220px; } }\n            @keyframes orbit-gallery-slide {\n              0%   { transform: rotate(0deg)   translateY(calc(-1 * var(--orbit-r))) rotateY(2.5deg) rotate(0deg); }\n              25%  { transform: rotate(90deg)  translateY(calc(-1 * var(--orbit-r))) rotateY(2.5deg) rotate(-90deg); }\n              50%  { transform: rotate(180deg) translateY(calc(-1 * var(--orbit-r))) rotateY(2.5deg) rotate(-180deg); }\n              75%  { transform: rotate(270deg) translateY(calc(-1 * var(--orbit-r))) rotateY(2.5deg) rotate(-270deg); }\n              100% { transform: rotate(360deg) translateY(calc(-1 * var(--orbit-r))) rotateY(2.5deg) rotate(-360deg); }\n            }\n            .orbit-gallery-wrapper:hover .orbit-gallery-card,\n            .orbit-gallery-ring:hover .orbit-gallery-card,\n            .orbit-gallery-card:hover {\n              animation-play-state: paused;\n            }\n            .orbit-gallery-card:hover {\n              z-index: 50;\n            }\n            .orbit-gallery-card:hover > div {\n              transform: translateZ(30px) scale(1.15) !important;\n            }\n            @media (prefers-reduced-motion: reduce) {\n              .orbit-gallery-card { animation-play-state: paused; }\n            }\n          `}</style>\n\n          <div className=\"relative z-10 mx-auto w-full max-w-[1380px] px-4 sm:px-6 md:px-10\">\n            <div className=\"grid grid-cols-1 items-center gap-10 lg:grid-cols-12 lg:gap-8\">\n              {/* ---- Copy and actions ---- */}\n              <div className=\"z-10 col-span-1 flex flex-col justify-center space-y-6 sm:space-y-8 lg:col-span-6\">\n                {orbitBadgeText && (\n                  <Link href={orbitBadgeHref} className=\"group inline-block self-start\">\n                    <div className=\"inline-flex items-center gap-2 text-xs font-semibold uppercase tracking-widest text-muted-foreground transition-colors group-hover:text-foreground sm:text-sm\">\n                      <Sparkles className=\"size-3.5 shrink-0 text-[var(--hero-accent-text)]\" />\n                      <span>{orbitBadgeText}</span>\n                    </div>\n                  </Link>\n                )}\n\n                <h1 className=\"text-xl font-extrabold leading-[1.15] tracking-tight text-foreground sm:text-3xl lg:text-[36px] xl:text-[42px]\">\n                  <span className=\"block\">{orbitTitle}</span>\n                  {orbitTitleAccent && (\n                    <span className=\"mt-1 block font-bold tracking-tight\" style={{ color: \"var(--hero-accent-text)\" }}>\n                      {orbitTitleAccent}\n                    </span>\n                  )}\n                </h1>\n\n                {orbitSubtitle && (\n                  <div className=\"border-l-3 py-1 pl-4 transition-colors duration-300\" style={{ borderColor: \"var(--hero-accent-text)\" }}>\n                    <p className=\"max-w-lg text-sm font-medium leading-relaxed text-muted-foreground sm:text-base lg:text-lg\">{orbitSubtitle}</p>\n                  </div>\n                )}\n\n                <div className=\"flex flex-wrap items-center gap-3.5 pt-2 sm:gap-4\">\n                  {orbitPrimaryLabel && (\n                    <Link\n                      href={orbitPrimaryHref}\n                      className=\"group inline-flex items-center justify-center gap-2.5 rounded-2xl px-7 py-3.5 text-sm font-extrabold shadow-xl transition-all duration-300 hover:-translate-y-0.5 active:translate-y-0 sm:py-4 sm:text-base\"\n                      style={{ backgroundColor: \"var(--hero-accent-text)\", color: \"var(--primary-foreground)\" }}\n                    >\n                      <span>{orbitPrimaryLabel}</span>\n                      <ArrowRight className=\"size-4 shrink-0 transition-transform group-hover:translate-x-1\" />\n                    </Link>\n                  )}\n\n                  {orbitSecondaryLabel && (\n                    <Link\n                      href={orbitSecondaryHref}\n                      className=\"inline-flex items-center justify-center gap-2 rounded-2xl border border-border bg-card px-6 py-3.5 text-sm font-semibold text-foreground shadow-sm transition-all duration-300 hover:-translate-y-0.5 hover:bg-muted active:translate-y-0 sm:py-4 sm:text-base\"\n                    >\n                      <span>{orbitSecondaryLabel}</span>\n                      <ArrowUpRight className=\"size-4 shrink-0 text-muted-foreground\" />\n                    </Link>\n                  )}\n                </div>\n\n                {orbitHighlights.length > 0 && (\n                  <div className=\"flex flex-wrap items-center gap-5 border-t border-border/40 pt-2 text-xs font-semibold text-muted-foreground sm:gap-8\">\n                    {orbitHighlights.map((h) => (\n                      <div key={h.label} className=\"flex items-center gap-2\">\n                        <div className=\"size-2 rounded-full\" style={{ backgroundColor: h.color ?? \"var(--hero-accent-text)\" }} />\n                        <span>{h.label}</span>\n                      </div>\n                    ))}\n                  </div>\n                )}\n              </div>\n\n              {/* ---- The ring ---- */}\n              <div className=\"orbit-gallery-wrapper relative col-span-1 flex h-[480px] items-center justify-center overflow-visible py-4 sm:h-[580px] lg:col-span-6 lg:h-[660px]\">\n                <div\n                  className=\"orbit-gallery-ring pointer-events-auto relative flex size-[340px] cursor-pointer items-center justify-center overflow-visible rounded-full sm:size-[440px] lg:size-[480px]\"\n                  style={{ \"--orbit-duration\": `${orbitDuration}s` } as React.CSSProperties}\n                >\n                  <div className=\"pointer-events-none absolute inset-0 rounded-full border border-transparent\" aria-hidden />\n\n                  {orbitImages.map((src, i) => (\n                    <div\n                      key={src + i}\n                      data-index={i}\n                      className=\"orbit-gallery-card group pointer-events-auto absolute left-1/2 top-1/2 -ml-[38px] -mt-[48px] h-[96px] w-[76px] sm:-ml-[62px] sm:-mt-[77px] sm:h-[155px] sm:w-[125px] lg:-ml-[75px] lg:-mt-[90px] lg:h-[180px] lg:w-[150px]\"\n                      style={{ animationDelay: `${-((i / count) * orbitDuration)}s` }}\n                    >\n                      <div\n                        className=\"h-full w-full overflow-hidden rounded-[22px] border-2 border-card bg-card shadow-xl sm:rounded-[28px] transition-transform duration-300 ease-out group-hover:scale-115 group-hover:shadow-2xl cursor-pointer\"\n                        style={{ transformOrigin: \"center center\", willChange: \"transform\" }}\n                      >\n                        <img\n                          src={src}\n                          alt=\"\"\n                          draggable={false}\n                          className=\"size-full object-cover pointer-events-none select-none transition-transform duration-300 ease-out group-hover:scale-105\"\n                        />\n                      </div>\n                    </div>\n                  ))}\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n      );\n    }\n\n    /* ═══════════════════════════════════════════════\n       VARIANT 4: MODERN PET SHOP & ANIMAL CARE HERO (MINIMAL, NO SHADOWS & NO PET ICONS)\n       ═══════════════════════════════════════════════ */\n    if (variant === \"pet-shop\" || variant === \"glow-arc\") {\n      const petTitlePrefix =\n        titlePrefix === \"Build \" ? \"All Pet Essentials\" : titlePrefix;\n      const petTitleAccent =\n        titleSuffix || \"Delivered To Your Door\";\n      const petSubtitle =\n        subtitle ===\n        \"A meticulous library of React components & interactive blocks, engineered for seamless performance with Tailwind CSS, TypeScript, GSAP, and Motion.\"\n          ? \"Discover nutritionist-crafted organic meals, orthopedic beds, durable interactive toys, and instant 24/7 vet consultations delivered to your door.\"\n          : subtitle;\n\n      const petPrimaryAction =\n        primaryActionLabel === \"Browse Components\"\n          ? \"Shop Dog Supplies\"\n          : primaryActionLabel;\n\n      const petSecondaryAction =\n        secondaryActionLabel === \"Star on GitHub\"\n          ? \"Shop Cat Care\"\n          : secondaryActionLabel;\n\n      const dogImage =\n        petImage ||\n        \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_800,c_limit/v1790150479/photo-1543466835-00a7907e9de1-1790150482273.jpg\";\n      const catImage =\n        secondaryPetImage ||\n        \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_800,c_limit/v1790150481/photo-1514888286974-6c03e2ca1dba-1790150482276.jpg\";\n\n      return (\n        <section\n          ref={ref}\n          style={customStyle}\n          className={cn(\n            \"relative w-full overflow-hidden py-14 sm:py-20 lg:py-28 bg-background text-foreground transition-colors duration-300\",\n            className,\n          )}\n          {...props}\n        >\n          {/* Subtle Dynamic Theme Accent Glow Orbs */}\n          <div className=\"absolute top-10 left-10 size-72 sm:size-96 rounded-full blur-3xl pointer-events-none opacity-15\" style={{ backgroundColor: \"var(--hero-accent-text)\" }} />\n          <div className=\"absolute bottom-10 right-10 size-72 sm:size-96 rounded-full blur-3xl pointer-events-none opacity-15\" style={{ backgroundColor: \"var(--hero-accent-text)\" }} />\n\n          <div className=\"relative z-10 max-w-[1320px] mx-auto w-full px-4 sm:px-6 md:px-8\">\n            <div className=\"grid grid-cols-1 lg:grid-cols-12 gap-8 lg:gap-12 items-center\">\n              \n              {/* Image Column: Top on Mobile (order-1), Left on Desktop (lg:order-1) */}\n              <div className=\"col-span-1 lg:col-span-5 relative flex justify-center items-center order-1 lg:order-1\">\n                <div className=\"relative w-full max-w-[420px] aspect-square flex items-center justify-center\">\n                  \n                  {/* Outer Concentric Border Accent Ring */}\n                  <div className=\"absolute inset-2 rounded-full border-2 border-dashed opacity-30 animate-[spin_60s_linear_infinite]\" style={{ borderColor: \"var(--hero-accent-text)\" }} />\n                  \n                  {/* Central Large Circular Image Mask */}\n                  <div className=\"relative w-[85%] h-[85%] rounded-full overflow-hidden border-4 border-background bg-muted group\">\n                    <img\n                      src={dogImage}\n                      alt=\"Happy Pet\"\n                      className=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-700\"\n                    />\n                  </div>\n\n                  {/* Top-Left Floating Feature Pill */}\n                  <div className=\"absolute top-2 left-0 sm:-left-2 px-4 py-2 rounded-2xl bg-card border-2 border-border flex items-center gap-2.5 z-20\">\n                    <div className=\"size-2 rounded-full\" style={{ backgroundColor: \"var(--hero-accent-text)\" }} />\n                    <div>\n                      <p className=\"text-[11px] font-bold text-foreground\">{featurePillText}</p>\n                      <p className=\"text-[9px] font-semibold\" style={{ color: \"var(--hero-accent-text)\" }}>Verified Doctors</p>\n                    </div>\n                  </div>\n\n                  {/* Bottom-Right Cat Avatar Pill */}\n                  <div className=\"absolute bottom-2 right-0 sm:-right-2 p-2 pr-4 rounded-2xl bg-card border-2 border-border flex items-center gap-2.5 z-20\">\n                    <div className=\"size-10 rounded-xl overflow-hidden border border-border shrink-0\">\n                      <img src={catImage} alt=\"Cat Supplies\" className=\"w-full h-full object-cover\" />\n                    </div>\n                    <div>\n                      <p className=\"text-[11px] font-bold text-foreground\">Cat Essentials</p>\n                      <p className=\"text-[9px] font-semibold text-muted-foreground\">Same Day Delivery</p>\n                    </div>\n                  </div>\n\n                  {/* Center Left Rating Pill */}\n                  <div className=\"absolute bottom-1/3 -left-4 px-3.5 py-1.5 rounded-full font-bold text-xs border z-20\" style={{ backgroundColor: \"var(--hero-accent-text)\", color: \"var(--primary-foreground)\", borderColor: \"var(--hero-accent-text)\" }}>\n                    {ratingText}\n                  </div>\n\n                </div>\n              </div>\n\n              {/* Content Column: Bottom on Mobile (order-2), Right on Desktop (lg:order-2) */}\n              <div className=\"col-span-1 lg:col-span-7 flex flex-col justify-center space-y-6 text-left order-2 lg:order-2\">\n                \n                {/* Category Pills Header */}\n                <div className=\"flex flex-wrap items-center gap-2\">\n                  {badgeTags?.[0] && (\n                    <div className=\"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full border text-xs font-semibold\" style={{ backgroundColor: \"color-mix(in oklab, var(--hero-accent-text) 8%, transparent)\", borderColor: \"color-mix(in oklab, var(--hero-accent-text) 25%, transparent)\", color: \"var(--hero-accent-text)\" }}>\n                      <ShieldCheck className=\"size-3.5 shrink-0\" style={{ color: \"var(--hero-accent-text)\" }} />\n                      <span>{badgeTags[0]}</span>\n                    </div>\n                  )}\n                  {badgeTags?.[1] && (\n                    <div className=\"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full border text-xs font-semibold\" style={{ backgroundColor: \"rgba(249, 115, 22, 0.08)\", borderColor: \"rgba(249, 115, 22, 0.25)\", color: \"#f97316\" }}>\n                      <Star className=\"size-3.5 fill-orange-500 text-orange-500\" />\n                      <span>{badgeTags[1]}</span>\n                    </div>\n                  )}\n                </div>\n\n                {/* Main Heading */}\n                <h1 className=\"text-3xl sm:text-4xl md:text-5xl lg:text-6xl font-bold tracking-tight leading-[1.15] text-foreground\">\n                  <span className=\"block\">{petTitlePrefix}</span>\n                  <span className=\"block mt-1\" style={{ color: \"var(--hero-accent-text)\" }}>\n                    {petTitleAccent}\n                  </span>\n                </h1>\n\n                {/* Subtitle */}\n                {petSubtitle && (\n                  <p className=\"text-xs sm:text-base md:text-lg text-muted-foreground leading-relaxed max-w-2xl font-medium\">\n                    {petSubtitle}\n                  </p>\n                )}\n\n                {/* Quick Pet Category Select Pills */}\n                {categories && categories.length > 0 && (\n                  <div className=\"flex flex-wrap items-center gap-2 pt-1\">\n                    <span className=\"text-xs font-extrabold uppercase tracking-wider text-muted-foreground mr-1\">Popular:</span>\n                    {categories.map((cat, i) => (\n                      <span\n                        key={i}\n                        className=\"px-3 py-1 rounded-xl bg-card border border-border text-xs font-semibold text-foreground cursor-pointer transition-all\"\n                      >\n                        {cat}\n                      </span>\n                    ))}\n                  </div>\n                )}\n\n                {/* Action Buttons */}\n                <div className=\"flex flex-col sm:flex-row items-stretch sm:items-center gap-3.5 pt-3 w-full\">\n                  <Link\n                    href={primaryActionHref}\n                    className=\"inline-flex items-center justify-center gap-2.5 px-7 py-4 rounded-2xl font-extrabold text-sm sm:text-base transition-all active:scale-95 text-center\"\n                    style={{ backgroundColor: \"var(--hero-accent-text)\", color: \"var(--primary-foreground)\" }}\n                  >\n                    <ShoppingBag className=\"size-5 shrink-0\" />\n                    <span>{petPrimaryAction}</span>\n                    <ArrowRight className=\"size-4 shrink-0\" />\n                  </Link>\n\n                  <Link\n                    href={secondaryActionHref}\n                    className=\"inline-flex items-center justify-center gap-2.5 px-6 py-4 rounded-2xl border border-border bg-card hover:bg-muted text-foreground font-semibold text-sm sm:text-base transition-all active:scale-95 text-center\"\n                  >\n                    <span>{petSecondaryAction}</span>\n                    <ArrowUpRight className=\"size-4 shrink-0\" style={{ color: \"var(--hero-accent-text)\" }} />\n                  </Link>\n                </div>\n\n                {/* Trust Footer Line */}\n                <div className=\"pt-3 flex items-center gap-4 text-xs font-semibold text-muted-foreground\">\n                  <div className=\"flex items-center gap-1.5\">\n                    <ShieldCheck className=\"size-4\" style={{ color: \"var(--hero-accent-text)\" }} />\n                    <span>Vet Verified Ingredients</span>\n                  </div>\n                  <div className=\"flex items-center gap-1.5\">\n                    <Heart className=\"size-4 text-rose-500\" />\n                    <span>Free Shipping $35+</span>\n                  </div>\n                </div>\n\n              </div>\n\n            </div>\n          </div>\n        </section>\n      );\n    }\n\n    /* ═══════════════════════════════════════════════\n       VARIANT 5: TRUSTED KITS & MEDICAL CARE HERO (EXACTLY MATCHES REFERENCE IMAGE)\n       ═══════════════════════════════════════════════ */\n    if (variant === \"doctor\") {\n      const docTitlePrefix =\n        titlePrefix === \"Build \" ? \"Trusted Kits\" : titlePrefix;\n      const docTitleAccent =\n        titleSuffix || \"Real Results\";\n      const docSubtitle =\n        subtitle ===\n        \"A meticulous library of React components & interactive blocks, engineered for seamless performance with Tailwind CSS, TypeScript, GSAP, and Motion.\"\n          ? \"Order medical-grade test kits, return by mail, and get fast, accurate, secure results online — anytime, anywhere, hassle-free.\"\n          : subtitle;\n\n      const docPrimaryAction =\n        primaryActionLabel === \"Browse Components\"\n          ? \"Order Kit\"\n          : primaryActionLabel;\n\n      const docSecondaryAction =\n        secondaryActionLabel === \"Star on GitHub\"\n          ? \"See How Its Work\"\n          : secondaryActionLabel;\n\n      const doctorMainImage =\n        petImage ||\n        \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_800,c_limit/v1790158809/photo-1622253692010-333f2da6031d-1790158812201.jpg\";\n\n      const doctorSubImage =\n        secondaryPetImage ||\n        \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_800,c_limit/v1790150483/photo-1576091160399-112ba8d25d1d-1790150482281.jpg\";\n\n      const labTestImage =\n        mainImage === DEFAULT_MAIN_IMAGE\n          ? \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_800,c_limit/v1790150483/photo-1584036561566-baf8f5f1b144-1790150482282.jpg\"\n          : mainImage;\n\n      const inlineBadgeImage =\n        \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_200,c_limit/v1790150479/photo-1471864190281-a93a3070b6de-1790150482274.jpg\";\n\n      const stat1Val = ratingText === \"4.9 ★ Rated\" ? \"100%\" : ratingText;\n      const stat1Label = badgeTags?.[0] === \"Certified Organic & Vet Approved\" ? \"Safe & Private Results\" : badgeTags?.[0] || \"Safe & Private Results\";\n      const stat2Val = featurePillText === \"24/7 Vet Care\" ? \"98%\" : featurePillText;\n      const stat2Label = badgeTags?.[1] === \"4.9 Star Rated\" ? \"Satisfaction rate\" : badgeTags?.[1] || \"Satisfaction rate\";\n\n      return (\n        <section\n          ref={ref}\n          style={customStyle}\n          className={cn(\n            \"relative w-full overflow-hidden bg-background text-foreground transition-colors duration-300 min-h-[620px]\",\n            className,\n          )}\n          {...props}\n        >\n          <style>{HERO_CSS}</style>\n          <div className=\"w-full max-w-[1440px] mx-auto min-h-[620px] grid grid-cols-1 lg:grid-cols-12 items-stretch\">\n            \n            {/* LEFT COLUMN: Title, Subtitle, CTA & Stats */}\n            <div className=\"col-span-1 lg:col-span-6 px-4 sm:px-8 lg:px-16 py-6 sm:py-10 lg:py-20 flex flex-col justify-center space-y-5 sm:space-y-8 z-10\">\n              \n              {/* Heading Section */}\n              <div className=\"space-y-1.5 sm:space-y-2\">\n                <h1 className=\"text-2xl sm:text-4xl lg:text-7xl font-light tracking-tight text-foreground/70 font-sans leading-tight\">\n                  {docTitlePrefix}\n                </h1>\n                <div className=\"flex flex-wrap items-center gap-2 sm:gap-3 pt-0.5 sm:pt-1\">\n                  <span \n                    className=\"relative inline-flex size-7 sm:size-11 lg:size-12 rounded-full overflow-hidden border-2 shrink-0 shadow-md\"\n                    style={{ borderColor: \"var(--hero-accent-text)\" }}\n                  >\n                    <img\n                      src={inlineBadgeImage}\n                      alt=\"Kit thumbnail\"\n                      className=\"w-full h-full object-cover\"\n                    />\n                  </span>\n                  <span \n                    className=\"text-2xl sm:text-4xl lg:text-7xl font-extrabold tracking-tight leading-tight\"\n                    style={{ color: \"var(--hero-accent-text)\" }}\n                  >\n                    {docTitleAccent}\n                  </span>\n                </div>\n              </div>\n\n              {/* Subtitle with Left Border Line Accent */}\n              {docSubtitle && (\n                <div \n                  className=\"border-l-2 pl-3 sm:pl-4 py-0.5\"\n                  style={{ borderColor: \"var(--hero-accent-text)\" }}\n                >\n                  <p className=\"text-muted-foreground text-xs sm:text-base leading-relaxed font-medium max-w-lg\">\n                    {docSubtitle}\n                  </p>\n                </div>\n              )}\n\n              {/* Action Buttons Row (Full Width on mobile/sm, auto on desktop lg) */}\n              <div className=\"flex flex-col sm:flex-row items-stretch sm:items-center gap-3 sm:gap-5 pt-1 sm:pt-2 w-full\">\n                <Link\n                  href={primaryActionHref}\n                  className=\"w-full sm:w-auto inline-flex items-center justify-center gap-2.5 sm:gap-3 px-6 sm:px-7 py-3 sm:py-3.5 rounded-full font-semibold text-xs sm:text-base shadow-md transition-all active:scale-95 text-center\"\n                  style={{\n                    backgroundColor: \"var(--hero-accent-text)\",\n                    color: \"var(--primary-foreground)\",\n                  }}\n                >\n                  <Package className=\"size-4 sm:size-5 shrink-0\" />\n                  <span>{docPrimaryAction}</span>\n                </Link>\n\n                <Link\n                  href={secondaryActionHref}\n                  className=\"w-full sm:w-auto inline-flex items-center justify-center gap-2 px-5 sm:px-6 py-3 sm:py-3.5 rounded-full font-semibold text-xs sm:text-base hover:underline transition-all text-center\"\n                  style={{ color: \"var(--hero-accent-text)\" }}\n                >\n                  <span>{docSecondaryAction}</span>\n                </Link>\n              </div>\n\n              {/* Stats Footer Row */}\n              <div className=\"flex flex-wrap items-center gap-6 sm:gap-14 pt-1 sm:pt-4\">\n                <div className=\"space-y-0.5 sm:space-y-1\">\n                  <p className=\"text-xl sm:text-3xl lg:text-4xl font-extrabold text-foreground\">\n                    {stat1Val}\n                  </p>\n                  <div className=\"flex items-center gap-1.5 text-[11px] sm:text-xs font-semibold text-muted-foreground\">\n                    <ShieldCheck className=\"size-3.5 shrink-0\" style={{ color: \"var(--hero-accent-text)\" }} />\n                    <span>{stat1Label}</span>\n                  </div>\n                </div>\n\n                <div className=\"space-y-0.5 sm:space-y-1\">\n                  <p className=\"text-xl sm:text-3xl lg:text-4xl font-extrabold text-foreground\">\n                    {stat2Val}\n                  </p>\n                  <div className=\"flex items-center gap-1.5 text-[11px] sm:text-xs font-semibold text-muted-foreground\">\n                    <Heart className=\"size-3.5 text-rose-500 shrink-0\" />\n                    <span>{stat2Label}</span>\n                  </div>\n                </div>\n              </div>\n\n            </div>\n\n            {/* RIGHT COLUMN: Dark Container with Images Grid & Floating Cards */}\n            <div className=\"col-span-1 lg:col-span-6 relative flex flex-col justify-center px-3 sm:px-8 lg:px-12 py-6 sm:py-10 lg:py-12 min-h-[380px] sm:min-h-[480px] lg:min-h-0 mt-4 lg:mt-0\">\n              \n              {/* Dark Accent Panel (a deep shade of the accent) */}\n              <div \n                className=\"absolute inset-y-0 right-0 left-0 sm:left-20 lg:left-36 rounded-[20px] sm:rounded-[28px] lg:rounded-l-[48px] lg:rounded-r-none z-0 transition-colors duration-300\"\n                style={{\n                  backgroundColor: accentRgb\n                    ? `rgb(${Math.max(5, Math.round(accentRgb[0] * 0.12))}, ${Math.max(15, Math.round(accentRgb[1] * 0.22))}, ${Math.max(15, Math.round(accentRgb[2] * 0.22))})`\n                    : \"color-mix(in oklab, var(--primary) 22%, black)\",\n                }}\n              />\n\n              {/* Main Images Layout Grid */}\n              <div className=\"relative w-full h-full grid grid-cols-12 gap-2.5 sm:gap-4 items-center z-10 my-auto p-2 sm:p-0\">\n                \n                {/* Doctor Consultation Portrait Card */}\n                <div\n                  className=\"col-span-6 ml-0 lg:-ml-10 relative z-20\"\n                  style={{ animation: `hero-rise-30 0.6s ${EASE_OUT} backwards` }}\n                >\n                  <div className=\"relative aspect-[3/4] w-full rounded-[18px] sm:rounded-[32px] overflow-hidden border-2 sm:border-4 border-background bg-zinc-800\">\n                    <img\n                      src={doctorMainImage}\n                      alt=\"Doctor Consultation\"\n                      className=\"w-full h-full object-cover\"\n                    />\n                  </div>\n                </div>\n\n                {/* Right Stacked Images inside Dark Panel */}\n                <div className=\"col-span-6 space-y-2.5 sm:space-y-4 relative z-10\">\n                  \n                  {/* Top Right Patient Care Portrait Image */}\n                  <div\n                    style={{ animation: `hero-grow 0.5s ${EASE_OUT} 0.2s backwards` }}\n                    className=\"relative aspect-[4/3] sm:aspect-square w-full rounded-[16px] sm:rounded-[28px] overflow-hidden bg-zinc-800 border border-white/10\"\n                  >\n                    <img\n                      src={doctorSubImage}\n                      alt=\"Patient Care\"\n                      className=\"w-full h-full object-cover\"\n                    />\n                  </div>\n\n                  {/* Bottom Right Lab Kit Test Image */}\n                  <div\n                    style={{ animation: `hero-grow 0.5s ${EASE_OUT} 0.3s backwards` }}\n                    className=\"relative aspect-[4/3] w-full rounded-[16px] sm:rounded-[28px] overflow-hidden bg-zinc-800 border border-white/10 group\"\n                  >\n                    <img\n                      src={labTestImage}\n                      alt=\"Lab Test Kit\"\n                      className=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-500\"\n                    />\n                    <div className=\"absolute inset-0 bg-gradient-to-t from-black/70 via-transparent to-transparent flex items-end p-2 sm:p-3.5\">\n                      <p className=\"text-[9px] sm:text-xs font-bold text-white leading-tight\">\n                        Lab-Trusted. <br /> Doorstep Delivered.\n                      </p>\n                    </div>\n                  </div>\n\n                </div>\n\n              </div>\n\n              {/* Bottom Floating Delivery Card */}\n              <div\n                className=\"relative lg:absolute mt-3 lg:mt-0 bottom-0 lg:bottom-6 left-0 lg:-left-6 lg:-ml-24 z-30 w-full lg:w-auto min-w-0 sm:min-w-[320px] p-3 sm:p-4 lg:p-5 rounded-[16px] sm:rounded-[24px] shadow-2xl border-2 backdrop-blur-xl transition-colors duration-300 bg-card text-card-foreground\"\n                style={{\n                  animation: `hero-rise-20 0.5s ${EASE_OUT} 0.4s backwards`,\n                  backgroundColor: accentRgb\n                    ? `rgba(${accentRgb[0]}, ${accentRgb[1]}, ${accentRgb[2]}, 0.18)`\n                    : undefined,\n                  borderColor: \"var(--hero-accent-text)\",\n                }}\n              >\n                <div className=\"flex items-center justify-between gap-2 sm:gap-4\">\n                  <div \n                    className=\"size-8 sm:size-10 rounded-xl sm:rounded-2xl flex items-center justify-center shrink-0\"\n                    style={{\n                      backgroundColor: \"var(--hero-accent-text)\",\n                      color: \"var(--primary-foreground)\",\n                    }}\n                  >\n                    <Package className=\"size-4 sm:size-5\" />\n                  </div>\n                  <div \n                    className=\"size-7 sm:size-8 rounded-full flex items-center justify-center border border-current shrink-0\"\n                    style={{ color: \"var(--hero-accent-text)\" }}\n                  >\n                    <ArrowUpRight className=\"size-3.5 sm:size-4\" />\n                  </div>\n                </div>\n\n                <div className=\"pt-2 sm:pt-3 flex flex-wrap items-center justify-between gap-2 sm:gap-3\">\n                  <div>\n                    <p className=\"font-extrabold text-[11px] sm:text-sm whitespace-nowrap tracking-tight\">\n                      Fast &amp; Reliable Delivery\n                    </p>\n                  </div>\n                  {/* User Profile Avatar Stack (5 images with 3px gap) */}\n                  <div className=\"flex items-center gap-[3px] shrink-0\">\n                    {[\n                      \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_100,c_limit/v1790150483/photo-1534528741775-53994a69daeb-1790150482280.jpg\",\n                      \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_100,c_limit/v1790150480/photo-1507003211169-0a1dd7228f2d-1790150482276.jpg\",\n                      \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_100,c_limit/v1790150478/photo-1544005313-94ddf0286df2-1790150482273.jpg\",\n                      \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_100,c_limit/v1790150480/photo-1506794778202-cad84cf45f1d-1790150482275.jpg\",\n                      \"https://res.cloudinary.com/dodndg7ai/image/upload/f_webp,q_auto,w_100,c_limit/v1790150481/photo-1517841905240-472988babdf9-1790150482277.jpg\",\n                    ].map((imgSrc, i) => (\n                      <img\n                        key={i}\n                        src={imgSrc}\n                        alt={`User avatar ${i + 1}`}\n                        className=\"size-5 sm:size-8 rounded-md sm:rounded-lg border border-card/60 object-cover shadow-sm\"\n                      />\n                    ))}\n                  </div>\n                </div>\n              </div>\n\n            </div>\n\n          </div>\n        </section>\n      );\n    }\n\n    /* ═══════════════════════════════════════════════\n       VARIANT 3: CLEAN SOLID WHITE/DARK PARENT WITH SOLID ACCENT FLIP WORD (NO GRADIENT)\n       ═══════════════════════════════════════════════ */\n    if (variant === \"slider\") {\n      const sliderBadgeText =\n        badgeText === \"Next-Gen React Components\"\n          ? \"Full-Stack Software Engineer\"\n          : badgeText;\n      const sliderTitlePrefix =\n        titlePrefix === \"Build \" ? \"Building & Engineering\" : titlePrefix;\n      const sliderTitleAccent =\n        titleSuffix ||\n        (titlePrefix === \"Build \"\n          ? \"Full-Stack Digital Products\"\n          : \"Interactive Experiences\");\n      const sliderSubtitle =\n        subtitle ===\n        \"A meticulous library of React components & interactive blocks, engineered for seamless performance with Tailwind CSS, TypeScript, GSAP, and Motion.\"\n          ? \"Full-stack software engineer dedicated to building scalable web applications, modern SaaS platforms, and high-performance digital experiences.\"\n          : subtitle;\n      const sliderPrimaryActionLabel =\n        primaryActionLabel === \"Browse Components\"\n          ? \"Explore Projects\"\n          : primaryActionLabel;\n      const sliderSecondaryActionLabel =\n        secondaryActionLabel === \"Star on GitHub\"\n          ? \"Contact Me\"\n          : secondaryActionLabel;\n      const sliderSecondaryActionHref =\n        secondaryActionHref === \"https://github.com/AlgorizeTech\"\n          ? \"#contact\"\n          : secondaryActionHref;\n\n\n      const devLabels = [\n        \"3D Web App\",\n        \"WebGL Experience\",\n        \"Three.js Scene\",\n        \"3D Product UI\",\n        \"Interactive 3D\",\n        \"Spatial Web\",\n      ];\n\n      return (\n        <section\n          ref={ref}\n          style={customStyle}\n          className={cn(\n            \"relative w-full overflow-hidden py-8 sm:py-12 lg:py-20 bg-background text-foreground\",\n            className,\n          )}\n          {...props}\n        >\n          {/* Keyframe style for continuous marquee slider */}\n          <style>{`\n            @keyframes hero-marquee-loop {\n              0% { transform: translateX(0%); }\n              100% { transform: translateX(-50%); }\n            }\n            .animate-hero-marquee {\n              animation: hero-marquee-loop 25s linear infinite;\n            }\n            .animate-hero-marquee:hover {\n              animation-play-state: paused;\n            }\n          `}</style>\n\n          {/* Grid Background Overlay */}\n          <div className=\"absolute inset-0 bg-[linear-gradient(to_right,color-mix(in_oklab,var(--foreground)_3%,transparent)_1px,transparent_1px),linear-gradient(to_bottom,color-mix(in_oklab,var(--foreground)_3%,transparent)_1px,transparent_1px)] bg-[size:32px_32px] [mask-image:radial-gradient(ellipse_80%_80%_at_50%_50%,black_30%,transparent_100%)] pointer-events-none\" />\n\n          <div className=\"relative z-10 max-w-[1320px] mx-auto w-full px-4 sm:px-6 md:px-8\">\n            <div className=\"grid grid-cols-1 lg:grid-cols-12 gap-6 lg:gap-12 items-stretch\">\n              \n              {/* Left Section (Span 12 on mobile/md, Span 7 on lg) */}\n              <div className=\"col-span-1 lg:col-span-7 flex flex-col justify-between space-y-6 sm:space-y-8 order-2 lg:order-1\">\n                \n                {/* Main Content Box */}\n                <div className=\"relative rounded-3xl p-5 sm:p-8 md:p-10 border border-primary/20 bg-card/60 backdrop-blur-xl space-y-4 sm:space-y-6 overflow-hidden flex-1 flex flex-col justify-center\">\n                  \n                  {sliderBadgeText && (\n                    <Link href={badgeHref} className=\"inline-block group/badge self-start\">\n                      <div className=\"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-primary/10 border border-primary/30 text-xs sm:text-sm font-semibold text-[var(--hero-accent-text)] group-hover/badge:bg-primary/20 transition-all duration-300\">\n                        <Terminal className=\"size-3.5 text-[var(--hero-accent-text)] shrink-0\" />\n                        <span>{sliderBadgeText}</span>\n                      </div>\n                    </Link>\n                  )}\n\n                  {/* Clean Static 2-Line Developer Heading */}\n                  <h1 className=\"text-xl sm:text-3xl md:text-4xl lg:text-5xl font-bold tracking-tight flex flex-col leading-tight\">\n                    <span className=\"text-foreground shrink-0\">{sliderTitlePrefix}</span>\n                    <span className=\"text-[var(--hero-accent-text)] font-bold\">\n                      {sliderTitleAccent}\n                    </span>\n                  </h1>\n\n                  {sliderSubtitle && (\n                    <p className=\"text-xs sm:text-base text-muted-foreground leading-relaxed max-w-xl font-medium\">\n                      {sliderSubtitle}\n                    </p>\n                  )}\n\n                  {/* Actions & Copy Line */}\n                  <div className=\"flex flex-col sm:flex-row items-stretch sm:items-center gap-3 pt-2 w-full\">\n                    {sliderPrimaryActionLabel && (\n                      <Link\n                        href={primaryActionHref}\n                        className=\"inline-flex items-center justify-center gap-2 px-5 sm:px-6 py-3 sm:py-3.5 rounded-2xl bg-primary text-primary-foreground text-xs sm:text-base font-semibold hover:opacity-90 transition-all active:scale-95 w-full sm:w-auto text-center\"\n                      >\n                        <span>{sliderPrimaryActionLabel}</span>\n                        <ArrowRight className=\"size-4\" />\n                      </Link>\n                    )}\n\n                    {sliderSecondaryActionLabel && (\n                      <Link\n                        href={sliderSecondaryActionHref}\n                        className=\"inline-flex items-center justify-center gap-2 px-4 sm:px-5 py-3 sm:py-3.5 rounded-2xl border border-border bg-muted hover:bg-foreground/10 text-xs sm:text-sm font-semibold transition-all cursor-pointer text-foreground active:scale-95 w-full sm:w-auto text-center\"\n                      >\n                        {sliderSecondaryActionLabel.toLowerCase().includes(\"github\") ? (\n                          <GitHubIcon className=\"size-4 shrink-0 text-foreground\" />\n                        ) : sliderSecondaryActionLabel.toLowerCase().includes(\"resume\") || sliderSecondaryActionLabel.toLowerCase().includes(\"cv\") ? (\n                          <FileText className=\"size-4 text-[var(--hero-accent-text)] shrink-0\" />\n                        ) : (\n                          <Mail className=\"size-4 text-[var(--hero-accent-text)] shrink-0\" />\n                        )}\n                        <span>{sliderSecondaryActionLabel}</span>\n                      </Link>\n                    )}\n                  </div>\n                </div>\n\n                {/* Bottom Section: Continuous Marquee Developer Code Slider */}\n                <div className=\"relative w-full overflow-hidden rounded-2xl pt-2 shrink-0 [mask-image:linear-gradient(to_right,transparent,black_10%,black_90%,transparent)]\">\n                  <div className=\"flex w-max animate-hero-marquee gap-3 sm:gap-4 items-center\">\n                    {[...sliderImages, ...sliderImages].map((img, idx) => (\n                      <div\n                        key={idx}\n                        className=\"relative w-24 h-18 sm:w-32 sm:h-22 rounded-2xl overflow-hidden shrink-0 border border-border bg-card group/thumb\"\n                      >\n                        <img\n                          src={img}\n                          alt={`Developer Visual ${idx}`}\n                          className=\"w-full h-full object-cover group-hover/thumb:scale-110 transition-transform duration-500\"\n                        />\n                        <div className=\"absolute inset-0 bg-gradient-to-t from-black/80 via-transparent to-transparent opacity-0 group-hover/thumb:opacity-100 transition-opacity duration-300 flex items-end p-2\">\n                          <span className=\"text-[10px] font-semibold text-white tracking-wide truncate\">\n                            {devLabels[idx % devLabels.length]}\n                          </span>\n                        </div>\n                      </div>\n                    ))}\n                  </div>\n                </div>\n\n              </div>\n\n              {/* Right Section (Span 12 on mobile/md, Span 5 on lg) */}\n              <div className=\"col-span-1 lg:col-span-5 relative flex flex-col h-full min-h-[300px] sm:min-h-[360px] lg:min-h-0 order-1 lg:order-2\">\n                <div className=\"relative w-full h-full min-h-[300px] sm:min-h-[360px] lg:min-h-full rounded-3xl overflow-hidden border border-border bg-card group\">\n                  \n                  {/* Main Developer Visual Image */}\n                  <img\n                    src={mainImage}\n                    alt=\"Developer Code Visual\"\n                    className=\"w-full h-full object-cover group-hover:scale-103 transition-transform duration-700\"\n                  />\n\n                  {/* Gradient Overlay for Text Contrast */}\n                  <div className=\"absolute inset-0 bg-gradient-to-t from-black/70 via-black/20 to-transparent pointer-events-none\" />\n\n                  {/* Developer Floating Badge Top Left */}\n                  <div className=\"absolute top-4 left-4 sm:top-5 sm:left-5 p-2.5 sm:p-4 rounded-2xl bg-background/85 backdrop-blur-xl border border-border flex items-center gap-2.5 sm:gap-3\">\n                    <div className=\"size-8 sm:size-10 rounded-xl bg-primary/20 text-[var(--hero-accent-text)] flex items-center justify-center font-semibold shrink-0\">\n                      <Code className=\"size-4 sm:size-5\" />\n                    </div>\n                    <div>\n                      <p className=\"text-[11px] sm:text-xs font-extrabold text-foreground\">100% Type-Safe</p>\n                      <p className=\"text-[9px] sm:text-[10px] text-muted-foreground font-medium\">TypeScript & Tailwind CSS</p>\n                    </div>\n                  </div>\n\n                  {/* Developer Floating Badge Bottom Right */}\n                  <div className=\"absolute bottom-4 right-4 sm:bottom-5 sm:right-5 p-2.5 sm:p-4 rounded-2xl bg-background/85 backdrop-blur-xl border border-border flex items-center gap-2.5 sm:gap-3\">\n                    <div className=\"size-2.5 sm:size-3 rounded-full bg-emerald-500 shrink-0\" />\n                    <div>\n                      <p className=\"text-[11px] sm:text-xs font-semibold text-foreground\">Developer Experience</p>\n                      <p className=\"text-[9px] sm:text-[10px] text-emerald-500 font-semibold\">Copy-Paste Ready</p>\n                    </div>\n                  </div>\n\n                </div>\n              </div>\n\n            </div>\n          </div>\n        </section>\n      );\n    }\n\n    /* ═══════════════════════════════════════════════\n       VARIANT 6: PRECISION FACILITY & CAD BLUEPRINT GRID HERO (INTERACTIVE MORPHING SHAPE)\n       ═══════════════════════════════════════════════ */\n    if (variant === \"facility\" || variant === \"geometric\") {\n      const isDefaultFacilityTitle =\n        !titlePrefix ||\n        titlePrefix === \"Build \" ||\n        titlePrefix.includes(\"Precision facility\");\n\n      const facilityTitleLines: string[] = isDefaultFacilityTitle\n        ? [\n            \"Precision facility\",\n            \"services. Certified. For\",\n            \"environments that can't fail.\",\n          ]\n        : (titlePrefix + (titleSuffix ? ` ${titleSuffix}` : \"\")).includes(\"\\n\")\n        ? (titlePrefix + (titleSuffix ? ` ${titleSuffix}` : \"\")).split(\"\\n\")\n        : [\n            \"Precision facility\",\n            \"services. Certified. For\",\n            \"environments that can't fail.\",\n          ];\n\n      const facSubtitle =\n        subtitle ===\n        \"A meticulous library of React components & interactive blocks, engineered for seamless performance with Tailwind CSS, TypeScript, GSAP, and Motion.\"\n          ? \"Certified, data-driven facility services across mission-critical environments.\"\n          : subtitle;\n\n      const facPrimaryAction =\n        primaryActionLabel === \"Browse Components\"\n          ? \"Request a facility audit\"\n          : primaryActionLabel;\n\n      // Where the grid lines and the shape rest for the current hover zone;\n      // the glide between zones is `GLIDE`, run by the layout effect above.\n      const shape = shapeTargets(shapeHoverZone) as React.CSSProperties[];\n\n      return (\n        <section\n          ref={ref}\n          style={customStyle}\n          className={cn(\n            \"relative w-full overflow-hidden bg-background text-foreground transition-colors duration-300 border-y border-neutral-200/80 dark:border-neutral-800/80\",\n            className,\n          )}\n          {...props}\n        >\n          <div className=\"w-full max-w-[1440px] mx-auto grid grid-cols-1 lg:grid-cols-12 items-stretch min-h-[460px] sm:min-h-[520px]\">\n            {/* LEFT COLUMN: Heading at top, Subtitle + CTA button at bottom */}\n            <div className=\"col-span-1 lg:col-span-7 flex flex-col justify-between p-6 sm:p-10 lg:p-14 z-10 border-b lg:border-b-0 border-neutral-200/80 dark:border-neutral-800/80\">\n              {/* Heading: Always structured in exact 3 lines */}\n              <div className=\"pt-2 sm:pt-4\">\n                <h1 className=\"text-2xl xs:text-3xl sm:text-4xl md:text-[42px] lg:text-[44px] xl:text-[48px] font-normal sm:font-medium tracking-tight text-neutral-900 dark:text-neutral-100 font-sans leading-[1.12] max-w-xl\">\n                  {facilityTitleLines.map((line, idx) => (\n                    <span\n                      key={idx}\n                      className=\"block whitespace-normal sm:whitespace-nowrap\"\n                    >\n                      {line}\n                    </span>\n                  ))}\n                </h1>\n              </div>\n\n              {/* Subtitle & CTA button */}\n              <div className=\"pt-10 sm:pt-16 mt-auto\">\n                <div className=\"flex flex-col sm:flex-row sm:items-end justify-between gap-6 sm:gap-8\">\n                  {facSubtitle && (\n                    <p className=\"text-xs sm:text-sm text-neutral-600 dark:text-neutral-400 leading-relaxed max-w-[340px]\">\n                      {facSubtitle}\n                    </p>\n                  )}\n\n                  {facPrimaryAction && (\n                    <Link\n                      href={primaryActionHref || \"#\"}\n                      className=\"inline-flex items-center group overflow-hidden shadow-xs shrink-0 self-start sm:self-end border border-primary/20 transition-all hover:shadow-md active:scale-[0.98]\"\n                      style={{\n                        backgroundColor: \"var(--primary)\",\n                        color: \"var(--primary-foreground)\",\n                      }}\n                    >\n                      <span className=\"text-xs sm:text-sm font-medium px-4 sm:px-5 py-2.5 sm:py-3 tracking-wide transition-colors\">\n                        {facPrimaryAction}\n                      </span>\n                      <span className=\"p-2.5 sm:p-3 flex items-center justify-center border-l border-primary-foreground/20 bg-black/10 dark:bg-white/10 transition-colors group-hover:bg-black/20 dark:group-hover:bg-white/20\">\n                        <ArrowRight className=\"w-3.5 h-3.5 sm:w-4 sm:h-4 transition-transform group-hover:translate-x-0.5\" />\n                      </span>\n                    </Link>\n                  )}\n                </div>\n              </div>\n            </div>\n\n            {/* RIGHT COLUMN: Interactive Box Grid with Morphing Polygon locked to Border */}\n            <div\n              className=\"col-span-1 lg:col-span-5 relative flex items-center justify-center min-h-[360px] sm:min-h-[420px] lg:min-h-[520px] overflow-hidden lg:border-l border-neutral-200/80 dark:border-neutral-800/80 select-none\"\n              onMouseLeave={() => setShapeHoverZone(\"idle\")}\n            >\n              {/* Interactive Hover Trigger Zones across 3 columns (No background color change) */}\n              <div className=\"absolute inset-0 grid grid-cols-3 z-30\">\n                {/* Left Column (Left Box): Hovering here slightly shrinks the shape and its border */}\n                <div\n                  className=\"h-full cursor-pointer\"\n                  onMouseEnter={() => setShapeHoverZone(\"left\")}\n                  title=\"Hover left box to contract\"\n                />\n                {/* Center Column (Center Box): Hovering here returns shape and border to resting state */}\n                <div\n                  className=\"h-full cursor-pointer\"\n                  onMouseEnter={() => setShapeHoverZone(\"center\")}\n                  title=\"Resting state\"\n                />\n                {/* Right Column (Right Box): Hovering here slightly expands shape width and height */}\n                <div\n                  className=\"h-full cursor-pointer\"\n                  onMouseEnter={() => setShapeHoverZone(\"right\")}\n                  title=\"Hover right box to expand\"\n                />\n              </div>\n\n              {/* Grid Lines — each sits at its hover zone's place (see `shapeTargets`) */}\n              {/* Top horizontal grid line - moves symmetrically with shape top */}\n              <div\n                ref={(el) => {\n                  shapeRefs.current[0] = el;\n                }}\n                className=\"absolute left-0 right-0 h-px bg-primary/20 dark:bg-primary/30 transition-colors duration-300 z-10 pointer-events-none\"\n                style={shape[0]}\n              />\n              {/* Bottom horizontal grid line - moves symmetrically with shape bottom */}\n              <div\n                ref={(el) => {\n                  shapeRefs.current[1] = el;\n                }}\n                className=\"absolute left-0 right-0 h-px bg-primary/20 dark:bg-primary/30 transition-colors duration-300 z-10 pointer-events-none\"\n                style={shape[1]}\n              />\n\n              {/* Moving Left Vertical Grid Line - attached to shape left, moves in 4-way symmetry */}\n              <div\n                ref={(el) => {\n                  shapeRefs.current[2] = el;\n                }}\n                className=\"absolute top-0 bottom-0 w-px bg-primary/20 dark:bg-primary/30 transition-colors duration-300 z-10 pointer-events-none\"\n                style={shape[2]}\n              />\n\n              {/* Moving Right Vertical Grid Line - attached to shape right, moves in 4-way symmetry */}\n              <div\n                ref={(el) => {\n                  shapeRefs.current[3] = el;\n                }}\n                className=\"absolute top-0 bottom-0 w-px bg-primary/20 dark:bg-primary/30 transition-colors duration-300 z-10 pointer-events-none\"\n                style={shape[3]}\n              />\n\n              {/* Animated Central Morphing Shape - strictly bounded between all 4 moving grid lines */}\n              <div\n                ref={(el) => {\n                  shapeRefs.current[4] = el;\n                }}\n                className=\"absolute z-10 pointer-events-none\"\n                style={shape[4]}\n              >\n                {/* Geometric chamfered polygon */}\n                <div\n                  className=\"w-full h-full bg-primary/15 dark:bg-primary/25 transition-colors duration-300 drop-shadow-xs\"\n                  style={{\n                    clipPath:\n                      \"polygon(clamp(24px, 15%, 52px) 0, 100% 0, 100% calc(100% - clamp(20px, 14%, 44px)), calc(100% - clamp(24px, 15%, 52px)) 100%, 0 100%, 0 clamp(20px, 14%, 44px))\",\n                  }}\n                />\n\n                {/* Top-Right Control Anchor Square - exactly on (xRight, top) */}\n                <div className=\"absolute top-0 right-0 w-2 h-2 sm:w-2.5 sm:h-2.5 bg-primary translate-x-1/2 -translate-y-1/2 shadow-xs transition-colors duration-300\" />\n\n                {/* Bottom-Left Control Anchor Square - exactly on (24%, bottom) */}\n                <div className=\"absolute bottom-0 left-0 w-2 h-2 sm:w-2.5 sm:h-2.5 bg-primary -translate-x-1/2 translate-y-1/2 shadow-xs transition-colors duration-300\" />\n              </div>\n            </div>\n          </div>\n        </section>\n      );\n    }\n\n    /* ═══════════════════════════════════════════════\n       VARIANT 7: ATMOSPHERIC CYCLONE / RADAR VORTEX HERO (MATCHES CLIMATE RISK REFERENCE)\n       ═══════════════════════════════════════════════ */\n    if (variant === \"vortex\" || variant === \"radar\" || variant === \"cyclone\") {\n      const vortexEyebrow = eyebrow || \"CLIMATE RISK, PER PARCEL\";\n      const vortexTitle =\n        titlePrefix === \"Build \"\n          ? \"One street,\\none storm,\\ntwo prices\"\n          : titlePrefix + (titleSuffix ? ` ${titleSuffix}` : \"\");\n      const vortexSubtitle =\n        subtitle ===\n        \"A meticulous library of React components & interactive blocks, engineered for seamless performance with Tailwind CSS, TypeScript, GSAP, and Motion.\"\n          ? \"Flood, wildfire and wind priced for one\\naddress, not the postcode around it\"\n          : subtitle;\n      const vortexPrimaryAction =\n        primaryActionLabel === \"Browse Components\"\n          ? \"Score an address\"\n          : primaryActionLabel;\n      const activeMetrics = metrics || DEFAULT_VORTEX_METRICS;\n      const vortexHudTitle = hudTitle || \"GUST FIELD\";\n      const vortexHudTime = hudTime || \"T+36:25\";\n      const activeHudMetrics = hudMetrics || DEFAULT_HUD_METRICS;\n      const vortexBg = resolvedColor || \"#0052cc\";\n\n      return (\n        <section\n          ref={ref}\n          style={{\n            backgroundColor: vortexBg,\n            ...customStyle,\n          }}\n          className={cn(\n            \"relative w-full overflow-hidden text-white transition-colors duration-300 select-none\",\n            className,\n          )}\n          {...props}\n        >\n          <div className=\"w-full max-w-[1440px] mx-auto grid grid-cols-1 lg:grid-cols-12 min-h-[580px] lg:min-h-[660px] items-stretch\">\n            {/* LEFT COLUMN: Monospace Eyebrow, Main 3-line Headline, Subtitle, CTA Button & Bottom 3 Metrics */}\n            <div className=\"col-span-1 lg:col-span-6 flex flex-col justify-between p-6 sm:p-10 lg:p-16 z-10 space-y-8\">\n              <div className=\"space-y-6 sm:space-y-8\">\n                {/* Eyebrow */}\n                {vortexEyebrow && (\n                  <p className=\"font-mono text-[10px] sm:text-xs tracking-[0.24em] uppercase text-white/60 font-normal\">\n                    {vortexEyebrow}\n                  </p>\n                )}\n\n                {/* Main Headline */}\n                <h1 className=\"text-3xl sm:text-4xl md:text-5xl lg:text-[52px] font-mono font-normal tracking-tight leading-[1.12] text-white whitespace-pre-line\">\n                  {vortexTitle}\n                </h1>\n\n                {/* Subtitle */}\n                {vortexSubtitle && (\n                  <p className=\"text-xs sm:text-sm md:text-base text-white/70 font-mono font-normal leading-relaxed whitespace-pre-line max-w-md\">\n                    {vortexSubtitle}\n                  </p>\n                )}\n\n                {/* Actions */}\n                <div className=\"flex flex-wrap items-center gap-3 pt-2\">\n                  <Link\n                    href={primaryActionHref}\n                    className=\"inline-flex items-center justify-center px-6 py-3 rounded-[2px] bg-white font-mono text-xs sm:text-sm font-normal hover:bg-white/95 active:scale-95 transition-all text-center\"\n                    style={{ color: vortexBg }}\n                  >\n                    <span>{vortexPrimaryAction}</span>\n                  </Link>\n\n                  {secondaryActionLabel && (\n                    <Link\n                      href={secondaryActionHref}\n                      className=\"inline-flex items-center justify-center px-6 py-3 rounded-[2px] border border-white/20 bg-white/10 hover:bg-white/15 active:scale-95 text-white font-mono text-xs sm:text-sm font-normal transition-all backdrop-blur-sm\"\n                    >\n                      <span>{secondaryActionLabel}</span>\n                    </Link>\n                  )}\n                </div>\n              </div>\n\n              {/* Bottom 3 Metrics Grid */}\n              <div className=\"grid grid-cols-3 gap-4 sm:gap-6 pt-10 sm:pt-12 border-t border-white/10 mt-auto\">\n                {activeMetrics.map((item, idx) => (\n                  <div key={idx} className=\"space-y-1\">\n                    <p className=\"text-xl sm:text-2xl lg:text-3xl font-mono font-normal text-white tracking-tight\">\n                      {item.value}\n                    </p>\n                    <p className=\"text-[9px] sm:text-[10px] lg:text-[11px] font-mono font-normal tracking-[0.16em] text-white/50 uppercase leading-snug\">\n                      {item.label}\n                    </p>\n                  </div>\n                ))}\n              </div>\n            </div>\n\n            {/* RIGHT COLUMN: Rotating Cyclone Vortex Radar & Corner Reticle & Telemetry HUD */}\n            <div className=\"col-span-1 lg:col-span-6 relative flex items-center justify-center p-3 sm:p-6 lg:p-8 border-t lg:border-t-0 lg:border-l border-white/10 min-h-[460px] sm:min-h-[520px] lg:min-h-[660px] overflow-hidden\">\n              {/* Radar Screen Frame */}\n              <div className=\"relative w-full h-full min-h-[440px] sm:min-h-[500px] lg:min-h-[600px] flex items-center justify-center overflow-hidden border border-white/15\">\n                {/* Top-Left HUD Targeting Crosshair Reticle */}\n                <div className=\"absolute top-3 left-3 sm:top-4 sm:left-4 z-20 pointer-events-none select-none text-white/90\">\n                  <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">\n                    <path d=\"M2 7V2H7\" strokeWidth=\"1.5\" strokeLinecap=\"square\" />\n                    <path d=\"M22 17V22H17\" strokeWidth=\"1.5\" strokeLinecap=\"square\" />\n                    <path d=\"M17 2H22V7\" strokeWidth=\"1.5\" strokeLinecap=\"square\" strokeOpacity=\"0.4\" />\n                    <path d=\"M7 22H2V17\" strokeWidth=\"1.5\" strokeLinecap=\"square\" strokeOpacity=\"0.4\" />\n                    <circle cx=\"12\" cy=\"12\" r=\"3\" strokeWidth=\"1.2\" />\n                    <circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n                  </svg>\n                </div>\n\n                {/* Rotating Vortex Canvas */}\n                <div className=\"absolute inset-0 flex items-center justify-center\">\n                  <VortexCanvas speed={rotationSpeed ?? 0.010} />\n                </div>\n\n                {/* Bottom-Right Telemetry HUD Card */}\n                <div className=\"absolute bottom-3 right-3 sm:bottom-5 sm:right-5 z-30 w-[230px] sm:w-[260px] border border-white/25 bg-white/[0.03] backdrop-blur-[2px] rounded-[2px] p-3 sm:p-3.5 text-white font-mono pointer-events-auto select-none\">\n                  <div className=\"flex items-center justify-between text-[10px] sm:text-[11px] pb-2 border-b border-white/20\">\n                    <div className=\"flex items-center gap-2 font-normal tracking-wider\">\n                      <span className=\"size-1.5 sm:size-2 bg-white inline-block shrink-0\" />\n                      <span className=\"tracking-widest\">{vortexHudTitle}</span>\n                    </div>\n                    <span className=\"text-white/70 text-[9px] sm:text-[10px] font-normal tracking-wider\">\n                      {vortexHudTime}\n                    </span>\n                  </div>\n                  <div className=\"pt-2.5 space-y-1.5 text-[10px] sm:text-[11px]\">\n                    {activeHudMetrics.map((item, idx) => (\n                      <div key={idx} className=\"flex items-center justify-between\">\n                        <span className=\"text-white/60 tracking-wider text-[9px] sm:text-[10px] uppercase font-normal\">\n                          {item.label}\n                        </span>\n                        <span className=\"text-white font-normal tracking-wide text-[10px] sm:text-[11px]\">\n                          {item.value}\n                        </span>\n                      </div>\n                    ))}\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n      );\n    }\n\n    /* ═══════════════════════════════════════════════\n       VARIANTS 1 & 2: BOUNCE & TYPING (CENTERED HERO)\n       ═══════════════════════════════════════════════ */\n    return (\n      <section\n        ref={ref}\n        style={customStyle}\n        className={cn(\n          \"relative w-full flex flex-col justify-center items-center py-4 sm:py-8 md:py-12\",\n          className,\n        )}\n        {...props}\n      >\n        <style>{HERO_CSS}</style>\n        {/* Radial Background Glow */}\n        <div\n          className=\"absolute inset-0 pointer-events-none\"\n          style={{\n            background:\n              \"radial-gradient(ellipse 80% 60% at 50% -10%, var(--primary) 0%, transparent 65%)\",\n            opacity: 0.12,\n          }}\n        />\n        {/* Grid Mask Background */}\n        <div className=\"absolute inset-0 bg-[linear-gradient(to_right,color-mix(in_oklab,var(--foreground)_3%,transparent)_1px,transparent_1px),linear-gradient(to_bottom,color-mix(in_oklab,var(--foreground)_3%,transparent)_1px,transparent_1px)] bg-[size:24px_24px] sm:bg-[size:36px_36px] [mask-image:radial-gradient(ellipse_70%_60%_at_50%_40%,black_40%,transparent_100%)]\" />\n\n        <div className=\"relative z-10 max-w-[1320px] mx-auto w-full px-5 sm:px-6 md:px-8 flex flex-col justify-center items-center\">\n          <div className=\"flex flex-col items-center text-center max-w-[1320px] mx-auto space-y-3.5 sm:space-y-6 md:space-y-7 my-auto\">\n            {/* Top Pill Badge */}\n            {badgeText && (\n              <Link href={badgeHref} className=\"inline-block group\">\n                <div className=\"inline-flex items-center gap-1 sm:gap-2 px-2.5 sm:px-5 py-1 sm:py-2.5 rounded-full bg-primary/10 border border-primary/30 text-[9px] xs:text-[10px] sm:text-base font-semibold text-[var(--hero-accent-text)] group-hover:bg-primary/20 group-hover:border-primary/50 transition-all duration-300\">\n                  <Sparkles className=\"size-2.5 xs:size-3 sm:size-4 text-[var(--hero-accent-text)] animate-spin shrink-0\" />\n                  <span className=\"truncate max-w-[140px] xs:max-w-[170px] sm:max-w-none\">\n                    {badgeText}\n                  </span>\n                </div>\n              </Link>\n            )}\n\n            {/* Dynamic Animated Title Word */}\n            <h1 className=\"text-xl xs:text-2xl sm:text-2xl md:text-3xl lg:text-4xl xl:text-5xl font-bold tracking-tight leading-tight text-foreground text-center inline-flex items-center justify-center flex-wrap gap-x-1.5 sm:gap-x-2.5\">\n              <span className=\"shrink-0\">\n                {titlePrefix}{\" \"}\n                <span className=\"text-[var(--hero-accent-text)]\">\n                  Interactive\n                </span>\n              </span>\n\n              <AnimatedTypographyBlock\n                as=\"span\"\n                bare\n                variant={variant === \"typing\" ? \"typewriter\" : \"letter-bounce\"}\n                words={typingWords}\n                prefixPosition={prefixPosition}\n                className=\"shrink-0 text-foreground\"\n                style={{ \"--typo-caret\": \"var(--hero-accent-text)\" } as React.CSSProperties}\n              />\n\n              {titleSuffix && <span className=\"shrink-0\">{titleSuffix}</span>}\n            </h1>\n\n            {/* Subtitle Paragraph */}\n            {subtitle && (\n              <p className=\"text-[10px] xs:text-xs sm:text-base md:text-lg text-muted-foreground w-full max-w-3xl mx-auto leading-tight sm:leading-relaxed text-center font-medium px-1 sm:px-0\">\n                {subtitle}\n              </p>\n            )}\n\n            {/* CLI Command Box */}\n            {cliCommand && (\n              <div className=\"pt-0.5 w-full flex justify-center px-1 sm:px-0\">\n                <button\n                  type=\"button\"\n                  onClick={handleCopy}\n                  className=\"group flex items-center gap-2 sm:gap-3.5 px-2.5 sm:px-5 h-8 xs:h-9 sm:h-[58px] rounded-lg sm:rounded-2xl border border-border bg-muted/70 cursor-pointer w-full max-w-[220px] xs:max-w-[250px] sm:max-w-md hover:border-primary/50 transition-all\"\n                >\n                  <Terminal className=\"size-3 xs:size-3.5 sm:size-5 text-[var(--hero-accent-text)] shrink-0\" />\n                  <code className=\"text-[9px] xs:text-[10px] sm:text-sm md:text-base font-mono text-foreground flex-1 text-left font-semibold truncate !bg-transparent !border-none !outline-none !shadow-none !p-0\">\n                    {cliCommand}\n                  </code>\n                  <div className=\"pl-1.5 sm:pl-3.5 border-l-0 h-3 sm:h-5 flex items-center shrink-0\">\n                    {copied ? (\n                      <Check className=\"size-3 sm:size-4.5 text-emerald-500\" />\n                    ) : (\n                      <Copy className=\"size-3 sm:size-4.5 text-muted-foreground group-hover:text-foreground transition-colors\" />\n                    )}\n                  </div>\n                </button>\n              </div>\n            )}\n\n            {/* Actions */}\n            <div className=\"flex flex-row items-center justify-center gap-1.5 xs:gap-2.5 sm:gap-4 pt-0 sm:pt-2 w-full max-w-3xl mx-auto px-1 sm:px-0\">\n              {primaryActionLabel && (\n                <Link\n                  href={primaryActionHref}\n                  className=\"px-2.5 xs:px-3 sm:px-9 h-8 xs:h-9 sm:h-[58px] rounded-lg sm:rounded-2xl bg-primary text-primary-foreground text-[10px] xs:text-xs sm:text-base md:text-lg font-semibold hover:opacity-90 hover:scale-[1.02] active:scale-[0.98] transition-all flex items-center justify-center gap-1 sm:gap-2.5 flex-1 sm:flex-initial min-w-0 sm:min-w-[220px]\"\n                >\n                  <span>{primaryActionLabel}</span>\n                  <ArrowRight className=\"size-3 sm:size-5 shrink-0\" />\n                </Link>\n              )}\n\n              {secondaryActionLabel && (\n                <Link\n                  href={secondaryActionHref}\n                  target={\n                    secondaryActionHref.startsWith(\"http\")\n                      ? \"_blank\"\n                      : undefined\n                  }\n                  className=\"px-2.5 xs:px-3 sm:px-9 h-8 xs:h-9 sm:h-[58px] rounded-lg sm:rounded-2xl border border-border bg-card text-foreground text-[10px] xs:text-xs sm:text-base md:text-lg font-semibold hover:bg-primary/10 hover:border-primary/50 hover:text-[var(--hero-accent-text)] hover:scale-[1.02] active:scale-[0.98] transition-all flex items-center justify-center gap-1 sm:gap-2.5 flex-1 sm:flex-initial min-w-0 sm:min-w-[220px]\"\n                >\n                  <span>{secondaryActionLabel}</span>\n                  <GitHubIcon className=\"size-3 sm:size-5 shrink-0\" />\n                </Link>\n              )}\n            </div>\n          </div>\n        </div>\n      </section>\n    );\n  },\n);\n\nHeroBlock.displayName = \"HeroBlock\";\nexport { BentoCascadeHero, type BentoCascadeCardItem } from \"./BentoCascadeHeroBlock\";\nexport { BreatheHero, type BreatheCardItem, type BreatheHeroProps } from \"./BreatheHeroBlock\";\nexport default HeroBlock;\n",
      "type": "registry:component",
      "target": "components/custom/blocks/HeroBlock.tsx"
    }
  ],
  "docs": "Named export: HeroBlock. Everything is a prop — `variant` switches between 'orbit', 'bounce', 'typing', 'slider', 'pet-shop', 'doctor', and 'facility', with interactive animations, theme color support, and responsive layouts.",
  "categories": [
    "marketing"
  ],
  "type": "registry:component"
}
