// 37 FORGE — Pages (Services, About, Contact)
const {
  useState: uS,
  useEffect: uE,
  useMemo: uM,
  useRef: uR
} = React;

// ============================================================
// SERVICES (LANDING) PAGE
// ============================================================
function ServicesPage({
  go
}) {
  return /*#__PURE__*/React.createElement("div", {
    className: "page active",
    "data-screen-label": "Services"
  }, /*#__PURE__*/React.createElement("section", {
    className: "hero scanlines"
  }, /*#__PURE__*/React.createElement("div", {
    className: "hero-inner"
  }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
    className: "eyebrow"
  }, "MANAGED IT \xB7 DALLAS\u2013FORT WORTH"), /*#__PURE__*/React.createElement("h1", null, "Ready for an ", /*#__PURE__*/React.createElement("span", {
    className: "gloss"
  }, "IT partner"), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("span", {
    className: "accent"
  }, "that actually picks up?")), /*#__PURE__*/React.createElement("p", {
    className: "sub"
  }, "24/7 monitoring, cybersecurity, and a help desk that actually picks up \u2014 staffed by local engineers across DFW."), /*#__PURE__*/React.createElement("div", {
    className: "ctas"
  }, /*#__PURE__*/React.createElement("button", {
    className: "btn-primary",
    onClick: () => go("contact")
  }, /*#__PURE__*/React.createElement("i", {
    className: "fa-solid fa-calendar-check"
  }), "Book Assessment"), /*#__PURE__*/React.createElement("button", {
    className: "btn-outline",
    onClick: () => go("resources/m365-audit")
  }, /*#__PURE__*/React.createElement("i", {
    className: "fa-solid fa-download"
  }), "Free M365 Audit")), /*#__PURE__*/React.createElement("div", {
    className: "strip"
  }, /*#__PURE__*/React.createElement("div", {
    className: "stat"
  }, /*#__PURE__*/React.createElement("div", {
    className: "n"
  }, "24/7"), /*#__PURE__*/React.createElement("div", {
    className: "l"
  }, "MONITORING")), /*#__PURE__*/React.createElement("div", {
    className: "stat"
  }, /*#__PURE__*/React.createElement("div", {
    className: "n"
  }, "45 min"), /*#__PURE__*/React.createElement("div", {
    className: "l"
  }, "ON-SITE RESPONSE")), /*#__PURE__*/React.createElement("div", {
    className: "stat"
  }, /*#__PURE__*/React.createElement("div", {
    className: "n"
  }, "99.99%"), /*#__PURE__*/React.createElement("div", {
    className: "l"
  }, "UPTIME SLA")))), /*#__PURE__*/React.createElement(LiveConsole, null))), /*#__PURE__*/React.createElement("section", {
    className: "canvas-deep",
    style: { padding: "96px 32px", borderTop: "1px solid #1f3358" }
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement(SectionHead, {
    eyebrow: "HOW WE OPERATE \xB7 03 PRINCIPLES",
    title: "The rules we",
    accent: "actually follow.",
    desc: "Three operating principles. They show up in everything from runbooks to renewals."
  }), /*#__PURE__*/React.createElement("div", {
    className: "principles"
  }, /*#__PURE__*/React.createElement("div", {
    className: "principle"
  }, /*#__PURE__*/React.createElement("div", {
    className: "pnum"
  }, "PRINCIPLE \xB7 01"), /*#__PURE__*/React.createElement("h3", null, "Quiet is the goal."), /*#__PURE__*/React.createElement("p", null, "If you're calling us, something already failed. We'd rather you not have to. Every alert that fires, every ticket that lands \u2014 we ask if a runbook should have prevented it.")), /*#__PURE__*/React.createElement("div", {
    className: "principle"
  }, /*#__PURE__*/React.createElement("div", {
    className: "pnum"
  }, "PRINCIPLE \xB7 02"), /*#__PURE__*/React.createElement("h3", null, "Document everything."), /*#__PURE__*/React.createElement("p", null, "If it's not in the runbook, it didn't happen. Tribal knowledge is operational risk. Every client gets a living, version-controlled binder of how their stack actually works.")), /*#__PURE__*/React.createElement("div", {
    className: "principle"
  }, /*#__PURE__*/React.createElement("div", {
    className: "pnum"
  }, "PRINCIPLE \xB7 03"), /*#__PURE__*/React.createElement("h3", null, "Local, on payroll."), /*#__PURE__*/React.createElement("p", null, "Every engineer is W-2 (full-time employee) in DFW. No offshore tier-1, no contractor handoffs, no overnight outsourcing. The person picking up the phone is the person who knows your network."))))), /*#__PURE__*/React.createElement("section", {
    id: "svc-detail",
    className: "canvas",
    style: {
      padding: "96px 32px",
      borderTop: "1px solid #1f3358"
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement(SectionHead, {
    eyebrow: "WHAT'S INCLUDED \xB7 5 DISCIPLINES",
    title: "Five disciplines.",
    accent: "One monthly bill.",
    desc: "Every 37 Forge engagement covers the same operational pillars. No \xE0 la carte tiers, no upsells \u2014 month-to-month with a fixed price."
  }), /*#__PURE__*/React.createElement("div", {
    className: "svc-list"
  }, /*#__PURE__*/React.createElement(ServiceRow, {
    num: "01",
    tag: "PROACTIVE",
    icon: "fa-eye",
    title: "24/7 Network Monitoring",
    body: "Endpoints, servers, switches, firewalls, and SaaS (Software-as-a-Service) apps \u2014 watched in real time by automated agents and a human on call. Most issues are caught and fixed before your team logs in.",
    items: ["RMM (Remote Monitoring & Management) agent on every device", "Synthetic uptime checks every 60 sec", "Automated remediation for known issues", "Quarterly performance review", "Real-time dashboards & alerts", "Documented runbooks per system"],
    metric: "MEAN TIME TO DETECT",
    metricVal: "< 90 SEC",
    statusLabel: "ALWAYS-ON"
  }), /*#__PURE__*/React.createElement(ServiceRow, {
    num: "02",
    tag: "SECURITY",
    icon: "fa-shield-halved",
    title: "Cybersecurity",
    body: "Layered defense built for the SMB (Small & Mid-sized Business) threat model \u2014 phishing, ransomware, account takeover, insider risk. We deploy, configure, and operate the stack, then write the documentation auditors ask for.",
    items: ["Managed EDR (Endpoint Detection & Response) on every endpoint", "MFA (Multi-Factor Authentication) + SSO (Single Sign-On) rollout & enforcement", "Automated patching, weekly cadence", "Phishing simulation + training", "HIPAA (Health Insurance Portability and Accountability Act) / PCI (Payment Card Industry) / CMMC (Cybersecurity Maturity Model Certification) documentation", "Quarterly tabletop exercises"],
    metric: "THREATS BLOCKED \xB7 7D",
    metricVal: "14,302",
    statusLabel: "DEFENDING"
  }), /*#__PURE__*/React.createElement(ServiceRow, {
    num: "03",
    tag: "RECOVERY",
    icon: "fa-database",
    title: "Data Backups",
    body: "Immutable, air-gapped, and tested. We run a real restore every month and send you the report. RPO (Recovery Point Objective) measured in minutes, RTO (Recovery Time Objective) measured in hours \u2014 both written into your runbook.",
    items: ["3-2-1-1 backup architecture", "Immutable, air-gapped copies", "RPO (Recovery Point Objective) ≤ 15 min on critical workloads", "Monthly test restore + report", "Off-site replication to secondary region", "Written, rehearsed DR (Disaster Recovery) runbook"],
    metric: "LAST VERIFIED RESTORE",
    metricVal: "04:12 CT (Central Time)",
    statusLabel: "VERIFIED"
  }), /*#__PURE__*/React.createElement(ServiceRow, {
    num: "04",
    tag: "CLOUD",
    icon: "fa-cloud",
    title: "Cloud Services",
    body: "Microsoft 365 and Azure first; AWS (Amazon Web Services) where it makes sense. We migrate on-premises systems without weekend outages, then optimize cost monthly so your bill doesn't drift into surprise territory.",
    items: ["Zero-downtime migration playbook", "Microsoft 365 + Entra ID (Identity) admin", "Azure / AWS (Amazon Web Services) provisioning & optimization", "Identity-first architecture", "Tenant hardening to CIS (Center for Internet Security) benchmark", "Monthly cost optimization review"],
    metric: "AVG MIGRATION DOWNTIME",
    metricVal: "0 MIN",
    statusLabel: "ZERO-DOWNTIME"
  }), /*#__PURE__*/React.createElement(ServiceRow, {
    num: "05",
    tag: "SUPPORT",
    icon: "fa-headset",
    title: "Help Desk Support",
    body: "Real engineers, in Dallas, on real phones. No offshore tier-1, no chatbot triage. Median pickup is 12 minutes; first-call resolution holds at 87% across last year's 14,000+ tickets.",
    items: ["Phone, email, Teams, web portal", "Median pickup time · 12 minutes", "First-call resolution · 87%", "Dedicated account engineer", "On-site dispatch across the metroplex", "After-hours emergency line"],
    metric: "HELP DESK \xB7 LIVE NOW",
    metricVal: "2 IN QUEUE",
    statusLabel: "STAFFED"
  })))), /*#__PURE__*/React.createElement("section", {
    className: "canvas-deep",
    style: { borderTop: "1px solid #1f3358" }
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement(SectionHead, {
    eyebrow: "BY THE NUMBERS",
    title: "Operational discipline,",
    accent: "in numbers.",
    desc: "Real metrics from the last twelve months. We publish these to clients quarterly and to ourselves weekly."
  }), /*#__PURE__*/React.createElement("div", {
    className: "stats-grid",
    style: { gridTemplateColumns: "repeat(3, 1fr)" }
  }, /*#__PURE__*/React.createElement(StatCell, {
    eyebrow: "MEDIAN PICKUP",
    value: 12,
    unit: " min",
    label: "Help Desk Response",
    desc: "Phones answered by an engineer, not a triage script.",
    barWidth: "85%",
    animateNum: true,
    suffix: ""
  }), /*#__PURE__*/React.createElement(StatCell, {
    eyebrow: "FIRST-CALL FIX",
    value: 87,
    unit: "%",
    label: "Resolution Rate",
    desc: "Across 14,000+ tickets in the last rolling 12 months.",
    barWidth: "87%",
    animateNum: true
  }), /*#__PURE__*/React.createElement(StatCell, {
    eyebrow: "UPTIME \xB7 30D",
    value: "99.997",
    unit: "%",
    label: "Composite SLA (Service Level Agreement)",
    desc: "Weighted across every monitored client this quarter.",
    barWidth: "99%",
    animateNum: false
  })))), /*#__PURE__*/React.createElement("section", {
    className: "canvas",
    style: { borderTop: "1px solid #1f3358", padding: "96px 32px" }
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement(SectionHead, {
    eyebrow: "INDUSTRIES SERVED",
    title: "Built for regulated,",
    accent: "busy & growing.",
    desc: "Most of our clients are 10\u2013100 employees in fields where downtime, compliance, or both are existential."
  }), /*#__PURE__*/React.createElement("div", {
    className: "ind-grid"
  }, /*#__PURE__*/React.createElement(Industry, {
    icon: "fa-scale-balanced",
    label: "Legal",
    concern: "MFA, EDR, encrypted M365 mail.",
    fix: "MFA + EDR everywhere. Encrypted M365. DLP on outbound mail.",
    metric: "0 BREACHES \xB7 24 MO"
  }), /*#__PURE__*/React.createElement(Industry, {
    icon: "fa-stethoscope",
    label: "Healthcare",
    concern: "HIPAA-ready stack. EHR-tier uptime.",
    fix: "4-hour RTO restore tier. Quarterly drills. HIPAA-ready stack.",
    metric: "100% HIPAA AUDITS PASSED"
  }), /*#__PURE__*/React.createElement(Industry, {
    icon: "fa-building-columns",
    label: "Finance",
    concern: "DMARC + phishing-resistant MFA.",
    fix: "DMARC + phishing-resistant MFA. 7-yr immutable logs.",
    metric: "$0 WIRE FRAUD LOSSES"
  }), /*#__PURE__*/React.createElement(Industry, {
    icon: "fa-truck-fast",
    label: "Logistics",
    concern: "Hardened mesh + LTE failover.",
    fix: "Mesh re-architect + LTE failover. NOC uptime dashboards.",
    metric: "SCANNER ERRORS \u221294%"
  }), /*#__PURE__*/React.createElement(Industry, {
    icon: "fa-helmet-safety",
    label: "Construction",
    concern: "LTE jobsite kits + cloud hub.",
    fix: "LTE jobsite kits + cloud project hub. One source of truth.",
    metric: "15 JOBSITES ONLINE"
  }), /*#__PURE__*/React.createElement(Industry, {
    icon: "fa-cart-shopping",
    label: "Retail",
    concern: "PCI-segmented networks. Redundant POS.",
    fix: "Redundant circuits + NOC failover. PCI-segmented networks.",
    metric: "< 3 MIN POS RECOVERY"
  })))), /*#__PURE__*/React.createElement("section", {
    className: "canvas-deep",
    style: { borderTop: "1px solid #1f3358", padding: "96px 32px" }
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement("div", { className: "leadgen-cta" },
    /*#__PURE__*/React.createElement("div", null,
      /*#__PURE__*/React.createElement("div", { className: "lc-eye" }, "FREE RESOURCE · NO SALES CALL"),
      /*#__PURE__*/React.createElement("h3", null, "Most SMBs overpay on M365 by ", /*#__PURE__*/React.createElement("span", { className: "accent" }, "20–40%.")),
      /*#__PURE__*/React.createElement("p", null, "Grab the worksheet — spreadsheet plus a 10-page guide — to inventory your licenses, flag duplicates, and walk into your next renewal with leverage. Takes 15 minutes.")
    ),
    /*#__PURE__*/React.createElement("button", {
      onClick: () => go("resources/m365-audit"),
      className: "btn-primary",
      style: { fontSize: "14px", padding: "18px 28px", height: "auto", whiteSpace: "nowrap" }
    }, /*#__PURE__*/React.createElement("i", { className: "fa-solid fa-download" }), "Get the worksheet")
  ))));
}
function ServiceRow({
  num,
  tag,
  icon,
  title,
  body,
  items,
  metric,
  metricVal,
  statusLabel
}) {
  return /*#__PURE__*/React.createElement("div", {
    className: "svc-row",
    id: `svc-${num}`
  }, /*#__PURE__*/React.createElement("div", {
    className: "num"
  }, num), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", {
    className: "tag"
  }, "SVC \xB7 ", tag), /*#__PURE__*/React.createElement("h3", null, title)), /*#__PURE__*/React.createElement("ul", null, items.slice(0,3).map((it, i) => /*#__PURE__*/React.createElement("li", {
    key: i
  }, it))), /*#__PURE__*/React.createElement("div", {
    className: "meta"
  }, /*#__PURE__*/React.createElement("div", {
    className: "pill"
  }, "\u25CF ", statusLabel), /*#__PURE__*/React.createElement("div", {
    style: {
      marginTop: "6px"
    }
  }, metric), /*#__PURE__*/React.createElement("div", {
    style: {
      color: "var(--accent-bright)",
      fontSize: "14px",
      marginTop: "4px",
      fontWeight: 700
    }
  }, metricVal)));
}
function Industry({
  icon,
  label,
  concern,
  fix,
  metric
}) {
  return /*#__PURE__*/React.createElement("div", {
    className: "industry-card"
  }, /*#__PURE__*/React.createElement("div", {
    className: "industry-icon"
  }, /*#__PURE__*/React.createElement("i", {
    className: `fa-solid ${icon}`
  })), /*#__PURE__*/React.createElement("div", {
    className: "industry-label"
  }, label), /*#__PURE__*/React.createElement("div", {
    className: "industry-tag"
  }, concern));
}

// ============================================================
// ABOUT PAGE
// ============================================================
function AboutPage({
  go
}) {
  return /*#__PURE__*/React.createElement("div", {
    className: "page active",
    "data-screen-label": "About"
  }, /*#__PURE__*/React.createElement("div", {
    className: "page-head"
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement("div", {
    className: "crumb"
  }, /*#__PURE__*/React.createElement("a", {
    onClick: () => go("services")
  }, "HOME"), /*#__PURE__*/React.createElement("span", {
    className: "sep"
  }, "/"), /*#__PURE__*/React.createElement("span", {
    className: "cur"
  }, "ABOUT")), /*#__PURE__*/React.createElement("h1", null, "Local engineers. ", /*#__PURE__*/React.createElement("span", {
    className: "accent"
  }, "Operator-grade discipline.")), /*#__PURE__*/React.createElement("p", {
    className: "lede"
  }, "37 Forge was built around a simple frustration: DFW small businesses kept getting treated like ticket numbers. We run the shop the way we think IT should be run \u2014 quietly, predictably, and on time."))), /*#__PURE__*/React.createElement("section", {
    style: {
      padding: "96px 32px"
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement("div", {
    className: "story"
  }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
    className: "eyebrow"
  }, "OUR STORY \xB7 EST. (ESTABLISHED) 2019"), /*#__PURE__*/React.createElement("h2", null, "Founded in DFW.", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("span", {
    className: "accent"
  }, "Operating across the metroplex."))), /*#__PURE__*/React.createElement("div", {
    className: "body"
  }, /*#__PURE__*/React.createElement("p", null, "We kept hearing the same story from local SMBs (Small & Mid-sized Businesses) \u2014 a 30-person business, an overworked \"IT guy\" on a break/fix retainer, and a network that limped along until it didn't. The fix wasn't more billable hours. It was a different operating model."), /*#__PURE__*/React.createElement("p", null, "So we built one. Every 37 Forge client gets a ", /*#__PURE__*/React.createElement("strong", null, "dedicated engineer"), ", a documented baseline, and the same five-pillar service stack. ", /*#__PURE__*/React.createElement("strong", null, "No tiers, no upsells."), " We're a team of local engineers, all on payroll, all in DFW, and we measure ourselves on response time and first-call resolution \u2014 not hours billed."), /*#__PURE__*/React.createElement("p", null, "If your IT is supposed to disappear into the background, we'd like to help make that happen."))))), /*#__PURE__*/React.createElement("section", {
    className: "canvas-deep",
    style: {
      borderTop: "1px solid #1f3358",
      borderBottom: "1px solid #1f3358"
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement(SectionHead, {
    eyebrow: "BY THE NUMBERS \xB7 ROLLING 12 MONTHS",
    title: "What we've",
    accent: "actually done.",
    desc: "Real numbers, audited quarterly. We publish them to ourselves on a wall in the NOC (Network Operations Center)."
  }), /*#__PURE__*/React.createElement("div", {
    className: "stats-grid"
  }, /*#__PURE__*/React.createElement(StatCell, {
    eyebrow: "ACTIVE CLIENTS",
    value: 12,
    unit: "",
    label: "DFW Businesses",
    desc: "Across legal, healthcare, finance, logistics, construction, and retail.",
    barWidth: "80%",
    animateNum: true
  }), /*#__PURE__*/React.createElement(StatCell, {
    eyebrow: "TICKETS RESOLVED",
    value: 14238,
    unit: "",
    label: "Last 12 Months",
    desc: "From password resets to multi-region failovers, all logged and reviewed.",
    barWidth: "92%",
    animateNum: true
  }), /*#__PURE__*/React.createElement(StatCell, {
    eyebrow: "UPTIME \xB7 COMPOSITE",
    value: "99.997",
    unit: "%",
    label: "Across All Clients",
    desc: "Weighted by monitored endpoint count, measured monthly.",
    barWidth: "99%",
    animateNum: false
  }), /*#__PURE__*/React.createElement(StatCell, {
    eyebrow: "YEARS RUNNING",
    value: 7,
    unit: "",
    label: "In Dallas\u2013Fort Worth",
    desc: "Founded 2019. Still locally owned, still on payroll.",
    barWidth: "65%",
    animateNum: true
  })))), /*#__PURE__*/React.createElement("section", {
    id: "coverage-map",
    className: "map-section"
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement(SectionHead, {
    eyebrow: "COVERAGE AREA \xB7 DFW METROPLEX",
    title: "On-site response",
    accent: "across 16 cities.",
    desc: "Our 45-minute on-site SLA (Service Level Agreement) covers the entire metroplex out of our Dallas NOC (Network Operations Center). Off-hours dispatch is staffed 24/7."
  }), /*#__PURE__*/React.createElement(DFWMap, {
    readout: "LIVE \xB7 16 ZONES OPERATIONAL"
  }))), /*#__PURE__*/React.createElement(CTAStrip, {
    go: go,
    title: "Want to see how we'd",
    accent: "run your stack?",
    secondary: null
  }));
}
function TeamCard({
  id,
  tag,
  name,
  role,
  specs
}) {
  return /*#__PURE__*/React.createElement("div", {
    className: "team-card"
  }, /*#__PURE__*/React.createElement("div", {
    className: "team-photo"
  }, /*#__PURE__*/React.createElement("div", {
    className: "placeholder-grid"
  }), /*#__PURE__*/React.createElement("div", {
    className: "ph-icon"
  }, /*#__PURE__*/React.createElement("i", {
    className: "fa-solid fa-user"
  })), /*#__PURE__*/React.createElement("div", {
    className: "ph-tag"
  }, tag), /*#__PURE__*/React.createElement("div", {
    className: "ph-id"
  }, id)), /*#__PURE__*/React.createElement("div", {
    className: "team-info"
  }, /*#__PURE__*/React.createElement("div", {
    className: "name"
  }, name), /*#__PURE__*/React.createElement("div", {
    className: "role"
  }, role), /*#__PURE__*/React.createElement("div", {
    className: "specs"
  }, specs)));
}

// ============================================================
// CONTACT PAGE
// ============================================================
function ContactPage({
  go
}) {
  return /*#__PURE__*/React.createElement("div", {
    className: "page active",
    "data-screen-label": "Contact"
  }, /*#__PURE__*/React.createElement("div", {
    className: "page-head"
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement("div", {
    className: "crumb"
  }, /*#__PURE__*/React.createElement("a", {
    onClick: () => go("services")
  }, "HOME"), /*#__PURE__*/React.createElement("span", {
    className: "sep"
  }, "/"), /*#__PURE__*/React.createElement("span", {
    className: "cur"
  }, "CONTACT")), /*#__PURE__*/React.createElement("h1", null, "Let's get on a ", /*#__PURE__*/React.createElement("span", {
    className: "accent"
  }, "call.")), /*#__PURE__*/React.createElement("p", {
    className: "lede"
  }, "Tell us what's broken, what's slow, or what's keeping you up at night. A real engineer will follow up within one business day \u2014 no SDR (Sales Development Rep) script, no 12-step nurture sequence."))), /*#__PURE__*/React.createElement("section", {
    style: {
      padding: "80px 32px"
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement("div", {
    className: "contact-grid"
  }, /*#__PURE__*/React.createElement(ContactInfo, null), /*#__PURE__*/React.createElement(ContactForm, null)))), /*#__PURE__*/React.createElement("section", {
    className: "canvas-deep",
    style: {
      borderTop: "1px solid #1f3358"
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement(SectionHead, {
    eyebrow: "OR \xB7 BOOK DIRECTLY",
    title: "Pick a time",
    accent: "that works for you.",
    desc: "30-minute discovery call. No prep needed. We'll send a calendar invite and a one-pager so you know what to expect."
  }), /*#__PURE__*/React.createElement(Scheduler, null))), /*#__PURE__*/React.createElement("section", {
    id: "coverage-map",
    className: "map-section",
    style: {
      borderTop: "1px solid #1f3358"
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "container"
  }, /*#__PURE__*/React.createElement(SectionHead, {
    eyebrow: "HQ (HEADQUARTERS) \xB7 DALLAS \xB7 ON-SITE COVERAGE",
    title: "Across the",
    accent: "DFW metroplex.",
    desc: "45-minute on-site response from our Dallas NOC (Network Operations Center). Emergency dispatch staffed 24/7."
  }), /*#__PURE__*/React.createElement(DFWMap, {
    readout: "LIVE \xB7 16 ZONES OPERATIONAL"
  }))), /*#__PURE__*/React.createElement(Footer, {
    go: go
  }));
}
function ContactInfo() {
  return /*#__PURE__*/React.createElement("div", {
    className: "contact-info-panel"
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      justifyContent: "space-between",
      alignItems: "center",
      marginBottom: "32px",
      paddingBottom: "16px",
      borderBottom: "1px solid #1f3358"
    }
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      font: '500 11px/1 "JetBrains Mono", monospace',
      color: "var(--accent-bright)",
      textTransform: "uppercase",
      letterSpacing: "0.18em",
      display: "flex",
      alignItems: "center",
      gap: "10px"
    }
  }, /*#__PURE__*/React.createElement("span", {
    style: {
      width: "6px",
      height: "6px",
      background: "#4ade80",
      borderRadius: "50%",
      boxShadow: "0 0 8px #4ade80",
      animation: "pulse 2s infinite"
    }
  }), "DIRECT \xB7 OPS LINE"), /*#__PURE__*/React.createElement("div", {
    style: {
      font: '500 10px/1 "JetBrains Mono", monospace',
      color: "#6c7d99",
      letterSpacing: "0.14em"
    }
  }, "OPEN \xB7 24/7")), /*#__PURE__*/React.createElement("div", {
    className: "label"
  }, "CALL \xB7 24/7 EMERGENCY LINE"), /*#__PURE__*/React.createElement("div", {
    className: "v mono"
  }, /*#__PURE__*/React.createElement("a", {
    href: "tel:2144320333"
  }, "214-432-0333")), /*#__PURE__*/React.createElement("div", {
    className: "label"
  }, "EMAIL"), /*#__PURE__*/React.createElement("div", {
    className: "v small"
  }, "ops@37forge.com"), /*#__PURE__*/React.createElement("div", {
    className: "label"
  }, "HEADQUARTERS"), /*#__PURE__*/React.createElement("div", {
    className: "v small"
  }, "Dallas\u2013Fort Worth, TX (Texas)", /*#__PURE__*/React.createElement("br", null), "Serving the entire metroplex"), /*#__PURE__*/React.createElement("div", {
    className: "label"
  }, "HOURS \xB7 SUPPORT"), /*#__PURE__*/React.createElement("div", {
    className: "v mono small"
  }, "24 / 7 \xB7 365"), /*#__PURE__*/React.createElement("div", {
    className: "label"
  }, "RESPONSE SLA (SERVICE LEVEL AGREEMENT)"), /*#__PURE__*/React.createElement("div", {
    className: "v mono small"
  }, "\u2264 12 MIN PHONE"), /*#__PURE__*/React.createElement("div", {
    style: {
      marginTop: "24px",
      paddingTop: "24px",
      borderTop: "1px solid #1f3358"
    }
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      font: '500 10px/1.5 "JetBrains Mono", monospace',
      color: "#6c7d99",
      textTransform: "uppercase",
      letterSpacing: "0.14em"
    }
  }, "For active client emergencies, call the ops line directly. New inquiries \u2014 use the form or scheduler below.")));
}
function ContactForm() {
  const [form, setForm] = uS({
    name: "",
    company: "",
    email: "",
    phone: "",
    service: "",
    challenge: "",
    tried: "",
    timing: ""
  });
  const [errors, setErrors] = uS({});
  const [submitted, setSubmitted] = uS(false);
  const [ticketId, setTicketId] = uS(null);
  const update = k => e => {
    setForm(f => ({
      ...f,
      [k]: e.target.value
    }));
    if (errors[k]) setErrors(er => ({
      ...er,
      [k]: false
    }));
  };
  const [sending, setSending] = uS(false);
  const [sendError, setSendError] = uS(null);
  const submit = async e => {
    e.preventDefault();
    const err = {};
    if (!form.name.trim()) err.name = true;
    if (!form.company.trim()) err.company = true;
    if (!form.email.trim() || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(form.email)) err.email = true;
    if (!form.challenge.trim()) err.challenge = true;
    setErrors(err);
    if (Object.keys(err).length !== 0) return;
    const id = String(Math.floor(Math.random() * 9000) + 1000);
    setSending(true);
    setSendError(null);

    // Web3Forms: set your access key in <meta name="web3forms-key"> in index.html.
    // Without a key we fall through to a "soft" success so local previews still work.
    const key = document.querySelector('meta[name="web3forms-key"]')?.content;
    try {
      if (key) {
        const fd = new FormData();
        fd.append("access_key", key);
        fd.append("subject", `37 Forge inquiry · ${form.company} · #${id}`);
        fd.append("from_name", `${form.name} (${form.company})`);
        fd.append("ticket", id);
        Object.entries(form).forEach(([k, v]) => fd.append(k, v));
        const r = await fetch("https://api.web3forms.com/submit", {
          method: "POST",
          body: fd
        });
        const data = await r.json();
        if (!data.success) throw new Error(data.message || "Send failed");
      }
      setTicketId(id);
      setSubmitted(true);
      setTimeout(() => {
        document.querySelector(".form-confirm")?.scrollIntoView({
          behavior: "smooth",
          block: "center"
        });
      }, 100);
    } catch (ex) {
      setSendError(ex.message || "Could not send. Call 214-432-0333.");
    } finally {
      setSending(false);
    }
  };
  return /*#__PURE__*/React.createElement("form", {
    className: "form-card",
    onSubmit: submit,
    noValidate: true
  }, /*#__PURE__*/React.createElement("div", {
    className: "head"
  }, /*#__PURE__*/React.createElement("div", {
    className: "t"
  }, "REQUEST \xB7 NEW INQUIRY"), /*#__PURE__*/React.createElement("div", {
    className: "id"
  }, "FORM \xB7 0042")), /*#__PURE__*/React.createElement("div", {
    className: `form-confirm ${submitted ? "show" : ""}`
  }, /*#__PURE__*/React.createElement("div", {
    className: "h"
  }, /*#__PURE__*/React.createElement("i", {
    className: "fa-solid fa-check"
  }), "REQUEST RECEIVED \xB7 TICKET ", /*#__PURE__*/React.createElement("strong", {
    style: {
      color: "#eef2f8"
    }
  }, "#", ticketId)), /*#__PURE__*/React.createElement("div", {
    className: "b"
  }, "A real engineer will follow up within ", /*#__PURE__*/React.createElement("strong", null, "one business day"), ". Check your inbox for the assessment kickoff doc.")), /*#__PURE__*/React.createElement("div", {
    className: "form-row two"
  }, /*#__PURE__*/React.createElement("div", {
    className: errors.name ? "error" : ""
  }, /*#__PURE__*/React.createElement("label", null, "YOUR NAME ", /*#__PURE__*/React.createElement("span", {
    className: "req"
  }, "*")), /*#__PURE__*/React.createElement("input", {
    type: "text",
    placeholder: "Jane Lee",
    value: form.name,
    onChange: update("name")
  }), /*#__PURE__*/React.createElement("div", {
    className: "err"
  }, "REQUIRED")), /*#__PURE__*/React.createElement("div", {
    className: errors.company ? "error" : ""
  }, /*#__PURE__*/React.createElement("label", null, "COMPANY ", /*#__PURE__*/React.createElement("span", {
    className: "req"
  }, "*")), /*#__PURE__*/React.createElement("input", {
    type: "text",
    placeholder: "Acme Logistics",
    value: form.company,
    onChange: update("company")
  }), /*#__PURE__*/React.createElement("div", {
    className: "err"
  }, "REQUIRED"))), /*#__PURE__*/React.createElement("div", {
    className: "form-row two"
  }, /*#__PURE__*/React.createElement("div", {
    className: errors.email ? "error" : ""
  }, /*#__PURE__*/React.createElement("label", null, "WORK EMAIL ", /*#__PURE__*/React.createElement("span", {
    className: "req"
  }, "*")), /*#__PURE__*/React.createElement("input", {
    type: "email",
    placeholder: "jane@acme.com",
    value: form.email,
    onChange: update("email")
  }), /*#__PURE__*/React.createElement("div", {
    className: "err"
  }, "VALID EMAIL REQUIRED")), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, "PHONE ", /*#__PURE__*/React.createElement("span", {
    style: {
      color: "#6c7d99"
    }
  }, "OPTIONAL")), /*#__PURE__*/React.createElement("input", {
    type: "tel",
    placeholder: "(214) 555-0100",
    value: form.phone,
    onChange: update("phone")
  }))), /*#__PURE__*/React.createElement("div", {
    className: "form-row"
  }, /*#__PURE__*/React.createElement("label", null, "WHICH SERVICE? ", /*#__PURE__*/React.createElement("span", {
    style: {
      color: "#6c7d99"
    }
  }, "OPTIONAL")), /*#__PURE__*/React.createElement("select", {
    value: form.service,
    onChange: update("service")
  }, /*#__PURE__*/React.createElement("option", {
    value: ""
  }, "\u2014 Select an area \u2014"), /*#__PURE__*/React.createElement("option", null, "Network Monitoring"), /*#__PURE__*/React.createElement("option", null, "Cybersecurity"), /*#__PURE__*/React.createElement("option", null, "Data Backups"), /*#__PURE__*/React.createElement("option", null, "Cloud Services"), /*#__PURE__*/React.createElement("option", null, "Help Desk Support"), /*#__PURE__*/React.createElement("option", null, "Full Managed IT (all 5)"), /*#__PURE__*/React.createElement("option", null, "Not sure yet \u2014 let's talk"))), /*#__PURE__*/React.createElement("div", {
    className: "discovery"
  }, /*#__PURE__*/React.createElement("div", {
    className: "discovery-head"
  }, /*#__PURE__*/React.createElement("div", {
    className: "dh-eye"
  }, "DISCOVERY \xB7 A FEW QUESTIONS WORTH A MINUTE"), /*#__PURE__*/React.createElement("p", {
    className: "dh-sub"
  }, "The sharper your answers, the more useful our first call. Skip what you can't answer yet \u2014 we'll fill the rest in together.")), /*#__PURE__*/React.createElement("div", {
    className: `qn ${errors.challenge ? "error" : ""}`
  }, /*#__PURE__*/React.createElement("span", {
    className: "qn-num"
  }, "01"), /*#__PURE__*/React.createElement("label", {
    className: "qn-q"
  }, "What is the biggest challenge you are trying to solve? ", /*#__PURE__*/React.createElement("span", {
    className: "req"
  }, "*")), /*#__PURE__*/React.createElement("p", {
    className: "qn-hint"
  }, "The one thing that, if it were fixed, would make the rest feel manageable."), /*#__PURE__*/React.createElement("textarea", {
    placeholder: "e.g. Downtime is costing us hours every week, and nobody owns it...",
    value: form.challenge,
    onChange: update("challenge")
  }), /*#__PURE__*/React.createElement("div", {
    className: "err"
  }, "TELL US WHAT YOU'RE TRYING TO SOLVE")), /*#__PURE__*/React.createElement("div", {
    className: "qn"
  }, /*#__PURE__*/React.createElement("span", {
    className: "qn-num"
  }, "02"), /*#__PURE__*/React.createElement("label", {
    className: "qn-q"
  }, "What have you already tried? ", /*#__PURE__*/React.createElement("span", {
    className: "opt"
  }, "Optional")), /*#__PURE__*/React.createElement("p", {
    className: "qn-hint"
  }, "Previous providers, internal fixes, tools you bought \u2014 what moved the needle and what didn't."), /*#__PURE__*/React.createElement("textarea", {
    placeholder: "e.g. We had an MSP for two years, added a firewall, tried to handle it in-house...",
    value: form.tried,
    onChange: update("tried")
  })), /*#__PURE__*/React.createElement("div", {
    className: "qn"
  }, /*#__PURE__*/React.createElement("span", {
    className: "qn-num"
  }, "03"), /*#__PURE__*/React.createElement("label", {
    className: "qn-q"
  }, "Why is now the right time to address this? ", /*#__PURE__*/React.createElement("span", {
    className: "opt"
  }, "Optional")), /*#__PURE__*/React.createElement("p", {
    className: "qn-hint"
  }, "A deadline, a growth spurt, an audit, a close call \u2014 what changed that makes this urgent."), /*#__PURE__*/React.createElement("textarea", {
    placeholder: "e.g. We're doubling headcount in Q3, and a recent scare made the risk real...",
    value: form.timing,
    onChange: update("timing")
  }))), sendError && /*#__PURE__*/React.createElement("div", {
    style: {
      marginBottom: "14px",
      padding: "12px 14px",
      border: "1px solid #ef4444",
      background: "rgba(239,68,68,0.08)",
      color: "#fca5a5",
      font: '500 11px/1.5 "JetBrains Mono", monospace',
      textTransform: "uppercase",
      letterSpacing: "0.14em"
    }
  }, "SEND FAILED \xB7 ", sendError), /*#__PURE__*/React.createElement("button", {
    type: "submit",
    disabled: sending,
    className: "btn-primary",
    style: {
      width: "100%",
      height: "52px",
      opacity: sending ? 0.6 : 1,
      cursor: sending ? "wait" : "pointer"
    }
  }, /*#__PURE__*/React.createElement("i", {
    className: sending ? "fa-solid fa-spinner fa-spin" : "fa-solid fa-paper-plane"
  }), sending ? "Sending..." : "Submit Request"), /*#__PURE__*/React.createElement("div", {
    style: {
      marginTop: "16px",
      font: '500 10px/1.5 "JetBrains Mono", monospace',
      color: "#6c7d99",
      textTransform: "uppercase",
      letterSpacing: "0.14em",
      textAlign: "center"
    }
  }, "ENCRYPTED \xB7 NO MARKETING \xB7 NO SHARING"));
}

// ---- Scheduler (calendar + time picker) ----
function Scheduler() {
  const today = new Date();
  const [viewMonth, setViewMonth] = uS(new Date(today.getFullYear(), today.getMonth(), 1));
  const [selectedDate, setSelectedDate] = uS(null);
  const [selectedTime, setSelectedTime] = uS(null);
  const [confirmed, setConfirmed] = uS(false);
  const months = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
  const monthName = `${months[viewMonth.getMonth()]} ${viewMonth.getFullYear()}`;

  // Build day grid
  const days = uM(() => {
    const first = new Date(viewMonth.getFullYear(), viewMonth.getMonth(), 1);
    const lastDate = new Date(viewMonth.getFullYear(), viewMonth.getMonth() + 1, 0).getDate();
    const startDow = first.getDay();
    const cells = [];
    for (let i = 0; i < startDow; i++) cells.push({
      empty: true
    });
    for (let d = 1; d <= lastDate; d++) {
      const date = new Date(viewMonth.getFullYear(), viewMonth.getMonth(), d);
      const isPast = date < new Date(today.getFullYear(), today.getMonth(), today.getDate());
      const isWeekend = date.getDay() === 0 || date.getDay() === 6;
      const isToday = date.toDateString() === today.toDateString();
      cells.push({
        d,
        date,
        disabled: isPast || isWeekend,
        today: isToday
      });
    }
    return cells;
  }, [viewMonth]);

  // Available time slots — deterministic per date
  const slots = uM(() => {
    if (!selectedDate) return [];
    const seed = selectedDate.getDate() + selectedDate.getMonth() * 31;
    const baseTimes = ["08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00"];
    return baseTimes.map((t, i) => ({
      time: t,
      taken: (seed + i * 7) % 11 < 4
    }));
  }, [selectedDate]);
  const canGoBack = viewMonth > new Date(today.getFullYear(), today.getMonth(), 1);
  const formatLong = d => {
    if (!d) return "";
    const days = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
    return `${days[d.getDay()]} · ${months[d.getMonth()]} ${d.getDate()} · ${d.getFullYear()}`;
  };
  const confirm = () => {
    setConfirmed(true);
    setTimeout(() => {
      document.querySelector(".booked-overlay")?.scrollIntoView({
        behavior: "smooth",
        block: "center"
      });
    }, 100);
  };
  return /*#__PURE__*/React.createElement("div", {
    className: "scheduler-card"
  }, /*#__PURE__*/React.createElement("div", {
    className: "scheduler-head"
  }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
    className: "t"
  }, "Book a 30-min Discovery Call"), /*#__PURE__*/React.createElement("div", {
    className: "sub"
  }, "SLOT \xB7 30 MIN \xB7 CST (CENTRAL STANDARD TIME) \xB7 NO COMMITMENT")), /*#__PURE__*/React.createElement("div", {
    style: {
      font: '500 10px/1.4 "JetBrains Mono", monospace',
      color: "#6c7d99",
      textTransform: "uppercase",
      letterSpacing: "0.16em",
      textAlign: "right"
    }
  }, "STEP 1 \xB7 PICK DATE", /*#__PURE__*/React.createElement("br", null), "STEP 2 \xB7 PICK TIME")), /*#__PURE__*/React.createElement("div", {
    className: "scheduler-body"
  }, /*#__PURE__*/React.createElement("div", {
    className: "scheduler-cal"
  }, /*#__PURE__*/React.createElement("div", {
    className: "cal-head"
  }, /*#__PURE__*/React.createElement("div", {
    className: "month"
  }, monthName), /*#__PURE__*/React.createElement("div", {
    className: "nav-grp"
  }, /*#__PURE__*/React.createElement("button", {
    className: "nav-btn",
    disabled: !canGoBack,
    style: {
      opacity: canGoBack ? 1 : 0.3,
      cursor: canGoBack ? "pointer" : "not-allowed"
    },
    onClick: () => canGoBack && setViewMonth(new Date(viewMonth.getFullYear(), viewMonth.getMonth() - 1, 1))
  }, /*#__PURE__*/React.createElement("i", {
    className: "fa-solid fa-chevron-left"
  })), /*#__PURE__*/React.createElement("button", {
    className: "nav-btn",
    onClick: () => setViewMonth(new Date(viewMonth.getFullYear(), viewMonth.getMonth() + 1, 1))
  }, /*#__PURE__*/React.createElement("i", {
    className: "fa-solid fa-chevron-right"
  })))), /*#__PURE__*/React.createElement("div", {
    className: "cal-grid"
  }, ["S", "M", "T", "W", "T", "F", "S"].map((d, i) => /*#__PURE__*/React.createElement("div", {
    key: i,
    className: "dow"
  }, d)), days.map((c, i) => {
    if (c.empty) return /*#__PURE__*/React.createElement("div", {
      key: i,
      className: "cal-day empty"
    });
    const sel = selectedDate && selectedDate.toDateString() === c.date.toDateString();
    return /*#__PURE__*/React.createElement("div", {
      key: i,
      className: `cal-day ${c.disabled ? "disabled" : ""} ${c.today ? "today" : ""} ${sel ? "selected" : ""}`,
      onClick: () => {
        if (!c.disabled) {
          setSelectedDate(c.date);
          setSelectedTime(null);
          setConfirmed(false);
        }
      }
    }, c.d);
  })), /*#__PURE__*/React.createElement("div", {
    style: {
      marginTop: "20px",
      font: '500 10px/1.5 "JetBrains Mono", monospace',
      color: "#6c7d99",
      textTransform: "uppercase",
      letterSpacing: "0.14em",
      borderTop: "1px solid #1f3358",
      paddingTop: "16px"
    }
  }, "BUSINESS DAYS ONLY \xB7 WEEKEND EMERGENCIES \u2192 CALL OPS LINE")), /*#__PURE__*/React.createElement("div", {
    className: "scheduler-times"
  }, !selectedDate ? /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      flexDirection: "column",
      alignItems: "center",
      justifyContent: "center",
      height: "100%",
      minHeight: "320px",
      textAlign: "center",
      padding: "32px"
    }
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      width: "40px",
      height: "40px",
      border: "1px dashed #2c4675",
      display: "flex",
      alignItems: "center",
      justifyContent: "center",
      color: "#6c7d99",
      marginBottom: "16px"
    }
  }, /*#__PURE__*/React.createElement("i", {
    className: "fa-solid fa-calendar-day"
  })), /*#__PURE__*/React.createElement("div", {
    style: {
      font: '500 11px/1.4 "JetBrains Mono", monospace',
      color: "#6c7d99",
      textTransform: "uppercase",
      letterSpacing: "0.16em"
    }
  }, "SELECT A DATE TO SEE", /*#__PURE__*/React.createElement("br", null), "AVAILABLE TIMES")) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
    className: "t-head"
  }, "AVAILABLE \xB7 30 MIN SLOTS"), /*#__PURE__*/React.createElement("div", {
    className: "t-date"
  }, formatLong(selectedDate)), /*#__PURE__*/React.createElement("div", {
    className: "time-grid"
  }, slots.map(s => /*#__PURE__*/React.createElement("button", {
    type: "button",
    key: s.time,
    disabled: s.taken,
    className: `time-slot ${s.taken ? "taken" : ""} ${selectedTime === s.time ? "selected" : ""}`,
    onClick: () => {
      if (!s.taken) {
        setSelectedTime(s.time);
        setConfirmed(false);
      }
    }
  }, s.time, " ", parseInt(s.time) >= 12 ? "PM" : "AM"))), /*#__PURE__*/React.createElement("div", {
    className: "scheduler-confirm"
  }, selectedTime ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
    className: "summary"
  }, /*#__PURE__*/React.createElement("strong", null, "Booking summary:"), " ", formatLong(selectedDate), " at ", /*#__PURE__*/React.createElement("strong", {
    style: {
      color: "var(--accent-bright)"
    }
  }, selectedTime), " CST (Central Standard Time) \xB7 30 minutes \xB7 video or phone."), /*#__PURE__*/React.createElement("button", {
    className: "btn-primary",
    style: {
      width: "100%"
    },
    onClick: confirm
  }, /*#__PURE__*/React.createElement("i", {
    className: "fa-solid fa-calendar-check"
  }), "Confirm Booking")) : /*#__PURE__*/React.createElement("div", {
    className: "summary",
    style: {
      margin: 0,
      color: "#6c7d99",
      fontFamily: '"JetBrains Mono", monospace',
      fontSize: "11px",
      textTransform: "uppercase",
      letterSpacing: "0.14em"
    }
  }, "PICK A TIME ABOVE TO CONTINUE")), /*#__PURE__*/React.createElement("div", {
    className: `booked-overlay ${confirmed ? "show" : ""}`
  }, /*#__PURE__*/React.createElement("div", {
    className: "h"
  }, "CONFIRMED \xB7 CALENDAR INVITE SENT"), /*#__PURE__*/React.createElement("div", {
    className: "b"
  }, "Your call is locked in for ", /*#__PURE__*/React.createElement("strong", null, formatLong(selectedDate)), " at ", /*#__PURE__*/React.createElement("strong", null, selectedTime, " CST (Central Standard Time)"), ". Check your inbox for the calendar invite and a one-page kickoff doc."))))));
}


// ============================================================
// PROPERTY SKYLINE — building silhouette visual for Property Management page
// ============================================================
function PropertySkyline() {
  // Repeating skyline cycle: vertical walls + horizontal rooftops.
  // Starts and ends at ground level (y=180) so a 240-wide cycle tiles seamlessly.
  const cycle = (offset) => [
    `M${offset + 0} 180`,
    `L${offset + 0} 110`,    // wall up
    `L${offset + 30} 110`,   // roof
    `L${offset + 30} 75`,    // step up (taller adjacent building)
    `L${offset + 60} 75`,    // roof
    `L${offset + 60} 130`,   // step down (shorter)
    `L${offset + 90} 130`,   // roof
    `L${offset + 90} 95`,    // step up
    `L${offset + 120} 95`,   // roof
    `L${offset + 120} 155`,  // step down (lowest)
    `L${offset + 150} 155`,  // roof
    `L${offset + 150} 65`,   // step up (tallest)
    `L${offset + 180} 65`,   // roof
    `L${offset + 180} 100`,  // step down
    `L${offset + 210} 100`,  // roof
    `L${offset + 210} 140`,  // step down
    `L${offset + 240} 140`,  // roof
    `L${offset + 240} 180`   // wall back to ground (seam point)
  ].join(' ');
  const path = [cycle(0), cycle(240), cycle(480), cycle(720)].join(' ');

  return /*#__PURE__*/React.createElement("div", {
    className: "property-skyline",
    "aria-hidden": "true"
  },
    /*#__PURE__*/React.createElement("svg", {
      viewBox: "0 0 480 200",
      preserveAspectRatio: "none",
      className: "ps-svg"
    },
      /*#__PURE__*/React.createElement("defs", null,
        /*#__PURE__*/React.createElement("linearGradient", { id: "psFade", x1: "0", x2: "1", y1: "0", y2: "0" },
          /*#__PURE__*/React.createElement("stop", { offset: "0%", stopColor: "#3b82f6", stopOpacity: "0" }),
          /*#__PURE__*/React.createElement("stop", { offset: "20%", stopColor: "#3b82f6", stopOpacity: "0.4" }),
          /*#__PURE__*/React.createElement("stop", { offset: "70%", stopColor: "#60a5fa", stopOpacity: "0.9" }),
          /*#__PURE__*/React.createElement("stop", { offset: "100%", stopColor: "#93c5fd", stopOpacity: "1" })
        )
      ),
      // Dashed ground baseline so it reads as a SKYLINE, not abstract steps
      /*#__PURE__*/React.createElement("line", {
        x1: "0", x2: "480", y1: "180", y2: "180",
        stroke: "rgba(147,197,253,0.45)",
        strokeWidth: "1.25",
        strokeDasharray: "6 5"
      }),
      // Skyline trace — wide path scrolling left
      /*#__PURE__*/React.createElement("g", { className: "ps-trace-group" },
        /*#__PURE__*/React.createElement("path", {
          d: path,
          fill: "none",
          stroke: "url(#psFade)",
          strokeWidth: "2.5",
          strokeLinecap: "round",
          strokeLinejoin: "miter",
          style: { filter: "drop-shadow(0 0 4px rgba(96,165,250,0.55))" }
        })
      )
    )
  );
}

// ============================================================
// FINANCE TICKER — stock-chart visual for Financial Services page
// ============================================================
function FinanceTicker() {
  // Repeating market-chart cycle: jagged ups and downs ending at baseline.
  // One cycle = 240 units wide; build 4 cycles for a seamless scroll loop.
  const cycle = (offset) => [
    `M${offset + 0} 100`,
    `L${offset + 18} 92`,
    `L${offset + 32} 110`,
    `L${offset + 48} 78`,
    `L${offset + 65} 88`,
    `L${offset + 82} 64`,
    `L${offset + 98} 82`,
    `L${offset + 115} 58`,
    `L${offset + 132} 72`,
    `L${offset + 150} 86`,
    `L${offset + 168} 68`,
    `L${offset + 185} 104`,
    `L${offset + 200} 88`,
    `L${offset + 218} 96`,
    `L${offset + 240} 100`
  ].join(' ');
  const path = [cycle(0), cycle(240), cycle(480), cycle(720)].join(' ');

  return /*#__PURE__*/React.createElement("div", {
    className: "finance-ticker",
    "aria-hidden": "true"
  },
    /*#__PURE__*/React.createElement("svg", {
      viewBox: "0 0 480 200",
      preserveAspectRatio: "none",
      className: "ft-svg"
    },
      /*#__PURE__*/React.createElement("defs", null,
        // Older trace fades transparent on the LEFT (oldest data dying off-screen)
        /*#__PURE__*/React.createElement("linearGradient", { id: "ftFade", x1: "0", x2: "1", y1: "0", y2: "0" },
          /*#__PURE__*/React.createElement("stop", { offset: "0%", stopColor: "var(--accent)", stopOpacity: "0" }),
          /*#__PURE__*/React.createElement("stop", { offset: "20%", stopColor: "var(--accent)", stopOpacity: "0.45" }),
          /*#__PURE__*/React.createElement("stop", { offset: "70%", stopColor: "var(--accent-bright)", stopOpacity: "0.9" }),
          /*#__PURE__*/React.createElement("stop", { offset: "100%", stopColor: "var(--accent-bright)", stopOpacity: "1" })
        )
      ),
      // Dashed baseline so it reads as a CHART, not an abstract wave
      /*#__PURE__*/React.createElement("line", {
        x1: "0", x2: "480", y1: "100", y2: "100",
        stroke: "rgba(230,194,92,0.45)",
        strokeWidth: "1.25",
        strokeDasharray: "6 5"
      }),
      // Market trace — wide path scrolling left to simulate live feed
      /*#__PURE__*/React.createElement("g", { className: "ft-trace-group" },
        /*#__PURE__*/React.createElement("path", {
          d: path,
          fill: "none",
          stroke: "url(#ftFade)",
          strokeWidth: "2.5",
          strokeLinecap: "round",
          strokeLinejoin: "round",
          style: { filter: "drop-shadow(0 0 4px rgba(230,194,92,0.55))" }
        })
      )
    )
  );
}

// ============================================================
// HEART MONITOR — ECG visual for Medical Offices page
// ============================================================
function HeartMonitor() {
  // Repeating ECG cycle: P-QRS-T-flat. One cycle = 240 units wide.
  // Build 4 cycles for a 960-wide path; CSS translates it leftward continuously.
  const cycle = (offset) => [
    `M${offset + 0} 100 L${offset + 30} 100`,
    `L${offset + 45} 92 L${offset + 60} 100`,
    `L${offset + 85} 100`,
    `L${offset + 92} 108`,
    `L${offset + 100} 30 L${offset + 108} 135 L${offset + 116} 100`,
    `L${offset + 145} 100`,
    `L${offset + 168} 84 L${offset + 192} 100`,
    `L${offset + 240} 100`
  ].join(' ');
  const path = [cycle(0), cycle(240), cycle(480), cycle(720)].join(' ');

  return /*#__PURE__*/React.createElement("div", {
    className: "heart-monitor",
    "aria-hidden": "true"
  },
    /*#__PURE__*/React.createElement("svg", {
      viewBox: "0 0 480 200",
      preserveAspectRatio: "none",
      className: "hm-svg"
    },
      /*#__PURE__*/React.createElement("defs", null,
        // older trace fades to transparent on the LEFT (oldest data dies off-screen)
        /*#__PURE__*/React.createElement("linearGradient", { id: "hmFade", x1: "0", x2: "1", y1: "0", y2: "0" },
          /*#__PURE__*/React.createElement("stop", { offset: "0%", stopColor: "#22c55e", stopOpacity: "0" }),
          /*#__PURE__*/React.createElement("stop", { offset: "20%", stopColor: "#22c55e", stopOpacity: "0.4" }),
          /*#__PURE__*/React.createElement("stop", { offset: "70%", stopColor: "#22c55e", stopOpacity: "0.85" }),
          /*#__PURE__*/React.createElement("stop", { offset: "100%", stopColor: "#4ade80", stopOpacity: "1" })
        )
      ),
      // ECG trace — wide path translating left to simulate continuous scroll
      /*#__PURE__*/React.createElement("g", { className: "hm-trace-group" },
        /*#__PURE__*/React.createElement("path", {
          d: path,
          fill: "none",
          stroke: "url(#hmFade)",
          strokeWidth: "2.5",
          strokeLinecap: "round",
          strokeLinejoin: "round",
          style: { filter: "drop-shadow(0 0 4px rgba(34,197,94,0.6))" }
        })
      )
    )
  );
}

// ============================================================
// INDUSTRY PAGES (Medical Offices, Financial Services, Property Mgmt, Other)
// ============================================================
const INDUSTRY_DATA = {
  "industries/medical-offices": {
    crumb: "MEDICAL OFFICES",
    eyebrow: "VERTICAL · MEDICAL & DENTAL PRACTICES",
    title: "IT built for",
    accent: "patient care.",
    lede: "HIPAA-compliant infrastructure, after-hours coverage when you're on call, and zero tolerance for downtime when patients are in the chair. We've supported multi-provider practices across DFW (Dallas–Fort Worth) since day one.",
    painTitle: "What makes",
    painAccent: "medical IT different.",
    painDesc: "Generic break-fix shops don't understand BAAs (Business Associate Agreements), can't read an OCR (Office for Civil Rights) audit letter, and won't be there at 7 AM when your EHR (Electronic Health Record) is locked out before the first appointment.",
    pains: [
      { t: "EHR downtime stops the entire schedule", d: "When Epic, eClinicalWorks, or athenahealth goes down mid-morning, the front desk is dead in the water. Patients wait. Providers can't chart. Billing falls behind for days." },
      { t: "OCR penalties keep climbing", d: "HHS issued $144M+ in HIPAA settlements over the last decade. Most weren't catastrophic breaches — they were missing risk analyses, unencrypted laptops, or stale BAAs from a vendor that changed hands." },
      { t: "Ransomware specifically targets healthcare", d: "Per HHS, 67% of US healthcare orgs hit ransomware in 2023. Attackers know practices will pay because the alternative is breach notification to every patient." },
      { t: "PACS / imaging needs real performance", d: "Dental panoramic, dermatology hi-res, ortho 3D imaging — these are gigabyte-scale files. Slow viewer launch kills clinical workflow." },
      { t: "Multi-location practices need consistency", d: "If one location is a security hole, the whole practice is exposed. Standardized network, identity, and endpoint policies are non-negotiable." },
      { t: "After-hours providers need remote access", d: "On-call physicians and dentists need secure access to charts from home — without VPN headaches or compliance gaps." }
    ],
    services: [
      { num: "01", tag: "CORE · EHR / PMS (PRACTICE MGMT SYSTEM)", title: "EHR and Practice Management Support", desc: "Day-to-day uptime, vendor liaison, and integration troubleshooting for the systems your providers actually use — not a generic Microsoft 365 tier.",
        bullets: ["Epic, eClinicalWorks, athenahealth, NextGen, Allscripts", "Dentrix, OpenDental, Eaglesoft, Curve", "Vendor escalation — we call their support so you don't have to", "Workstation imaging tuned for your EHR's quirks"],
        meta: ["UPTIME SLA", "99.97%"] },
      { num: "02", tag: "COMPLIANCE · HIPAA + HITECH", title: "HIPAA Compliance & PHI Security", desc: "Annual risk analysis, signed BAAs, encryption at rest and in transit, and audit-ready documentation for the day OCR sends a letter.",
        bullets: ["NIST 800-66 risk assessments", "BAA management for every vendor touching PHI", "Disk + email + backup encryption (AES-256)", "Quarterly security awareness training for staff", "Audit log retention (6+ years)"],
        meta: ["PHI BREACHES · 7 YRS", "ZERO"] },
      { num: "03", tag: "IMAGING · PACS + DICOM", title: "PACS, Imaging, and Diagnostic Storage", desc: "Hybrid on-prem + cloud architecture for radiology, dental, and dermatology. Local cache for speed, cloud for redundancy.",
        bullets: ["DICOM-compliant storage with metadata indexing", "On-prem NAS (Network Attached Storage) tuned for image throughput", "Encrypted cloud replication (HIPAA-eligible AWS / Azure)", "Viewer launch < 3 seconds across all workstations", "DEXIS, Carestream, GE, Philips integration"] },
      { num: "04", tag: "RESILIENCE · BACKUP + DR (DISASTER RECOVERY)", title: "HIPAA-Grade Backup and Disaster Recovery", desc: "Air-gapped, immutable backups meeting the 6-year retention rule. We test restores quarterly — because untested backups aren't backups.",
        bullets: ["3-2-1 strategy: 3 copies, 2 media types, 1 off-site", "Immutable backups (ransomware can't encrypt them)", "15-minute RPO (Recovery Point Objective) for active patient data", "Documented, rehearsed disaster recovery runbook", "6-year retention for billing & clinical records"],
        meta: ["RPO TARGET", "15 MIN"] },
      { num: "05", tag: "SECURE COMMS · PATIENT & PROVIDER", title: "Encrypted Communication & Telehealth Support", desc: "Patient texting, secure email, telehealth platforms, and fax replacement — all configured to satisfy HIPAA without slowing down clinical workflow.",
        bullets: ["Secure messaging (Spruce, Klara, OhMD, TigerConnect)", "TLS 1.2+ encrypted email with portal fallback", "Cloud fax (SR Fax, Updox) replacing analog lines", "Zoom for Healthcare / Doxy.me / VSee deployment", "Patient portal hosting and integration"] }
    ],
    complianceTitle: "Standards we",
    complianceAccent: "design to.",
    compliance: [
      { name: "HIPAA Security Rule", code: "45 CFR §164.308" },
      { name: "HITECH Act", code: "2009 (BREACH NOTIFICATION)" },
      { name: "HHS 405(d)", code: "RECOGNIZED PRACTICES" },
      { name: "NIST 800-66", code: "HEALTHCARE GUIDANCE" },
      { name: "BAA Coverage", code: "EVERY VENDOR" },
      { name: "OCR Audit Support", code: "EVIDENCE PACKETS" }
    ],
    stats: [
      { eyebrow: "ACTIVE PRACTICES", n: "13", unit: "", l: "Medical & dental clients under contract", d: "Across general practice, dermatology, orthodontics, ophthalmology, and specialty surgery groups." },
      { eyebrow: "EHR SYSTEMS SUPPORTED", n: "47", unit: "", l: "Distinct EHR / PMS deployments managed", d: "We've seen the quirks. The error code your vendor said was 'impossible'? We've fixed it." },
      { eyebrow: "PHI BREACH RATE", n: "0", unit: "", l: "Reportable PHI events in 7 years", d: "Across every client, every year. Audited annually, documented monthly, tested quarterly." },
      { eyebrow: "EHR UPTIME", n: "99.97", unit: "%", l: "Production EHR availability SLA", d: "Measured during clinical hours. Mean time to recovery: 11 minutes. Median: 4." }
    ],
    ctaTitle: "Ready to switch",
    ctaAccent: "MSP (Managed Service Provider)?",
    ctaDesc: "Most practices reach out after a billing-day outage or an OCR letter. You don't have to wait for either. We'll do a no-cost HIPAA-aligned IT review and tell you exactly where your current setup falls short."
  },

  "industries/financial-services": {
    crumb: "FINANCIAL SERVICES",
    eyebrow: "VERTICAL · RIA, WEALTH MGMT, BROKER-DEALER",
    title: "IT for",
    accent: "fiduciary work.",
    lede: "Examiners want logs. Clients want responsiveness. Regulators want retention. We build infrastructure that satisfies the SEC, FINRA, and your custodian — without slowing down the trading day.",
    painTitle: "What financial",
    painAccent: "IT actually requires.",
    painDesc: "Generic IT doesn't know that SEC Rule 17a-4 requires WORM (Write-Once-Read-Many) storage, that FINRA wants chat retention, or that your custodian has a 14-page IP-allowlist spec. We do.",
    pains: [
      { t: "SEC 17a-4 isn't optional", d: "Books and records must be retained on non-rewriteable, non-erasable media (WORM). Most generic Microsoft 365 tenants don't meet this without explicit configuration." },
      { t: "BEC (Business Email Compromise) targets advisors", d: "FBI IC3 reports advisors lose more per BEC incident than any other vertical — fraudulent wire instructions sent from compromised mailboxes." },
      { t: "Custodian connectivity is finicky", d: "Schwab, Fidelity, LPL, Pershing each have IP allowlists, MFA requirements, and SSO quirks that break monthly if not actively managed." },
      { t: "State + SEC exams demand evidence packets", d: "Cyber questionnaires, access logs, retention proofs, MFA enforcement reports — examiners want them all, formatted, by Friday." },
      { t: "Client portals need real protection", d: "Encrypted, SOC 2-grade vaults replace the unsecured PDF-attachment-by-email habit that gets advisors fined." },
      { t: "DR (Disaster Recovery) plans must be tested", d: "Annual tabletop exercise. Documented runbook. Recovery time validated. Examiners will ask." }
    ],
    services: [
      { num: "01", tag: "RECORDS RETENTION · SEC 17a-4", title: "WORM Storage & Communication Archiving", desc: "Email, IM, Bloomberg/Reuters/Symphony chat, social media — retained on Write-Once-Read-Many storage, indexed and searchable for examiner requests.",
        bullets: ["Email + Teams + Slack archival to WORM (Smarsh, Global Relay, Mimecast)", "Bloomberg, Reuters Eikon chat retention", "Social media supervision (LinkedIn, X)", "Examiner-ready search and export", "7-year retention with legal hold workflow"],
        meta: ["RETENTION", "7+ YRS"] },
      { num: "02", tag: "FRAUD DEFENSE · BEC + WIRE", title: "Wire-Fraud & Business Email Compromise Defense", desc: "Layered controls at the email, identity, and process levels — because one of them will fail, but not all of them at once.",
        bullets: ["Inbound DMARC, DKIM, SPF enforcement", "Callback verification workflows for wire changes", "Anomalous-login + impossible-travel alerts", "Look-alike domain monitoring", "Dual-control approvals on outgoing wires"],
        meta: ["BEC INCIDENTS", "ZERO"] },
      { num: "03", tag: "CUSTODIAN · SCHWAB / FIDELITY / LPL", title: "Custodian and Trading Platform Connectivity", desc: "Direct-connect configuration to every major custodian, performance reporting, and trading platform — maintained, not just set up once and forgotten.",
        bullets: ["Schwab Advisor Center, Fidelity Wealthscape, LPL ClientWorks", "Pershing NetX360, Raymond James AccessPoint", "IP allowlist + MFA enforcement per custodian spec", "Performance reporting (Orion, Black Diamond, Tamarac)", "CRM (Salesforce FSC, Redtail, Wealthbox) integration"] },
      { num: "04", tag: "AUDIT & EXAM · SEC / FINRA / STATE", title: "Examination Support & Evidence Packets", desc: "We maintain the evidence trail throughout the year — so when the exam letter arrives, you hand over a folder, not a panic.",
        bullets: ["Continuous control monitoring with audit logs", "Cyber questionnaire response templates", "Access review certifications (quarterly)", "Pre-built evidence packets per exam type", "Mock examinations with your compliance team"],
        meta: ["EXAM PASS RATE", "100%"] },
      { num: "05", tag: "CLIENT PORTAL · SOC 2 VAULT", title: "Encrypted Client Portals & Document Exchange", desc: "Replace the email-PDF-attachment workflow with a SOC 2 Type II hosted vault — e-signature, secure messaging, and audit trail included.",
        bullets: ["ShareFile, Citrix, or Egnyte deployment", "DocuSign / SignNow e-signature integration", "Client-side MFA enforcement", "SOC 2 Type II audited infrastructure", "Granular permission + retention per document type"] }
    ],
    complianceTitle: "Frameworks we",
    complianceAccent: "design to.",
    compliance: [
      { name: "SEC Rule 17a-4", code: "BOOKS & RECORDS" },
      { name: "FINRA Rule 4511", code: "RETENTION" },
      { name: "FINRA Rule 3110", code: "SUPERVISION" },
      { name: "GLBA Safeguards Rule", code: "16 CFR §314" },
      { name: "SEC Reg S-P", code: "PRIVACY OF CUSTOMER INFO" },
      { name: "NY DFS 23 NYCRR 500", code: "IF NEW YORK CLIENTS" }
    ],
    stats: [
      { eyebrow: "ACTIVE FIRMS", n: "8", unit: "", l: "RIAs and wealth management firms supported", d: "Independent RIAs, hybrid broker-dealers, family offices, and one TAMP. We know your custodian." },
      { eyebrow: "AUM (ASSETS UNDER MGMT)", n: "3.4", unit: "B", l: "Combined client AUM across our book", d: "Infrastructure that has to scale and stay quiet — trades happen on it daily." },
      { eyebrow: "SEC EXAM PASS RATE", n: "100", unit: "%", l: "Client firms passing IT-related exam items", d: "No deficiency findings on technology, retention, or cybersecurity across any client examination since 2019." },
      { eyebrow: "ARCHIVE COVERAGE", n: "7", unit: "+ YRS", l: "Email, chat, and social archived per 17a-4(f)", d: "Indexed, immutable, examiner-searchable. Average response to a record request: 4 hours." }
    ],
    ctaTitle: "Examination season,",
    ctaAccent: "without the heartburn.",
    ctaDesc: "Whether you're a 4-advisor RIA or a 40-advisor hybrid, the regulatory bar is the same. Let's walk through your current setup and identify where it falls short before an examiner does."
  },

  "industries/property-management": {
    crumb: "PROPERTY MANAGEMENT",
    eyebrow: "VERTICAL · MULTIFAMILY, COMMERCIAL, MIXED-USE",
    title: "IT for the",
    accent: "management company.",
    lede: "Corporate HQ, regional offices, on-site leasing teams, 50+ properties — all on one IT strategy. We unify networks, identities, and your PMS (Property Management System) across every office so your team can run the portfolio from one stack.",
    painTitle: "Where management IT",
    painAccent: "actually breaks down.",
    painDesc: "We focus on the company running the portfolio — corporate, regional, and on-site staff — not the residents. Different problem, different solution. Generic IT misses the multi-site reality of how a management firm actually operates.",
    pains: [
      { t: "Multi-office IT is fragmented", d: "Corporate HQ on one stack. Regional offices on another. On-site leasing offices using whatever the developer left behind. When something breaks, nobody knows what's installed where." },
      { t: "PMS downtime stops leasing and maintenance", d: "AppFolio, Yardi, or Buildium down means no work orders dispatched, no rent processing, no new leases signed. Your team falls 48 hours behind in an afternoon." },
      { t: "Staff turnover wrecks IT hygiene", d: "Leasing agents, maintenance leads, and regional managers turn over constantly. Without automated onboarding/offboarding, you've got ghost accounts, lost devices, and unrevoked access for years." },
      { t: "Owner and investor reporting demands audit-ready security", d: "Owner statements, financial reports, investor portals — these aren't areas where you can have ambiguous access controls or missing audit logs." },
      { t: "Cyber insurance carriers now demand evidence", d: "MFA enforcement, EDR (Endpoint Detection & Response), documented incident response, tested backups. Without them, premiums spike or coverage gets denied." },
      { t: "Acquisitions inherit IT debt", d: "When you take over a new property or absorb another management firm, you inherit their network, their devices, and their security gaps — all of which become your liability on day one." }
    ],
    services: [
      { num: "01", tag: "NETWORK · CORPORATE + REGIONAL + ON-SITE", title: "Multi-Office Network Architecture", desc: "Standardized network design across corporate HQ, regional offices, and on-site leasing offices. Same vendor stack. Same security posture. One dashboard.",
        bullets: ["Corporate HQ + regional + on-site office unification", "Ubiquiti / Fortinet / Meraki standardization across sites", "Staff / guest / IoT segmentation per office", "SD-WAN failover — if ISP A dies, ISP B picks up", "Central monitoring + alerting across every location"],
        meta: ["OFFICES MANAGED", "62"] },
      { num: "02", tag: "ENDPOINT + IDENTITY · MDM", title: "Endpoint, Identity & Device Management", desc: "Every laptop, phone, and tablet your staff touches — managed from one console. Onboard a leasing agent in 30 minutes. Offboard one in 5.",
        bullets: ["Microsoft 365 / Google Workspace identity management", "Intune or Jamf MDM (Mobile Device Management) for laptops and phones", "Automated onboarding + offboarding workflows", "MFA enforcement and conditional access", "Lost-device wipe and remote lockdown"],
        meta: ["ONBOARD TIME", "30 MIN"] },
      { num: "03", tag: "PMS · APPFOLIO / YARDI / BUILDIUM", title: "PMS, Accounting & ERP Platform Support", desc: "We support the platforms your business actually runs on. Vendor liaison, custom reports, integration troubleshooting — not just generic IT.",
        bullets: ["AppFolio, Yardi Voyager, Buildium, Entrata, MRI, Rent Manager", "QuickBooks, NetSuite, Sage integration", "Vendor liaison — we handle vendor support tickets for you", "Custom report troubleshooting + scheduled exports", "User provisioning + permission audits"],
        meta: ["PMS UPTIME", "99.95%"] },
      { num: "04", tag: "FINANCIAL DATA · SEGMENTATION + AUDIT", title: "Cybersecurity for Owner & Investor Data", desc: "Owner statements, financial reports, and investor portals demand a higher security tier than the leasing office. We segment, monitor, and audit accordingly.",
        bullets: ["Network segmentation around financial systems", "Privileged-access management for accounting team", "Audit logging on all financial reporting workflows", "Quarterly access certifications", "GAAP-aligned data retention"],
        meta: ["AUDIT FINDINGS", "ZERO"] },
      { num: "05", tag: "BUSINESS CONTINUITY · BACKUP + DR + INSURANCE", title: "Backup, Disaster Recovery & Cyber Insurance Readiness", desc: "Air-gapped backups, tested recovery, documented incident response, and evidence packets for your cyber insurance carrier — because premiums depend on proof.",
        bullets: ["Immutable backups (ransomware can't encrypt them)", "Documented + rehearsed disaster recovery runbook", "Cyber insurance questionnaire response support", "EDR (Endpoint Detection & Response) deployment", "M&A IT-due-diligence playbook for acquisitions"] }
    ],
    complianceTitle: "Standards we",
    complianceAccent: "design to.",
    compliance: [
      { name: "PCI DSS", code: "PAYMENT PROCESSING" },
      { name: "Fair Housing Tech", code: "ADVERTISING + ACCESS" },
      { name: "GAAP Audit Support", code: "FINANCIAL CONTROLS" },
      { name: "Cyber Insurance", code: "CARRIER REQUIREMENTS" },
      { name: "SOC 2-Aligned Controls", code: "INVESTOR REPORTING" },
      { name: "State Recordkeeping", code: "TX, CA, NY, FL RETENTION" }
    ],
    stats: [
      { eyebrow: "MANAGEMENT FIRMS", n: "6", unit: "", l: "Active property management clients", d: "From single-portfolio operators to firms with 20+ assets under management. Multifamily, commercial, mixed-use, self-storage." },
      { eyebrow: "OFFICES UNIFIED", n: "62", unit: "", l: "Corporate, regional, and on-site offices managed", d: "Every leasing office, regional outpost, and HQ on the same network, identity, and security stack." },
      { eyebrow: "REVENUE UNDER PMS", n: "180", unit: "M+", l: "Annual rent revenue flowing through supported PMS", d: "Infrastructure that has to stay quiet — if the PMS goes down, the business stops." },
      { eyebrow: "PMS UPTIME", n: "99.95", unit: "%", l: "Production PMS availability SLA", d: "Measured during business hours. Mean time to recovery: 14 minutes. Median: 6." }
    ],
    ctaTitle: "Bring your offices",
    ctaAccent: "under one stack.",
    ctaDesc: "We'll audit every office and corporate network, inventory what's installed, identify failure points, and propose a standardization plan. No long-term commitment to find out where the gaps are."
  },

  "industries/other": {
    crumb: "OTHER",
    eyebrow: "EVERY VERTICAL · CUSTOM ENGAGEMENT",
    title: "Don't see your",
    accent: "industry?",
    lede: "We've engaged construction firms, law practices, manufacturers, hospitality groups, retail chains, logistics operators, and non-profits. Tell us what you do — we'll figure out what compliance, software, and uptime requirements come with it."
  }
};

function IndustryPage({ go, slug }) {
  const data = INDUSTRY_DATA[slug];
  if (!data) return null;
  if (slug === "industries/other") return /*#__PURE__*/React.createElement(OtherIndustryPage, { go: go });

  return /*#__PURE__*/React.createElement("div", {
    className: "page active",
    "data-screen-label": data.crumb
  },
    // Page head
    /*#__PURE__*/React.createElement("div", { className: "page-head" },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        slug === "industries/medical-offices" && /*#__PURE__*/React.createElement(HeartMonitor, null), slug === "industries/financial-services" && /*#__PURE__*/React.createElement(FinanceTicker, null), slug === "industries/property-management" && /*#__PURE__*/React.createElement(PropertySkyline, null), /*#__PURE__*/React.createElement("div", { className: "crumb" },
          /*#__PURE__*/React.createElement("a", { onClick: () => go("services") }, "HOME"),
          /*#__PURE__*/React.createElement("span", { className: "sep" }, "/"),
          /*#__PURE__*/React.createElement("span", { className: "sep" }, "INDUSTRIES"),
          /*#__PURE__*/React.createElement("span", { className: "sep" }, "/"),
          /*#__PURE__*/React.createElement("span", { className: "cur" }, data.crumb)
        ),
        /*#__PURE__*/React.createElement("div", {
          style: { font: '500 11px/1 "JetBrains Mono", monospace', color: "var(--accent-bright)", textTransform: "uppercase", letterSpacing: "0.18em", marginBottom: "24px" }
        }, data.eyebrow),
        /*#__PURE__*/React.createElement("h1", null, data.title, " ", /*#__PURE__*/React.createElement("span", { className: "accent" }, data.accent)),
        /*#__PURE__*/React.createElement("p", { className: "lede" }, data.lede)
      )
    ),

    // Section: pain points / what makes this industry different
    /*#__PURE__*/React.createElement("section", { style: { padding: "var(--section-padding, 96px) 32px" } },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        /*#__PURE__*/React.createElement(SectionHead, {
          eyebrow: "WHAT WE SEE",
          title: data.painTitle,
          accent: data.painAccent,
          desc: data.painDesc
        }),
        /*#__PURE__*/React.createElement("div", {
          className: "ind-pain-grid",
          style: { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(320px, 1fr))", gap: "1px", background: "#1f3358", border: "1px solid #1f3358", marginTop: "48px" }
        }, data.pains.map((p, i) => /*#__PURE__*/React.createElement("div", {
          key: i,
          style: { background: "#0a1628", padding: "32px 28px", position: "relative" }
        },
          /*#__PURE__*/React.createElement("div", {
            style: { font: '700 32px/1 "JetBrains Mono", monospace', color: "var(--accent-bright)", fontFeatureSettings: '"tnum"', marginBottom: "16px" }
          }, String(i + 1).padStart(2, "0")),
          /*#__PURE__*/React.createElement("h4", {
            style: { font: '600 18px/1.3 "Space Grotesk", sans-serif', color: "#eef2f8", margin: "0 0 12px", letterSpacing: "-0.01em" }
          }, p.t),
          /*#__PURE__*/React.createElement("p", {
            style: { font: '400 14px/1.6 "Inter", sans-serif', color: "#a4b3cc", margin: 0 }
          }, p.d)
        )))
      )
    ),

    // Section: services
    /*#__PURE__*/React.createElement("section", {
      className: "canvas-deep",
      style: { borderTop: "1px solid #1f3358", padding: "var(--section-padding, 96px) 32px" }
    },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        /*#__PURE__*/React.createElement(SectionHead, {
          eyebrow: "WHAT WE MANAGE",
          title: "Built specifically",
          accent: "for " + data.crumb.toLowerCase() + ".",
          desc: "These are the systems, integrations, and compliance touchpoints we handle day to day for clients in this vertical."
        }),
        /*#__PURE__*/React.createElement("div", { className: "svc-list", style: { marginTop: "48px" } },
          data.services.map((s, i) => /*#__PURE__*/React.createElement("div", {
            key: s.num,
            className: "svc-row"
          },
            /*#__PURE__*/React.createElement("div", { className: "num" }, s.num),
            /*#__PURE__*/React.createElement("div", { className: "body" },
              /*#__PURE__*/React.createElement("span", { className: "tag" }, s.tag),
              /*#__PURE__*/React.createElement("h3", null, s.title),
              /*#__PURE__*/React.createElement("p", null, s.desc)
            ),
            /*#__PURE__*/React.createElement("ul", null,
              s.bullets.map((b, j) => /*#__PURE__*/React.createElement("li", { key: j }, b))
            ),
            /*#__PURE__*/React.createElement("div", { className: "meta" },
              s.meta && /*#__PURE__*/React.createElement(React.Fragment, null,
                /*#__PURE__*/React.createElement("div", { style: { fontSize: "9px", color: "#6c7d99", marginBottom: "6px" } }, s.meta[0]),
                /*#__PURE__*/React.createElement("span", {
                  className: "pill",
                  style: { background: "rgba(176,136,40,0.12)", color: "var(--accent-bright)", border: "1px solid var(--accent)" }
                }, s.meta[1])
              )
            )
          ))
        )
      )
    ),

    // Section: compliance frameworks
    /*#__PURE__*/React.createElement("section", { style: { padding: "var(--section-padding, 96px) 32px", borderTop: "1px solid #1f3358" } },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        /*#__PURE__*/React.createElement(SectionHead, {
          eyebrow: "COMPLIANCE · EVIDENCE OVER MARKETING",
          title: data.complianceTitle,
          accent: data.complianceAccent,
          desc: "The standards, regulations, and frameworks that shape every architecture decision for this vertical. Audit-ready means we have the documentation when you need it."
        }),
        /*#__PURE__*/React.createElement("div", {
          className: "compliance-grid",
          style: { marginTop: "48px" }
        }, data.compliance.map((c, i) => /*#__PURE__*/React.createElement("div", {
          key: i,
          style: { background: "#0a1628", padding: "24px 24px", display: "flex", justifyContent: "space-between", alignItems: "center", gap: "16px" }
        },
          /*#__PURE__*/React.createElement("div", null,
            /*#__PURE__*/React.createElement("div", { style: { font: '600 15px/1.3 "Space Grotesk", sans-serif', color: "#eef2f8", marginBottom: "6px" } }, c.name),
            /*#__PURE__*/React.createElement("div", { style: { font: '500 10px/1 "JetBrains Mono", monospace', color: "#6c7d99", letterSpacing: "0.12em", textTransform: "uppercase" } }, c.code)
          ),
          /*#__PURE__*/React.createElement("div", {
            style: { width: "28px", height: "28px", border: "1px solid var(--accent)", display: "flex", alignItems: "center", justifyContent: "center", flexShrink: 0 }
          }, /*#__PURE__*/React.createElement("svg", { width: "12", height: "10", viewBox: "0 0 12 10" },
            /*#__PURE__*/React.createElement("path", { d: "M1 5 L4.5 8.5 L11 1.5", stroke: "var(--accent-bright)", strokeWidth: "1.5", fill: "none", strokeLinecap: "round", strokeLinejoin: "round" })
          ))
        )))
      )
    ),

    // Section: stats
    /*#__PURE__*/React.createElement("section", {
      className: "canvas-deep",
      style: { borderTop: "1px solid #1f3358", padding: "var(--section-padding, 96px) 32px" }
    },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        /*#__PURE__*/React.createElement(SectionHead, {
          eyebrow: "BY THE NUMBERS",
          title: "Track record in",
          accent: data.crumb.toLowerCase() + ".",
          desc: "Numbers from our active book — not industry averages, not vendor claims."
        }),
        /*#__PURE__*/React.createElement("div", { className: "stat-grid", style: { marginTop: "48px" } },
          data.stats.map((s, i) => /*#__PURE__*/React.createElement("div", {
            key: i,
            className: "stat-cell in-view",
            style: { "--w": "78%" }
          },
            /*#__PURE__*/React.createElement("div", { className: "stat-eyebrow" }, s.eyebrow),
            /*#__PURE__*/React.createElement("div", { className: "n" }, s.n, s.unit && /*#__PURE__*/React.createElement("span", { className: "unit" }, s.unit)),
            /*#__PURE__*/React.createElement("div", { className: "l" }, s.l),
            /*#__PURE__*/React.createElement("div", { className: "d" }, s.d),
            /*#__PURE__*/React.createElement("div", { className: "bar" }, /*#__PURE__*/React.createElement("span", null))
          ))
        )
      )
    ),

    // CTA section
    /*#__PURE__*/React.createElement("section", { style: { padding: "var(--section-padding, 96px) 32px", borderTop: "1px solid #1f3358" } },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        /*#__PURE__*/React.createElement("div", {
          style: { display: "grid", gridTemplateColumns: "1.4fr 1fr", gap: "64px", alignItems: "center" },
          className: "ind-cta-grid"
        },
          /*#__PURE__*/React.createElement("div", null,
            /*#__PURE__*/React.createElement("div", {
              style: { font: '500 11px/1 "JetBrains Mono", monospace', color: "var(--accent-bright)", textTransform: "uppercase", letterSpacing: "0.18em", marginBottom: "20px" }
            }, "NEXT STEP · 30-MIN DISCOVERY CALL"),
            /*#__PURE__*/React.createElement("h2", {
              style: { font: '700 44px/1.1 "Space Grotesk", sans-serif', color: "#eef2f8", letterSpacing: "-0.025em", margin: "0 0 20px" }
            }, data.ctaTitle, " ", /*#__PURE__*/React.createElement("span", { style: { color: "var(--accent-bright)" } }, data.ctaAccent)),
            /*#__PURE__*/React.createElement("p", {
              style: { font: '400 17px/1.65 "Inter", sans-serif', color: "#a4b3cc", margin: 0, maxWidth: "560px" }
            }, data.ctaDesc)
          ),
          /*#__PURE__*/React.createElement("div", { style: { display: "flex", flexDirection: "column", gap: "12px" } },
            /*#__PURE__*/React.createElement("button", {
              className: "btn-primary",
              onClick: () => go("contact"),
              style: { fontSize: "15px", padding: "16px 24px", justifyContent: "center" }
            }, /*#__PURE__*/React.createElement("i", { className: "fa-solid fa-calendar-check" }), "Book a discovery call"),
            /*#__PURE__*/React.createElement("a", {
              href: "tel:2144320333",
              style: { font: '500 12px/1 "JetBrains Mono", monospace', color: "#6c7d99", textAlign: "center", letterSpacing: "0.14em", textDecoration: "none", padding: "12px", border: "1px solid #1f3358", textTransform: "uppercase" }
            }, "OR CALL 214-432-0333 · 24/7")
          )
        )
      )
    )
  );
}

function OtherIndustryPage({ go }) {
  const verticals = ["Construction", "Legal / Law Firms", "Manufacturing", "Hospitality", "Retail & E-commerce", "Logistics & Distribution", "Non-profit & Foundations", "Education / K-12", "Professional Services", "Architecture & Engineering", "Auto Dealerships", "HVAC & Trades"];
  const data = INDUSTRY_DATA["industries/other"];

  return /*#__PURE__*/React.createElement("div", {
    className: "page active",
    "data-screen-label": "Other Industry"
  },
    /*#__PURE__*/React.createElement("div", { className: "page-head" },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        /*#__PURE__*/React.createElement("div", { className: "crumb" },
          /*#__PURE__*/React.createElement("a", { onClick: () => go("services") }, "HOME"),
          /*#__PURE__*/React.createElement("span", { className: "sep" }, "/"),
          /*#__PURE__*/React.createElement("span", { className: "sep" }, "INDUSTRIES"),
          /*#__PURE__*/React.createElement("span", { className: "sep" }, "/"),
          /*#__PURE__*/React.createElement("span", { className: "cur" }, data.crumb)
        ),
        /*#__PURE__*/React.createElement("div", {
          style: { font: '500 11px/1 "JetBrains Mono", monospace', color: "var(--accent-bright)", textTransform: "uppercase", letterSpacing: "0.18em", marginBottom: "24px" }
        }, data.eyebrow),
        /*#__PURE__*/React.createElement("h1", null, data.title, " ", /*#__PURE__*/React.createElement("span", { className: "accent" }, data.accent)),
        /*#__PURE__*/React.createElement("p", { className: "lede" }, data.lede)
      )
    ),

    /*#__PURE__*/React.createElement("section", { style: { padding: "var(--section-padding, 96px) 32px" } },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        /*#__PURE__*/React.createElement(SectionHead, {
          eyebrow: "VERTICALS WE'VE ENGAGED",
          title: "We adapt to",
          accent: "your industry.",
          desc: "Every vertical comes with its own software stack, regulatory weight, and uptime expectations. We've worked with these and more — if yours isn't here, it just means we haven't been asked yet."
        }),
        /*#__PURE__*/React.createElement("div", {
          className: "verticals-grid",
          style: { marginTop: "48px" }
        }, verticals.map((v, i) => /*#__PURE__*/React.createElement("div", {
          key: i,
          style: { background: "#0a1628", padding: "20px 24px", display: "flex", alignItems: "center", justifyContent: "space-between", gap: "12px" }
        },
          /*#__PURE__*/React.createElement("span", { style: { font: '500 14px/1.3 "Inter", sans-serif', color: "#eef2f8" } }, v),
          /*#__PURE__*/React.createElement("span", { style: { font: '500 9px/1 "JetBrains Mono", monospace', color: "#6c7d99", letterSpacing: "0.14em" } }, String(i + 1).padStart(2, "0"))
        )))
      )
    ),

    /*#__PURE__*/React.createElement("section", {
      className: "canvas-deep",
      style: { borderTop: "1px solid #1f3358", padding: "var(--section-padding, 96px) 32px" }
    },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        /*#__PURE__*/React.createElement(SectionHead, {
          eyebrow: "HOW WE APPROACH NEW VERTICALS",
          title: "What an",
          accent: "engagement looks like.",
          desc: "We don't fake expertise we don't have. We do bring 7 years of MSP (Managed Service Provider) playbook — risk assessment, network design, compliance mapping, runbook documentation — and apply it to whatever stack you run on."
        }),
        /*#__PURE__*/React.createElement("div", {
          style: { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(280px, 1fr))", gap: "1px", background: "#1f3358", border: "1px solid #1f3358", marginTop: "48px" }
        }, [
          { n: "01", t: "Discovery", d: "Two-hour deep-dive on your business, software stack, regulatory exposure, and current pain points." },
          { n: "02", t: "Risk Mapping", d: "We translate your industry's compliance landscape (PCI, GDPR, state-specific, contract-specific) into concrete IT controls." },
          { n: "03", t: "Architecture Proposal", d: "Network, identity, endpoint, backup, and incident response — sized for your team, your budget, your growth plan." },
          { n: "04", t: "30-Day Pilot", d: "We embed for a month, manage live, document everything. You decide whether to continue, no long-term lock-in." }
        ].map((step, i) => /*#__PURE__*/React.createElement("div", {
          key: i,
          style: { background: "#0a1628", padding: "32px 28px" }
        },
          /*#__PURE__*/React.createElement("div", { style: { font: '700 32px/1 "JetBrains Mono", monospace', color: "var(--accent-bright)", marginBottom: "16px" } }, step.n),
          /*#__PURE__*/React.createElement("h4", { style: { font: '600 20px/1.3 "Space Grotesk", sans-serif', color: "#eef2f8", margin: "0 0 12px" } }, step.t),
          /*#__PURE__*/React.createElement("p", { style: { font: '400 14px/1.6 "Inter", sans-serif', color: "#a4b3cc", margin: 0 } }, step.d)
        )))
      )
    ),

    /*#__PURE__*/React.createElement("section", { style: { padding: "var(--section-padding, 96px) 32px", borderTop: "1px solid #1f3358" } },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        /*#__PURE__*/React.createElement("div", {
          style: { display: "grid", gridTemplateColumns: "1.4fr 1fr", gap: "64px", alignItems: "center" },
          className: "ind-cta-grid"
        },
          /*#__PURE__*/React.createElement("div", null,
            /*#__PURE__*/React.createElement("div", {
              style: { font: '500 11px/1 "JetBrains Mono", monospace', color: "var(--accent-bright)", textTransform: "uppercase", letterSpacing: "0.18em", marginBottom: "20px" }
            }, "TELL US ABOUT YOUR STACK"),
            /*#__PURE__*/React.createElement("h2", {
              style: { font: '700 44px/1.1 "Space Grotesk", sans-serif', color: "#eef2f8", letterSpacing: "-0.025em", margin: "0 0 20px" }
            }, "Let's figure out the ", /*#__PURE__*/React.createElement("span", { style: { color: "var(--accent-bright)" } }, "fit together.")),
            /*#__PURE__*/React.createElement("p", {
              style: { font: '400 17px/1.65 "Inter", sans-serif', color: "#a4b3cc", margin: 0, maxWidth: "560px" }
            }, "Send us a short note about what you do, what software runs your business, and where the current IT gaps hurt. We'll come back within one business day with whether we're the right fit — honest answer either way.")
          ),
          /*#__PURE__*/React.createElement("div", { style: { display: "flex", flexDirection: "column", gap: "12px" } },
            /*#__PURE__*/React.createElement("button", {
              className: "btn-primary",
              onClick: () => go("contact"),
              style: { fontSize: "15px", padding: "16px 24px", justifyContent: "center" }
            }, /*#__PURE__*/React.createElement("i", { className: "fa-solid fa-paper-plane" }), "Tell us about your business"),
            /*#__PURE__*/React.createElement("a", {
              href: "tel:2144320333",
              style: { font: '500 12px/1 "JetBrains Mono", monospace', color: "#6c7d99", textAlign: "center", letterSpacing: "0.14em", textDecoration: "none", padding: "12px", border: "1px solid #1f3358", textTransform: "uppercase" }
            }, "OR CALL 214-432-0333 · 24/7")
          )
        )
      )
    )
  );
}


// ============================================================
// RESOURCE — M365 LICENSE AUDIT WORKSHEET (lead-gen download)
// ============================================================
function ResourceM365AuditPage({ go }) {
  const DOWNLOAD_URL = (window.__resources && window.__resources.m365Zip) || "assets/downloads/M365-License-Audit-Worksheet.zip";
  const DOWNLOAD_FILENAME = "37Forge-M365-License-Audit-Worksheet.zip";

  const [form, setForm] = uS({
    first_name: "",
    last_name: "",
    email: "",
    phone: "",
    company_size: "",
    biggest_pain: ""
  });
  const [sending, setSending] = uS(false);
  const [sent, setSent] = uS(false);
  const [error, setError] = uS(null);
  const formRef = uR(null);

  const set = (k) => (e) => setForm(f => ({ ...f, [k]: e.target.value }));

  const onSubmit = async (e) => {
    e.preventDefault();
    if (sending) return;
    if (!form.email) { setError("Business email is required."); return; }

    setSending(true);
    setError(null);

    const key = document.querySelector('meta[name="web3forms-key"]')?.content;
    const id = Math.random().toString(36).slice(2, 8).toUpperCase();
    try {
      if (key) {
        const fd = new FormData();
        fd.append("access_key", key);
        fd.append("subject", `37 Forge LEAD · M365 License Audit · ${form.email}`);
        fd.append("from_name", `${form.first_name} ${form.last_name}`.trim() || form.email);
        fd.append("source", "M365 License Audit Worksheet (lead magnet)");
        fd.append("ticket", id);
        Object.entries(form).forEach(([k, v]) => fd.append(k, v));
        const r = await fetch("https://api.web3forms.com/submit", { method: "POST", body: fd });
        if (!r.ok) throw new Error("Submission failed");
        const json = await r.json();
        if (!json.success) throw new Error(json.message || "Submission failed");
      } else {
        // Local preview without key — fall through to success state so the UI is testable.
        await new Promise(r => setTimeout(r, 600));
      }
      setSent(true);
      // Auto-kick the download a half-second after thank-you appears.
      setTimeout(() => {
        const a = document.createElement("a");
        a.href = DOWNLOAD_URL;
        a.download = DOWNLOAD_FILENAME;
        document.body.appendChild(a);
        a.click();
        a.remove();
      }, 500);
    } catch (err) {
      setError(err.message || "Something went wrong. Please try again or call 214-432-0333.");
    } finally {
      setSending(false);
    }
  };

  const sizes = ["1–10", "11–50", "51–200", "200+"];

  return /*#__PURE__*/React.createElement("div", {
    className: "page active",
    "data-screen-label": "M365 Audit Worksheet"
  },
    /*#__PURE__*/React.createElement("div", { className: "page-head" },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        /*#__PURE__*/React.createElement("div", { className: "crumb" },
          /*#__PURE__*/React.createElement("a", { onClick: () => go("services") }, "HOME"),
          /*#__PURE__*/React.createElement("span", { className: "sep" }, "/"),
          /*#__PURE__*/React.createElement("span", { className: "sep" }, "RESOURCES"),
          /*#__PURE__*/React.createElement("span", { className: "sep" }, "/"),
          /*#__PURE__*/React.createElement("span", { className: "cur" }, "M365 LICENSE AUDIT")
        ),
        /*#__PURE__*/React.createElement("div", {
          style: { font: '500 11px/1 "JetBrains Mono", monospace', color: "var(--accent-bright)", textTransform: "uppercase", letterSpacing: "0.18em", marginBottom: "24px" }
        }, "FREE RESOURCE · M365 LICENSE AUDIT"),
        /*#__PURE__*/React.createElement("h1", null, "Most SMBs are overpaying ", /*#__PURE__*/React.createElement("span", { className: "accent" }, "20–40% on M365.")),
        /*#__PURE__*/React.createElement("p", { className: "lede" }, "A self-serve worksheet — spreadsheet plus a short guide — to inventory your Microsoft 365 licenses, spot duplicates and over-provisioned seats, and right-size your spend before your next renewal. No sales call required.")
      )
    ),

    /*#__PURE__*/React.createElement("section", { style: { padding: "96px 32px", borderTop: "1px solid #1f3358" } },
      /*#__PURE__*/React.createElement("div", { className: "container" },
        /*#__PURE__*/React.createElement("div", { className: "leadgen-grid" },

          // LEFT: what's inside / who it's for
          /*#__PURE__*/React.createElement("div", { className: "leadgen-info" },
            /*#__PURE__*/React.createElement("div", {
              style: { font: '500 11px/1 "JetBrains Mono", monospace', color: "var(--accent-bright)", textTransform: "uppercase", letterSpacing: "0.18em", marginBottom: "16px" }
            }, "WHAT'S INSIDE"),
            /*#__PURE__*/React.createElement("ul", { className: "leadgen-list" },
              /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement("strong", null, "License inventory worksheet (XLSX)"), " — columns for every M365 SKU your tenant carries, with formulas that flag duplicates, unused seats, and downgrade candidates."),
              /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement("strong", null, "10-page audit guide (PDF)"), " — the SKUs we see most often mis-bundled (E3 vs E5, Business Premium vs Enterprise), and a ranked checklist of what to cut first."),
              /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement("strong", null, "Renewal-leverage worksheet"), " — talking points and numbers to bring to your CSP (Cloud Solution Provider) or direct Microsoft rep before your annual renewal."),
              /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement("strong", null, "Quick-win matrix"), " — the 6 license changes that recover the most spend in under an hour.")
            ),

            /*#__PURE__*/React.createElement("div", {
              style: { font: '500 11px/1 "JetBrains Mono", monospace', color: "var(--accent-bright)", textTransform: "uppercase", letterSpacing: "0.18em", margin: "36px 0 16px" }
            }, "WHO IT'S FOR"),
            /*#__PURE__*/React.createElement("p", { style: { font: '400 15px/1.65 "Inter", sans-serif', color: "#a4b3cc", margin: 0, maxWidth: "520px" } },
              "Operations leads, controllers, and small IT teams running between 10 and 250 Microsoft 365 seats. If you've ever added a license 'just for now' and never cleaned it up, this worksheet pays for itself in 15 minutes."
            ),

            /*#__PURE__*/React.createElement("div", {
              style: { marginTop: "36px", padding: "20px 24px", border: "1px solid #1f3358", background: "rgba(176,136,40,0.04)" }
            },
              /*#__PURE__*/React.createElement("div", {
                style: { font: '500 10px/1 "JetBrains Mono", monospace', color: "#6c7d99", textTransform: "uppercase", letterSpacing: "0.14em", marginBottom: "8px" }
              }, "PRIVACY"),
              /*#__PURE__*/React.createElement("p", { style: { font: '400 13px/1.55 "Inter", sans-serif', color: "#a4b3cc", margin: 0 } },
                "We email you once with the download, plus one short follow-up to ask how the audit went. No nurture sequence, no SDR (Sales Development Rep) call. Unsubscribe with a click."
              )
            )
          ),

          // RIGHT: form OR thank-you state
          /*#__PURE__*/React.createElement("div", { className: "form-card", ref: formRef },
            !sent && /*#__PURE__*/React.createElement(React.Fragment, null,
              /*#__PURE__*/React.createElement("div", { className: "head" },
                /*#__PURE__*/React.createElement("span", { className: "t" }, "GET THE WORKSHEET"),
                /*#__PURE__*/React.createElement("span", { className: "id" }, "REQ · INSTANT")
              ),
              /*#__PURE__*/React.createElement("form", { onSubmit: onSubmit, noValidate: true },
                /*#__PURE__*/React.createElement("div", { className: "form-row two" },
                  /*#__PURE__*/React.createElement("div", null,
                    /*#__PURE__*/React.createElement("label", null, "FIRST NAME"),
                    /*#__PURE__*/React.createElement("input", { type: "text", value: form.first_name, onChange: set("first_name"), autoComplete: "given-name" })
                  ),
                  /*#__PURE__*/React.createElement("div", null,
                    /*#__PURE__*/React.createElement("label", null, "LAST NAME"),
                    /*#__PURE__*/React.createElement("input", { type: "text", value: form.last_name, onChange: set("last_name"), autoComplete: "family-name" })
                  )
                ),
                /*#__PURE__*/React.createElement("div", { className: "form-row" },
                  /*#__PURE__*/React.createElement("label", null, "BUSINESS EMAIL ", /*#__PURE__*/React.createElement("span", { style: { color: "var(--accent-bright)" } }, "*")),
                  /*#__PURE__*/React.createElement("input", { type: "email", value: form.email, onChange: set("email"), required: true, autoComplete: "email" })
                ),
                /*#__PURE__*/React.createElement("div", { className: "form-row" },
                  /*#__PURE__*/React.createElement("label", null, "PHONE NUMBER"),
                  /*#__PURE__*/React.createElement("input", { type: "tel", value: form.phone, onChange: set("phone"), autoComplete: "tel" })
                ),
                /*#__PURE__*/React.createElement("div", { className: "form-row" },
                  /*#__PURE__*/React.createElement("label", null, "COMPANY SIZE"),
                  /*#__PURE__*/React.createElement("div", { className: "size-grid" },
                    sizes.map(s => /*#__PURE__*/React.createElement("button", {
                      type: "button",
                      key: s,
                      className: "size-chip" + (form.company_size === s ? " selected" : ""),
                      onClick: () => setForm(f => ({ ...f, company_size: s }))
                    }, s))
                  )
                ),
                /*#__PURE__*/React.createElement("div", { className: "form-row" },
                  /*#__PURE__*/React.createElement("label", null, "BIGGEST IT PAIN RIGHT NOW?"),
                  /*#__PURE__*/React.createElement("textarea", {
                    rows: 4,
                    value: form.biggest_pain,
                    onChange: set("biggest_pain"),
                    placeholder: "Spam filtering, slow VPN, license sprawl, lost laptops — whatever\u2019s on your mind."
                  })
                ),
                error && /*#__PURE__*/React.createElement("div", {
                  style: { font: '500 12px/1.5 "JetBrains Mono", monospace', color: "#ff5572", padding: "12px 14px", border: "1px solid rgba(255,85,114,0.3)", background: "rgba(255,85,114,0.05)", marginBottom: "16px" }
                }, "ERROR · ", error),
                /*#__PURE__*/React.createElement("button", {
                  type: "submit",
                  className: "btn-primary",
                  disabled: sending,
                  style: { width: "100%", justifyContent: "center", fontSize: "14px", padding: "16px" }
                },
                  /*#__PURE__*/React.createElement("i", { className: sending ? "fa-solid fa-spinner fa-spin" : "fa-solid fa-download" }),
                  sending ? "Sending…" : "Send me the worksheet"
                ),
                /*#__PURE__*/React.createElement("p", {
                  style: { font: '400 11px/1.5 "Inter", sans-serif', color: "#6c7d99", marginTop: "14px", textAlign: "center" }
                }, "Instant download. No spam.")
              )
            ),

            // THANK-YOU STATE
            sent && /*#__PURE__*/React.createElement("div", { className: "leadgen-thanks" },
              /*#__PURE__*/React.createElement("div", { className: "lg-check" },
                /*#__PURE__*/React.createElement("svg", { width: "32", height: "32", viewBox: "0 0 32 32" },
                  /*#__PURE__*/React.createElement("path", { d: "M6 16 L13 23 L26 9", stroke: "var(--accent-bright)", strokeWidth: "2.5", fill: "none", strokeLinecap: "round", strokeLinejoin: "round" })
                )
              ),
              /*#__PURE__*/React.createElement("div", { className: "lg-eyebrow" }, "CONFIRMED · DOWNLOAD STARTING"),
              /*#__PURE__*/React.createElement("h3", { className: "lg-title" }, "You're set, ", form.first_name || "thanks", "."),
              /*#__PURE__*/React.createElement("p", { className: "lg-msg" }, "Your download should start in a second. If it doesn't, click below. We've also sent a copy to ", /*#__PURE__*/React.createElement("strong", null, form.email), "."),
              /*#__PURE__*/React.createElement("a", {
                href: DOWNLOAD_URL,
                download: DOWNLOAD_FILENAME,
                className: "btn-primary",
                style: { width: "100%", justifyContent: "center", fontSize: "14px", padding: "16px", marginTop: "20px" }
              }, /*#__PURE__*/React.createElement("i", { className: "fa-solid fa-download" }), "Download M365 License Audit Worksheet"),
              /*#__PURE__*/React.createElement("div", {
                style: { marginTop: "28px", paddingTop: "20px", borderTop: "1px solid #1f3358", textAlign: "center" }
              },
                /*#__PURE__*/React.createElement("p", { style: { font: '400 13px/1.5 "Inter", sans-serif', color: "#a4b3cc", margin: "0 0 12px" } }, "Want us to walk you through your audit?"),
                /*#__PURE__*/React.createElement("button", {
                  onClick: () => go("contact"),
                  className: "btn-outline",
                  style: { fontSize: "12px" }
                }, "Book a 30-min call")
              )
            )
          )
        )
      )
    )
  );
}

Object.assign(window, {
  ServicesPage,
  AboutPage,
  ContactPage,
  IndustryPage,
  OtherIndustryPage,
  HeartMonitor,
  FinanceTicker,
  PropertySkyline,
  ResourceM365AuditPage
});