/* global React */
/*  Shared page chrome for sub-pages (services, pages/*).

    Path resolution: every HTML file sets `window.UM_ROOT` BEFORE loading
    this script. UM_ROOT is the relative path from the host HTML to the
    project root (with trailing slash). Examples:
      index.html               → UM_ROOT = "../../"
      pages/services.html      → UM_ROOT = "../../../"
      services/web-design.html → UM_ROOT = "../../../"
*/

const R = (typeof window !== "undefined" && window.UM_ROOT) || "../../";

const { useState: usePS, useEffect: useEffPS, useRef: useRefPS } = React;

/* ---------- ICON helper (uses SVG sprite) ---------- */
function UmIcon({ name, size = 16, color = "currentColor" }) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24"
         style={{color, display:"inline-block", verticalAlign:"middle"}}>
      <use href={`${R}assets/icons/um-icons.svg#${name}`}/>
    </svg>
  );
}

/* ---------- Section Label ---------- */
function PSLabel({ children }) {
  return (
    <span className="pw-label">
      <span className="dot"></span>
      {children}
    </span>
  );
}

/* ---------- Top Nav for sub-pages ---------- */
function PageNav({ active }) {
  const links = [
    { id: "home",      label: "Home",      href: `${R}index.html`           },
    { id: "services",  label: "Services",  href: `${R}pages/services.html`  },
    { id: "portfolio", label: "Portfolio", href: `${R}pages/portfolio.html` },
    { id: "about",     label: "About",     href: `${R}pages/about.html`     },
    { id: "pricing",   label: "Pricing",   href: `${R}pages/pricing.html`   },
    { id: "contact",   label: "Contact",   href: `${R}pages/contact.html`   },
  ];
  return (
    <header className="pw-nav">
      <div className="pw-nav-inner">
        <a className="pw-nav-mark" href={`${R}index.html`}>
          <img className="mark" src={`${R}assets/logos/transparent/iconmark-whiteblue.png`} alt="UM"/>
          <span className="brand-name">UCHE MADUMERE</span>
        </a>
        <nav className="pw-nav-links">
          {links.map(l => (
            <a key={l.id} href={l.href} className={active === l.id ? "active" : ""}>
              {l.label}
            </a>
          ))}
        </nav>
        <a className="um-btn-primary" href={`${R}pages/order.html`}>
          Order now <UmIcon name="ico-arrow-right" size={14}/>
        </a>
      </div>
    </header>
  );
}

/* ---------- CountUp — scroll-triggered counter ---------- */
function CountUp({ to, suffix = "", durationMs = 1600, accent = false }) {
  const [val, setVal] = usePS(0);
  const [armed, setArmed] = usePS(false);
  const ref = useRefPS(null);

  // Trigger when scrolled into view
  useEffPS(() => {
    if (!ref.current || armed) return;
    const io = new IntersectionObserver((entries) => {
      entries.forEach(e => {
        if (e.isIntersecting) { setArmed(true); io.disconnect(); }
      });
    }, { threshold: 0.4 });
    io.observe(ref.current);
    return () => io.disconnect();
  }, [armed]);

  useEffPS(() => {
    if (!armed) return;
    let raf = 0;
    const start = performance.now();
    const target = Number(to) || 0;
    const tick = (now) => {
      const t = Math.min(1, (now - start) / durationMs);
      // ease-out cubic
      const eased = 1 - Math.pow(1 - t, 3);
      setVal(Math.round(target * eased));
      if (t < 1) raf = requestAnimationFrame(tick);
    };
    raf = requestAnimationFrame(tick);
    return () => cancelAnimationFrame(raf);
  }, [armed, to, durationMs]);

  return (
    <span ref={ref}>
      {val.toLocaleString()}
      {suffix && <span className={accent ? "accent" : ""}>{suffix}</span>}
    </span>
  );
}

/* ---------- Footer for sub-pages ---------- */
function PageFooter() {
  return (
    <footer className="pw-footer">
      <div className="um-container">
        <div className="pw-footer-row">
          <div className="pw-footer-mark">
            <div style={{display:"flex", alignItems:"center", gap:14, marginBottom: 14}}>
              <img src={`${R}assets/logos/transparent/iconmark-whiteblue.png`} alt="UM" style={{height:42}}/>
              <span style={{fontFamily:"var(--font-display)", fontWeight:700, fontSize:22,
                            color:"#fff", textTransform:"uppercase", letterSpacing:"0.04em"}}>
                UCHE MADUMERE
              </span>
            </div>
            <p>Graphic & Motion Designer. Mississauga, Ontario, Canada. Available worldwide.</p>
          </div>
          <div className="pw-footer-cols">
            <div className="pw-footer-col">
              <h4>Navigate</h4>
              <a href={`${R}index.html`}>Home</a>
              <a href={`${R}pages/services.html`}>Services</a>
              <a href={`${R}pages/portfolio.html`}>Portfolio</a>
              <a href={`${R}pages/pricing.html`}>Pricing</a>
              <a href={`${R}pages/about.html`}>About</a>
              <a href={`${R}privacy`}>Privacy</a>
            </div>
            <div className="pw-footer-col">
              <h4>Connect</h4>
              <a href="https://www.instagram.com/uchemadumere_/" target="_blank" rel="noopener"><UmIcon name="ico-instagram" size={12}/> &nbsp; Instagram</a>
              <a href="https://www.linkedin.com/in/samuell-madumereee-67b04833" target="_blank" rel="noopener"><UmIcon name="ico-linkedin" size={12}/> &nbsp; LinkedIn</a>
              <a href="https://www.tiktok.com/@uchemadumere" target="_blank" rel="noopener">TikTok</a>
              <a href="https://www.facebook.com/profile.php?id=61589544167734" target="_blank" rel="noopener">Facebook</a>
            </div>
            <div className="pw-footer-col">
              <h4>Contact</h4>
              <a href="mailto:uche.madumere@uchemadumere.com"><UmIcon name="ico-mail" size={12}/> &nbsp; uche.madumere@uchemadumere.com</a>
              <a href="tel:+14377723266"><UmIcon name="ico-phone" size={12}/> &nbsp; +1 (437) 772 3266</a>
            </div>
          </div>
        </div>
        <div className="pw-footer-bot">
          <span>© 2026 UCHE MADUMERE · ALL RIGHTS RESERVED</span>
          <span>DESIGN THAT MOVES · V1.0</span>
        </div>
      </div>
    </footer>
  );
}

/* ---------- Page-level CTA Band ---------- */
function PageCTA({ headline = "Got a brand worth", accent = "moving?" }) {
  return (
    <section className="pw-section" style={{paddingTop:"40px"}}>
      <div className="pw-cta">
        <PSLabel>Let's work together</PSLabel>
        <h2>{headline} <span className="accent">{accent}</span></h2>
        <div className="row">
          <a className="um-btn-primary" href={`${R}pages/contact.html`}>
            Book an appointment <UmIcon name="ico-arrow-right" size={14}/>
          </a>
          <a className="um-btn-ghost" href="mailto:uche.madumere@uchemadumere.com">
            <UmIcon name="ico-mail" size={14}/> &nbsp; uche.madumere@uchemadumere.com
          </a>
        </div>
      </div>
    </section>
  );
}

/* ---------- Back link ---------- */
function BackLink({ href, label = "Back to services" }) {
  return (
    <a href={href} className="ps-back">
      <span className="arrow">←</span>
      <span>{label}</span>
    </a>
  );
}

/* ---------- Page Hero (sub-page hero) ---------- */
function PageHero({ kicker, title, accent, lede, stats }) {
  return (
    <section className="ps-hero">
      <div className="um-container">
        <PSLabel>{kicker}</PSLabel>
        <h1 className="ps-hero-title">
          {title}{" "}
          {accent && <span className="accent">{accent}</span>}
        </h1>
        {lede && <p className="ps-hero-lede">{lede}</p>}
        {stats && (
          <div className="ps-hero-stats">
            {stats.map((s, i) => (
              <div key={i}>
                <div className="num">{s.num}</div>
                <div className="lbl">{s.lbl}</div>
              </div>
            ))}
          </div>
        )}
      </div>
    </section>
  );
}

/* ---------- Service-data registry (shared) ---------- */
const CANVA_PORTFOLIO = "https://pixelmazondesignstudio.my.canva.site/portfolio";

const PMDS_SERVICES = [
  { id: "static-graphics", ico: "ico-static", n: "01",
    title: "Static Graphics Design",
    accent: "Graphics",
    kicker: "Service 01 · Static",
    short:   "Boost engagement and conversion for your business with modern graphics.",
    lede:    "Editorial-grade posters, social posts, brochures, and brand collateral across real estate, tech products, maritime, corporate, and financial sectors. Real clients include Azuri Towers, Gadget Hack Central, Nexzon Global Maritime, Yovanni Solutions, and 28+ brands worldwide.",
    countLabel: "238+ Projects Delivered",
    formats: ["Instagram 4:5", "Square 1:1", "Story 9:16", "LinkedIn 4:5", "LinkedIn banner", "YouTube thumbnail", "Email banner", "Print poster", "Trifold flyer", "Rollup banners", "Lamppost banners", "Product logos"],
    deliverables: ["Source PSD or Illustrator file", "Web + print exports (PNG, PDF)", "2 revision rounds", "72-hour turnaround"],
    stats: [
      { num: "238+", lbl: "Graphics delivered" },
      { num: "33", lbl: "Client brands" },
      { num: "Real Estate + Tech", lbl: "Primary sectors" },
    ],
    tiers: [
      { id: "static-single",   nm: "Single Asset",   price: 49,  suffix: "/ asset",  badge: "ENTRY",
        list: ["1 polished design", "2 revision rounds", "72-hour turnaround", "Web + print exports", "Source file included"] },
      { id: "static-campaign", nm: "Campaign Pack",  price: 399, suffix: "/ month",  badge: "POPULAR", featured: true,
        unitNote: "15 designs · $26.60 each",
        list: ["15 designs / month", "Multi-channel formats", "Brand-pass review", "Priority TAT (≤48h)", "Async Slack channel"] },
      { id: "static-brand",    nm: "Brand Pack",     price: 599, suffix: "/ month",  badge: "BEST VALUE",
        unitNote: "30 designs · $19.97 each",
        list: ["30 designs / month", "Full content calendar", "Story + reel covers", "Monthly strategy review", "Dedicated channel"] },
    ],
    portfolio: ["static/2026-digital-01.webp","static/2026-digital-02.webp","static/2026-digital-03.webp","static/2026-digital-04.webp","static/2026-digital-05.webp","static/2026-digital-06.webp","static/2026-digital-07.webp","static/2026-digital-08.webp","static/2026-digital-09.webp","static/2026-digital-10.webp","static/2026-print-01.webp","static/2026-print-02.webp","static/2026-print-03.webp","static/2026-print-04.webp","static/2026-print-05.webp","static/2026-print-06.webp","static/2026-print-07.webp","static/2026-print-08.webp","static/2026-print-09.webp","static/2026-print-10.webp","static/2026-print-11.webp","static/azuri-digital-01.webp","static/azuri-digital-02.webp","static/azuri-digital-03.webp","static/azuri-digital-04.webp","static/azuri-digital-05.webp","static/azuri-digital-06.webp","static/azuri-digital-07.webp","static/azuri-digital-08.webp","static/azuri-digital-09.webp","static/azuri-digital-10.webp","static/azuri-print-01.webp","static/azuri-print-02.webp","static/azuri-print-03.webp","static/azuri-print-04.webp","static/azuri-print-05.webp","static/azuri-print-06.webp","static/azuri-print-07.webp","static/azuri-print-08.webp","static/azuri-print-09.webp","static/azuri-print-10.webp","static/azuri-print-11.webp","static/azuri-print-12.webp","static/azuri-print-13.webp","static/other-digital-01.webp","static/other-digital-02.webp","static/other-digital-03.webp","static/other-digital-04.webp","static/other-digital-05.webp","static/other-digital-06.webp","static/other-digital-07.webp","static/other-digital-08.webp","static/other-digital-09.webp","static/other-digital-10.webp","static/other-digital-11.webp","static/other-digital-12.webp","static/other-digital-13.webp","static/other-digital-14.webp","static/other-digital-15.webp","static/other-digital-16.webp","static/other-digital-17.webp","static/other-digital-18.webp","static/other-digital-19.webp","static/other-digital-20.webp","static/other-print-01.webp","static/other-print-02.webp","static/other-print-03.webp","static/other-print-04.webp","static/other-print-05.webp","static/other-print-06.webp","static/other-print-07.webp","static/other-print-08.webp","static/other-print-09.webp","static/other-print-10.webp","static/other-print-11.webp","static/other-print-12.webp","static/other-print-13.webp","static/other-print-14.webp"],
    secondaryLink: "https://affable-lottery-525961.framer.app/",
    fullStudyLink: CANVA_PORTFOLIO,
  },
  { id: "motion-graphics", ico: "ico-motion", n: "02",
    title: "Motion Graphics Design",
    accent: "Graphics",
    kicker: "Service 02 · Motion",
    short:   "Boost visual engagement with motion graphics and video editing.",
    lede:    "Logo stings, lower thirds, reel transitions, and full motion identity systems — built on a single timeline that scales.",
    countLabel: "100+ Projects",
    formats: ["Logo sting 3s", "Lower third loop", "Transition wipe", "Reel cover", "Event promo motion", "Animated social post"],
    deliverables: ["MP4 + transparent MOV", "After Effects source", "MOGRT template (where suitable)", "Sound design pass"],
    stats: [
      { num: "100+", lbl: "Reels delivered" },
      { num: "≤2.5s", lbl: "Sting target" },
      { num: "Ae",   lbl: "Native source" },
    ],
    tiers: [
      { id: "motion-single",   nm: "Single Asset",   price: 149,  suffix: "/ asset",  badge: "ENTRY",
        list: ["1 motion graphic", "Up to 15s runtime", "2 revision rounds", "MP4 + transparent MOV", "Source AE file"] },
      { id: "motion-campaign", nm: "Campaign Pack",  price: 999,  suffix: "/ month",  badge: "POPULAR", featured: true,
        unitNote: "10 motion graphics / mo",
        list: ["10 motion graphics", "Logo sting + lower thirds", "Sound design pass", "Brand-pass review", "Priority TAT (≤72h)"] },
      { id: "motion-premium",  nm: "Premium Pack",   price: 1499, suffix: "/ month",  badge: "BEST VALUE",
        unitNote: "20 motion graphics / mo",
        list: ["20 motion graphics", "Full motion identity", "Native source files", "MOGRT templates", "Dedicated channel"] },
    ],
    secondaryLink: "https://affable-lottery-525961.framer.app/motion-graphics-design",
    fullStudyLink: CANVA_PORTFOLIO,
  },
  { id: "presentation-design", ico: "ico-presentation", n: "03",
    title: "PowerPoint Designs",
    accent: "Designs",
    kicker: "Service 03 · Decks",
    short:   "Boost visual engagement with stakeholders with clear and catchy designs presentations.",
    lede:    "Executive-level slides for property launches, investor briefings, and pitch rooms. Slide systems that hold up at scale.",
    countLabel: "100+ Projects",
    formats: ["Pitch deck", "Investor briefing", "Sales deck", "Internal townhall", "One-pager", "Conference keynote"],
    deliverables: ["Master template (Keynote + PPT)", "Source design file", "Editable speaker-notes", "PDF + on-screen exports"],
    stats: [
      { num: "100+", lbl: "Decks shipped" },
      { num: "16:9", lbl: "Default ratio" },
      { num: "Azuri", lbl: "Property launch lead" },
    ],
    tiers: [
      { id: "ppt-basic",   nm: "Basic Slide",   price: 49, suffix: "/ slide",  badge: "ENTRY",
        list: ["Typography + clean layout", "Brand-color application", "1 revision round", "PPT + Keynote source", "PDF export"] },
      { id: "ppt-complex", nm: "Complex Slide", price: 89, suffix: "/ slide",  badge: "PRO", featured: true,
        list: ["Custom charts + infographics", "Editorial-grade visual hierarchy", "2 revision rounds", "PPT + Keynote + PDF", "Editable speaker-notes"] },
    ],
    secondaryLink: "https://affable-lottery-525961.framer.app/power-point-designs",
    fullStudyLink: CANVA_PORTFOLIO,
  },
  { id: "logo-creation", ico: "ico-logo", n: "04",
    title: "Full Stack Logo Design",
    accent: "Design",
    kicker: "Service 04 · Brand",
    short:   "Get a full branding guide for your new business or if you are revamping an existing business.",
    lede:    "Marks, guidelines, color, typography, and applications. A strict, scalable identity from the first stroke.",
    countLabel: "20+ Projects",
    formats: ["Primary logo", "Icon mark", "Wordmark", "Lockups", "Brand guidelines (40+ pages)", "Application mockups"],
    deliverables: ["Vector source (AI + SVG)", "Color + monochrome variants", "Brand guide PDF", "Application mockups"],
    stats: [
      { num: "20+", lbl: "Identities" },
      { num: "1x",  lbl: "Grid unit base" },
      { num: "5",   lbl: "Variations / mark" },
    ],
    tiers: [
      { id: "logo-essentials", nm: "Logo Essentials", price: 299, suffix: "one-time",  badge: "STARTER",
        list: ["Primary mark + wordmark", "3 logo concepts", "2 revision rounds", "Vector files (AI + SVG)", "Color + monochrome variants"] },
      { id: "logo-fullstack",  nm: "Full-Stack Logo", price: 599, suffix: "one-time",  badge: "POPULAR", featured: true,
        list: ["Logo system (5 marks)", "Brand guidelines (40+ pages)", "Typography + color system", "Application mockups", "Pattern + iconography", "Source files (AI + SVG + PDF)"] },
    ],
    secondaryLink: "https://affable-lottery-525961.framer.app/logo-design",
    fullStudyLink: CANVA_PORTFOLIO,
  },
  { id: "web-design", ico: "ico-web", n: "05",
    title: "Website Design",
    accent: "Design",
    kicker: "Service 05 · Web",
    short:   "I created digital products with unique ideas — Wix & Framer.",
    lede:    "Landing pages and portfolio sites in Framer, WordPress, Wix Studio, Shopify, and Squarespace — built with the same brand discipline.",
    countLabel: "Wix & Framer",
    formats: ["Landing page", "Portfolio site", "Brand microsite", "E-commerce front", "Multi-page brochure site"],
    deliverables: ["Live published site", "CMS configured", "Responsive across breakpoints", "Handoff doc + 30-day support"],
    stats: [
      { num: "Wix", lbl: "Studio + Framer" },
      { num: "5",   lbl: "Platforms" },
      { num: "Framer", lbl: "Studio default" },
    ],
    tiers: [
      { id: "web-basic",   nm: "Basic Site",   price: 999,  suffix: "one-time",  badge: "STARTER",
        list: ["Up to 5 pages", "Responsive design", "CMS configured", "Domain + hosting setup", "30-day post-launch support"] },
      { id: "web-premium", nm: "Premium Site", price: 2490, suffix: "one-time",  badge: "POPULAR", featured: true,
        list: ["Up to 12 pages", "Custom animations + interactions", "E-commerce ready", "SEO foundation + analytics", "60-day post-launch support", "Brand-aligned visual system"] },
    ],
    secondaryLink: "https://affable-lottery-525961.framer.app/web-design",
    fullStudyLink: CANVA_PORTFOLIO,
  },
  { id: "ui-ux", ico: "ico-uiux", n: "06",
    title: "UI / UX Design",
    accent: "Design",
    kicker: "Service 06 · UI/UX",
    short:   "I build app experiences and interfaces with Figma.",
    lede:    "Product surfaces from wireframes to dev handoff. Real systems shipped — like the Azuri Towers Facility Management app, now in active use by residents.",
    countLabel: "Figma",
    formats: ["Mobile app screens", "Web app surfaces", "Wireframes", "Design system", "Prototype links", "Dev handoff"],
    deliverables: ["Figma source", "Component library", "Interactive prototype", "Dev specs + redlines"],
    stats: [
      { num: "Azuri", lbl: "Facility app" },
      { num: "Figma", lbl: "Source" },
      { num: "8+",  lbl: "Products" },
    ],
    tiers: [
      { id: "uiux-basic",   nm: "Basic Build",   price: 4500, suffix: "one-time",  badge: "STARTER",
        unitNote: "Up to 25 screens",
        list: ["Up to 25 screens", "Wireframe + hi-fi design", "Component library", "Interactive prototype", "Dev specs + redlines"] },
      { id: "uiux-premium", nm: "Premium Build", price: 7900, suffix: "one-time",  badge: "POPULAR", featured: true,
        unitNote: "Unlimited screens",
        list: ["Unlimited screens", "End-to-end design system", "User research + testing", "Multi-platform (mobile + web)", "Motion + micro-interactions", "Founder-grade dev handoff"] },
    ],
    secondaryLink: "https://affable-lottery-525961.framer.app/ui-ux",
    fullStudyLink: CANVA_PORTFOLIO,
  },
  { id: "video-production", ico: "ico-video", n: "07",
    title: "Video Editing",
    accent: "Editing",
    kicker: "Service 07 · Video",
    short:   "Boost visual engagement with modern video editing.",
    lede:    "Property tours, short-form social video, and branded films. Premiere, After Effects, drone — end-to-end production.",
    countLabel: "100+ Projects",
    formats: ["Property tour", "Brand film", "Social short", "Reel cut-down", "YouTube long-form", "Drone aerial"],
    deliverables: ["Final cut (multi-format)", "Color graded master", "Subtitled exports", "Source project"],
    stats: [
      { num: "100+", lbl: "Films" },
      { num: "DJI",  lbl: "Air 2S drone" },
      { num: "Pr+Ae",lbl: "Native stack" },
    ],
    tiers: [
      { id: "video-single",   nm: "Single Asset",   price: 99,   suffix: "/ asset",  badge: "ENTRY",
        list: ["1 video edit", "Up to 60s runtime", "Color graded master", "Subtitled exports", "Multi-format delivery"] },
      { id: "video-campaign", nm: "Campaign Pack",  price: 799,  suffix: "/ month",  badge: "POPULAR", featured: true,
        unitNote: "8 videos / mo",
        list: ["8 videos / month", "Mixed cut-downs + shorts", "Sound + music pass", "Brand-pass review", "Priority TAT (≤72h)"] },
      { id: "video-premium",  nm: "Premium Pack",   price: 1299, suffix: "/ month",  badge: "BEST VALUE",
        unitNote: "15 videos / mo",
        list: ["15 videos / month", "Brand films + property tours", "Drone footage included", "Full color + audio pass", "Source projects included"] },
    ],
    secondaryLink: "https://affable-lottery-525961.framer.app/video-production",
    fullStudyLink: CANVA_PORTFOLIO,
  },
  { id: "digital-marketing", ico: "ico-marketing", n: "08",
    title: "Digital Marketing",
    accent: "Marketing",
    kicker: "Service 08 · Marketing",
    short:   "Increase the traffic for your website with digital optimised marketing.",
    lede:    "Meta and Google Ads campaigns, creatives, targeting, and reporting. 200% lead-gen lift on the most recent engagement.",
    countLabel: "100+ Campaigns",
    formats: ["Meta Ads", "Google Ads", "Performance Max", "Creative testing", "Audience research", "Monthly reporting"],
    deliverables: ["Campaign setup + tracking", "Creative variants (5–10)", "Weekly reporting", "Monthly strategy review"],
    stats: [
      { num: "200%", lbl: "Lead-gen lift" },
      { num: "100+", lbl: "Campaigns" },
      { num: "Meta", lbl: "+ Google" },
    ],
    tiers: [
      { id: "mkt-starter", nm: "Content Boost",    price: 399, suffix: "/ month",  badge: "STARTER",
        list: ["1 platform (Meta OR Google)", "5 creative variants / mo", "Audience targeting setup", "Weekly performance report", "Monthly strategy call"] },
      { id: "mkt-premium", nm: "Campaign System",  price: 799, suffix: "/ month",  badge: "POPULAR", featured: true,
        list: ["Meta + Google + LinkedIn", "10 creative variants / mo", "Funnel + landing-page audit", "Bi-weekly performance review", "Conversion + analytics setup", "Dedicated channel"] },
    ],
    secondaryLink: "https://affable-lottery-525961.framer.app/",
    fullStudyLink: CANVA_PORTFOLIO,
  },
  { id: "photography-videography", ico: "ico-video", n: "09",
    title: "Photography & Videography",
    accent: "Videography",
    kicker: "Service 09 · Capture",
    short:   "Boost visual engagement with drone photography and videography.",
    lede:    "On-site real estate captures, drone aerial shoots, and editorial-style shots that feed straight into the brand system.",
    countLabel: "100+ Projects",
    formats: ["Drone aerial", "Property walk-through", "Editorial portrait", "Event coverage", "Product photography", "B-roll library"],
    deliverables: ["RAW + edited deliverables", "Color graded master", "Multi-format exports", "Licensed for brand use"],
    stats: [
      { num: "100+", lbl: "Shoots" },
      { num: "DJI",  lbl: "Air 2S drone" },
      { num: "4K",   lbl: "Standard capture" },
    ],
    tiers: [
      { id: "shoot-half",   nm: "Half-Day Shoot",   price: 450, suffix: "one-time",  badge: "STARTER",
        list: ["4-hour on-site session", "Up to 30 edited deliverables", "Color graded master", "Multi-format exports", "Brand-use license"] },
      { id: "shoot-full",   nm: "Full-Day Shoot",   price: 800, suffix: "one-time",  badge: "POPULAR", featured: true,
        list: ["8-hour on-site session", "Drone aerial included", "B-roll library", "Up to 80 edited deliverables", "RAW source + edited masters", "Brand-use license"] },
    ],
    secondaryLink: "https://affable-lottery-525961.framer.app/",
    fullStudyLink: CANVA_PORTFOLIO,
    portfolio: ["photography/event-1-01.jpeg","photography/event-1-02.jpeg","photography/event-1-03.jpeg","photography/event-1-04.jpeg","photography/event-1-05.jpeg","photography/event-1-06.jpeg","photography/event-1-07.jpeg","photography/event-1-08.jpeg","photography/event-1-09.jpeg","photography/event-1-10.jpeg","photography/event-1-11.jpeg","photography/event-1-12.jpeg","photography/event-1-13.jpeg","photography/building-2-01.jpeg","photography/building-2-02.jpeg","photography/building-2-03.jpeg","photography/building-2-04.jpeg","photography/building-2-05.jpeg","photography/building-2-06.jpeg","photography/building-2-07.jpeg","photography/building-2-08.jpeg","photography/building-2-09.jpeg","photography/event-3-01.jpeg","photography/event-3-02.jpeg","photography/event-3-03.jpeg","photography/event-3-04.jpeg","photography/event-3-05.jpeg","photography/event-3-06.jpeg"],
  },
];

/* ---------- AI Offerings (entry hooks + add-ons) ---------- */
const PMDS_AI_PACK = {
  id: "ai-pack",
  title: "AI Automation Pack",
  short: "Your 6-step automation system — Claude Code, VS Code, Telegram bot, Sheets.",
  lede: "A pre-configured automation stack you install in an afternoon. Setup-only — for the technically curious.",
  tiers: [
    { id: "ai-pack-only",  nm: "AI Pack (DIY)",      price: 19.99, suffix: "one-time",  badge: "STARTER",
      list: ["Full 6-step setup guide", "Infrastructure pack (private repo)", "Claude Code + VS Code setup", "Telegram bot + Google Sheets", "Self-serve install"] },
    { id: "ai-pack-impl",  nm: "Pack + Implementation", price: 419, originalPrice: 19.99 + 400, suffix: "one-time", badge: "DONE-FOR-YOU", featured: true,
      list: ["Everything in AI Pack", "We install everything in 1–2 days", "30-min walkthrough session", "7 days post-setup support", "Initial test + verify run"] },
  ],
};

const PMDS_AI_IMPLEMENTATION = {
  id: "ai-implementation",
  title: "AI Pack Implementation",
  short: "We install your AI Automation Pack for you in 1–2 days.",
  lede: "Skip the technical setup. Our team handles installation, testing, and a 30-minute walkthrough. Add-on to the AI Pack.",
  tiers: [
    { id: "ai-impl",  nm: "Done-For-You Setup",  price: 400, suffix: "one-time",  badge: "POPULAR", featured: true,
      list: ["Complete Claude Code install", "VS Code + Claude extension", "Telegram bot creation + deploy", "Google Sheets API integration", "All scripts configured + tested", "30-min walkthrough session", "7 days email support"] },
  ],
};

window.UmIcon       = UmIcon;
window.PSLabel      = PSLabel;
window.PageNav      = PageNav;
window.PageFooter   = PageFooter;
window.PageCTA      = PageCTA;
window.BackLink     = BackLink;
window.PageHero     = PageHero;
window.CountUp      = CountUp;
window.PMDS_SERVICES = PMDS_SERVICES;
window.PMDS_AI_PACK = PMDS_AI_PACK;
window.PMDS_AI_IMPLEMENTATION = PMDS_AI_IMPLEMENTATION;
window.CANVA_PORTFOLIO = CANVA_PORTFOLIO;
