/* Bridgehead — Diagnostic data catalog
   Purpose: Early-stage pain point discovery before a call.
   Keep it simple, relatable, and honest. */

const DIAG_SEGMENTS = [
  { id: 'hotel',      code: '01', title: 'Hotel',            blurb: 'Independent or boutique property' },
  { id: 'group',      code: '02', title: 'Hotel group',      blurb: 'Multiple properties' },
  { id: 'shortstay',  code: '03', title: 'Short-stay',       blurb: 'Vacation rentals, serviced apartments' },
  { id: 'restaurant', code: '04', title: 'Restaurant',       blurb: 'Single venue or group' },
  { id: 'techvendor', code: '05', title: 'Hospitality tech', blurb: 'PMS, booking, or ops software' },
  { id: 'villa',      code: '06', title: 'Luxury property',  blurb: 'Villas, private estates' },
  { id: 'spa',        code: '07', title: 'Spa & wellness',   blurb: 'Day spa, retreat, wellness center' },
  { id: 'events',     code: '08', title: 'Event venue',      blurb: 'Conferences, weddings, MICE' },
  { id: 'tour',       code: '09', title: 'Tour operator',    blurb: 'DMC, experiences, transfers' },
];

const DIAG_AREAS = {
  // ============= HOTEL / GROUP / SHORT-STAY =============
  guest_comms: {
    title: 'Guest messages',
    blurb: 'Inquiries, responses, reviews',
    points: [
      { id: 'inbox_overload',   short: 'Too many inboxes',       text: 'Messages scattered across email, OTAs, WhatsApp' },
      { id: 'slow_response',    short: 'Slow responses',         text: 'Takes too long to reply, bookings slip away' },
      { id: 'after_hours',      short: 'No evening cover',       text: 'Nobody responds after 6pm or on weekends' },
      { id: 'same_questions',   short: 'Same questions daily',   text: 'Staff answer the same things over and over' },
      { id: 'review_backlog',   short: 'Review backlog',         text: 'Reviews pile up without responses' },
      { id: 'other_comms',      short: 'Something else',         text: 'A different communication challenge' },
    ],
    solution: {
      title: 'Guest Communication',
      summary: 'We\'ll explore how to handle routine messages automatically while keeping your team in control of complex conversations.',
      approach: [
        'Map your current message flow across all channels',
        'Identify which inquiries are repetitive vs need human judgment',
        'Design a triage system that routes the right messages to the right people',
      ],
      spec: [
        { k: 'channels', v: 'email, OTA, WhatsApp' },
        { k: 'response_flow', v: 'triage + routing' },
        { k: 'human_handoff', v: 'complex queries' },
        { k: 'coverage', v: 'after-hours options' },
        { k: 'review_mgmt', v: 'response workflow' },
        { k: 'brand_voice', v: 'consistency check' },
      ],
    },
  },

  staffing: {
    title: 'Staffing',
    blurb: 'Hiring, scheduling, turnover',
    points: [
      { id: 'cant_find_staff',  short: 'Hard to hire',           text: 'Struggling to find reliable staff' },
      { id: 'high_turnover',    short: 'High turnover',          text: 'People leave and you\'re always training' },
      { id: 'scheduling_mess',  short: 'Scheduling chaos',       text: 'Last-minute changes, no-shows, overtime' },
      { id: 'training_gap',     short: 'Training takes forever', text: 'New staff take weeks to get up to speed' },
      { id: 'burnout',          short: 'Team burnout',           text: 'Core team is exhausted and stretched thin' },
      { id: 'other_staff',      short: 'Something else',         text: 'A different staffing challenge' },
    ],
    solution: {
      title: 'Staffing & Operations',
      summary: 'We\'ll look at where automation can reduce the load on your team without replacing the human touch guests expect.',
      approach: [
        'Audit which tasks drain the most staff time',
        'Identify repetitive work that could be automated',
        'Find quick wins that give your team breathing room',
      ],
      spec: [
        { k: 'time_audit', v: 'task breakdown' },
        { k: 'automation', v: 'candidate tasks' },
        { k: 'scheduling', v: 'current workflow' },
        { k: 'training', v: 'onboarding gaps' },
        { k: 'burnout', v: 'load distribution' },
        { k: 'quick_wins', v: 'immediate relief' },
      ],
    },
  },

  systems: {
    title: 'Systems & data',
    blurb: 'Software, reporting, integrations',
    points: [
      { id: 'too_many_tools',   short: 'Too many tools',         text: 'Juggling multiple systems that don\'t talk to each other' },
      { id: 'manual_reporting', short: 'Manual reports',         text: 'Pulling reports takes hours of copy-paste' },
      { id: 'data_silos',       short: 'Data stuck in silos',    text: 'Information trapped in different systems' },
      { id: 'cant_get_answers', short: 'Hard to get answers',    text: 'Simple questions require digging through spreadsheets' },
      { id: 'integration_hell', short: 'Integration problems',   text: 'Systems break or lose sync regularly' },
      { id: 'other_systems',    short: 'Something else',         text: 'A different systems challenge' },
    ],
    solution: {
      title: 'Systems & Reporting',
      summary: 'We\'ll map your current tech stack and identify where better connections or simpler workflows could save time.',
      approach: [
        'Inventory your current systems and how they connect',
        'Find the biggest time drains in your data workflow',
        'Prioritize integrations that would have real impact',
      ],
      spec: [
        { k: 'tech_stack', v: 'inventory map' },
        { k: 'data_flow', v: 'connection gaps' },
        { k: 'reporting', v: 'manual steps' },
        { k: 'integrations', v: 'priority list' },
        { k: 'silos', v: 'data trapped where' },
        { k: 'quick_answers', v: 'dashboard needs' },
      ],
    },
  },

  revenue: {
    title: 'Revenue & pricing',
    blurb: 'Rates, channels, reconciliation',
    points: [
      { id: 'pricing_manual',   short: 'Manual pricing',         text: 'Updating rates across channels is tedious' },
      { id: 'ota_reconcile',    short: 'OTA reconciliation',     text: 'Matching OTA payouts to bookings takes days' },
      { id: 'no_visibility',    short: 'No pricing visibility',  text: 'Hard to see what competitors are charging' },
      { id: 'commission_issues',short: 'Commission disputes',    text: 'OTA commissions don\'t match expectations' },
      { id: 'forecasting_gut',  short: 'Gut-feel forecasts',     text: 'Forecasting is guesswork, not data' },
      { id: 'other_revenue',    short: 'Something else',         text: 'A different revenue challenge' },
    ],
    solution: {
      title: 'Revenue Operations',
      summary: 'We\'ll look at your current pricing and channel workflow to find where automation or better visibility could help.',
      approach: [
        'Review your current pricing and distribution process',
        'Identify manual steps that could be automated',
        'Explore what data you\'re missing for better decisions',
      ],
      spec: [
        { k: 'pricing', v: 'update workflow' },
        { k: 'channels', v: 'distribution map' },
        { k: 'reconciliation', v: 'OTA process' },
        { k: 'visibility', v: 'competitor data' },
        { k: 'forecasting', v: 'current method' },
        { k: 'commissions', v: 'variance tracking' },
      ],
    },
  },

  ops: {
    title: 'Daily operations',
    blurb: 'Housekeeping, maintenance, coordination',
    points: [
      { id: 'hk_coordination',  short: 'Housekeeping chaos',     text: 'Room status unclear, turnovers rushed' },
      { id: 'maintenance_lost', short: 'Maintenance requests',   text: 'Issues get reported but lost in the shuffle' },
      { id: 'handover_gaps',    short: 'Shift handover gaps',    text: 'Information gets lost between shifts' },
      { id: 'guest_requests',   short: 'Guest requests slip',    text: 'Special requests fall through the cracks' },
      { id: 'inventory_blind',  short: 'Inventory guesswork',    text: 'Supplies run out unexpectedly' },
      { id: 'other_ops',        short: 'Something else',         text: 'A different operations challenge' },
    ],
    solution: {
      title: 'Operations Workflow',
      summary: 'We\'ll examine your daily operations to find bottlenecks and coordination gaps that technology could address.',
      approach: [
        'Walk through a typical day from first shift to last',
        'Identify where information gets lost or delayed',
        'Find practical improvements that fit your team\'s workflow',
      ],
      spec: [
        { k: 'housekeeping', v: 'status visibility' },
        { k: 'maintenance', v: 'request tracking' },
        { k: 'handovers', v: 'shift transitions' },
        { k: 'guest_requests', v: 'tracking gaps' },
        { k: 'inventory', v: 'supply visibility' },
        { k: 'coordination', v: 'team sync points' },
      ],
    },
  },

  // ============= SHORT-STAY SPECIFIC =============
  cleaning: {
    title: 'Cleaning & turnover',
    blurb: 'Cleaners, scheduling, quality',
    points: [
      { id: 'finding_cleaners', short: 'Finding cleaners',       text: 'Hard to find reliable cleaning crews' },
      { id: 'scheduling_gaps',  short: 'Schedule conflicts',     text: 'Double bookings or cleaners not showing up' },
      { id: 'quality_issues',   short: 'Quality inconsistent',   text: 'Some cleans are great, others not' },
      { id: 'same_day_stress',  short: 'Same-day turnovers',     text: 'Back-to-back bookings are stressful' },
      { id: 'communication',    short: 'Cleaner communication',  text: 'Hard to reach cleaners or get updates' },
      { id: 'other_cleaning',   short: 'Something else',         text: 'A different cleaning challenge' },
    ],
    solution: {
      title: 'Cleaning Operations',
      summary: 'We\'ll look at your cleaning workflow to find coordination gaps and ways to reduce the same-day scramble.',
      approach: [
        'Map your current cleaning coordination process',
        'Identify where communication breaks down',
        'Explore tools or workflows that could reduce chaos',
      ],
      spec: [
        { k: 'scheduling', v: 'booking sync' },
        { k: 'communication', v: 'cleaner updates' },
        { k: 'turnovers', v: 'same-day flow' },
        { k: 'quality', v: 'consistency checks' },
        { k: 'coordination', v: 'team assignment' },
        { k: 'visibility', v: 'status tracking' },
      ],
    },
  },

  // ============= RESTAURANT =============
  bookings_reviews: {
    title: 'Bookings & reviews',
    blurb: 'Reservations, no-shows, feedback',
    points: [
      { id: 'no_shows',         short: 'No-shows hurt',          text: 'Empty tables from people who don\'t turn up' },
      { id: 'review_scatter',   short: 'Reviews everywhere',     text: 'Reviews on Google, Yelp, TripAdvisor to manage' },
      { id: 'phone_bookings',   short: 'Phone interruptions',    text: 'Booking calls interrupt service' },
      { id: 'guest_history',    short: 'No guest memory',        text: 'Regulars treated like first-timers' },
      { id: 'waitlist_chaos',   short: 'Waitlist confusion',     text: 'Walk-ins and waitlist poorly managed' },
      { id: 'other_bookings',   short: 'Something else',         text: 'A different booking challenge' },
    ],
    solution: {
      title: 'Bookings & Guest Management',
      summary: 'We\'ll explore ways to reduce no-shows, manage reviews more efficiently, and remember your returning guests.',
      approach: [
        'Review your current reservation and no-show patterns',
        'Audit where review responses are falling behind',
        'Identify guest data you have but aren\'t using',
      ],
      spec: [
        { k: 'reservations', v: 'booking flow' },
        { k: 'no_shows', v: 'pattern analysis' },
        { k: 'reviews', v: 'response workflow' },
        { k: 'guest_memory', v: 'regular tracking' },
        { k: 'waitlist', v: 'walk-in process' },
        { k: 'feedback', v: 'collection method' },
      ],
    },
  },

  costs: {
    title: 'Cost management',
    blurb: 'Food costs, labor, margins',
    points: [
      { id: 'food_costs',       short: 'Food costs rising',      text: 'Ingredient costs eating into margins' },
      { id: 'labor_costs',      short: 'Labor costs high',       text: 'Wages and overtime straining budget' },
      { id: 'waste_unknown',    short: 'Waste invisible',        text: 'Don\'t know where food waste is happening' },
      { id: 'menu_pricing',     short: 'Menu pricing unclear',   text: 'Not sure if dishes are priced profitably' },
      { id: 'vendor_comparison',short: 'Vendor comparison',      text: 'Hard to compare supplier pricing' },
      { id: 'other_costs',      short: 'Something else',         text: 'A different cost challenge' },
    ],
    solution: {
      title: 'Cost & Margin Analysis',
      summary: 'We\'ll look at where your biggest cost leaks are and identify visibility gaps in your operations.',
      approach: [
        'Review your current cost tracking and reporting',
        'Identify blind spots in food cost and waste',
        'Find data you need but don\'t have today',
      ],
      spec: [
        { k: 'food_costs', v: 'tracking method' },
        { k: 'labor', v: 'cost visibility' },
        { k: 'waste', v: 'measurement gaps' },
        { k: 'menu_pricing', v: 'margin analysis' },
        { k: 'vendors', v: 'comparison process' },
        { k: 'reporting', v: 'current tools' },
      ],
    },
  },

  // ============= HOSPITALITY TECH =============
  cs: {
    title: 'Customer support',
    blurb: 'Tickets, onboarding, retention',
    points: [
      { id: 'same_questions',   short: 'Same questions',         text: 'Support answers the same things every day' },
      { id: 'slow_response',    short: 'Slow first response',    text: 'First response time is too slow' },
      { id: 'onboarding_slow',  short: 'Onboarding bottleneck',  text: 'Customer onboarding takes too long' },
      { id: 'churn_blind',      short: 'Churn surprises',        text: 'Customers leave without warning signs' },
      { id: 'docs_stale',       short: 'Docs outdated',          text: 'Help docs lag behind the product' },
      { id: 'other_cs',         short: 'Something else',         text: 'A different support challenge' },
    ],
    solution: {
      title: 'Customer Success',
      summary: 'We\'ll explore where AI could help your support team handle volume while keeping quality high.',
      approach: [
        'Analyze your most common support tickets',
        'Identify which questions could be auto-answered',
        'Find churn signals hiding in ticket patterns',
      ],
      spec: [
        { k: 'tickets', v: 'pattern analysis' },
        { k: 'automation', v: 'candidate FAQs' },
        { k: 'onboarding', v: 'bottleneck review' },
        { k: 'churn', v: 'signal detection' },
        { k: 'docs', v: 'update process' },
        { k: 'response_time', v: 'current metrics' },
      ],
    },
  },

  // ============= LUXURY PROPERTY =============
  concierge: {
    title: 'Guest services',
    blurb: 'Requests, preferences, coordination',
    points: [
      { id: 'request_volume',   short: 'Request overload',       text: 'Guest requests pile up faster than staff can handle' },
      { id: 'preference_lost',  short: 'Preferences forgotten',  text: 'Returning guests have to repeat everything' },
      { id: 'vendor_chaos',     short: 'Vendor coordination',    text: 'Chefs, drivers, services hard to coordinate' },
      { id: 'handover_loss',    short: 'Handover gaps',          text: 'Context lost when staff shift changes' },
      { id: 'privacy_concern',  short: 'Privacy concerns',       text: 'Guest data on tools we don\'t control' },
      { id: 'other_concierge',  short: 'Something else',         text: 'A different guest services challenge' },
    ],
    solution: {
      title: 'Guest Services',
      summary: 'We\'ll look at how to maintain high-touch service while managing complexity across properties and staff.',
      approach: [
        'Map your current guest request workflow',
        'Identify where guest preferences get lost',
        'Explore privacy-respecting ways to improve coordination',
      ],
      spec: [
        { k: 'requests', v: 'workflow map' },
        { k: 'preferences', v: 'memory system' },
        { k: 'vendors', v: 'coordination flow' },
        { k: 'handovers', v: 'shift context' },
        { k: 'privacy', v: 'data handling' },
        { k: 'high_touch', v: 'balance points' },
      ],
    },
  },

  owner_relations: {
    title: 'Owner management',
    blurb: 'Reporting, communication, expectations',
    points: [
      { id: 'report_grind',     short: 'Report assembly',        text: 'Owner reports take days to put together' },
      { id: 'expectations_gap', short: 'Expectation gaps',       text: 'Owners expect more than the market supports' },
      { id: 'revenue_opaque',   short: 'Revenue unclear',        text: 'Owners can\'t see where money comes from' },
      { id: 'maintenance_surprise', short: 'Maintenance surprises', text: 'Owners blindsided by repair costs' },
      { id: 'feedback_gap',     short: 'No feedback loop',       text: 'Guest feedback doesn\'t reach owners' },
      { id: 'other_owner',      short: 'Something else',         text: 'A different owner management challenge' },
    ],
    solution: {
      title: 'Owner Relations',
      summary: 'We\'ll explore ways to streamline owner communication and reporting while setting realistic expectations.',
      approach: [
        'Review your current owner reporting workflow',
        'Identify what information owners actually want',
        'Find opportunities to automate routine reports',
      ],
      spec: [
        { k: 'reporting', v: 'current process' },
        { k: 'expectations', v: 'gap analysis' },
        { k: 'revenue', v: 'transparency' },
        { k: 'maintenance', v: 'communication' },
        { k: 'feedback', v: 'loop design' },
        { k: 'automation', v: 'report candidates' },
      ],
    },
  },

  // ============= SPA & WELLNESS =============
  bookings_yield: {
    title: 'Bookings & capacity',
    blurb: 'Appointments, no-shows, utilization',
    points: [
      { id: 'empty_slots',      short: 'Empty off-peak slots',   text: 'Treatment rooms sit empty during slow times' },
      { id: 'no_shows_spa',     short: 'No-shows and late cancels', text: 'Last-minute cancellations hurt revenue' },
      { id: 'therapist_match',  short: 'Therapist matching',     text: 'Guest preferences not matched to staff skills' },
      { id: 'package_mess',     short: 'Package tracking',       text: 'Package redemptions are confusing to track' },
      { id: 'seasonal_swings',  short: 'Seasonal swings',        text: 'Summer busy, winter slow, cash flow uneven' },
      { id: 'other_bookings',   short: 'Something else',         text: 'A different booking challenge' },
    ],
    solution: {
      title: 'Booking & Capacity',
      summary: 'We\'ll look at your booking patterns to find ways to fill more slots and reduce cancellation impact.',
      approach: [
        'Analyze your booking and no-show patterns',
        'Identify your biggest capacity utilization gaps',
        'Explore pricing or policy changes that could help',
      ],
      spec: [
        { k: 'bookings', v: 'pattern review' },
        { k: 'no_shows', v: 'impact analysis' },
        { k: 'utilization', v: 'capacity gaps' },
        { k: 'therapist', v: 'matching logic' },
        { k: 'packages', v: 'tracking method' },
        { k: 'seasonality', v: 'demand curves' },
      ],
    },
  },

  // ============= EVENT VENUE =============
  event_sales: {
    title: 'Event inquiries',
    blurb: 'RFPs, proposals, follow-up',
    points: [
      { id: 'rfp_overload',     short: 'RFP pile-up',            text: 'Inquiries pile up and response times slip' },
      { id: 'proposal_manual',  short: 'Manual proposals',       text: 'Every proposal built from scratch' },
      { id: 'leads_go_cold',    short: 'Leads go cold',          text: 'Prospects go quiet waiting for follow-up' },
      { id: 'availability_blind',short: 'Availability confusion', text: 'Sales doesn\'t know real-time space availability' },
      { id: 'pricing_inconsistent', short: 'Pricing varies',     text: 'Different people quote different prices' },
      { id: 'other_sales',      short: 'Something else',         text: 'A different sales challenge' },
    ],
    solution: {
      title: 'Event Sales',
      summary: 'We\'ll explore ways to respond faster to inquiries and reduce the manual work in proposal creation.',
      approach: [
        'Review your current inquiry-to-booking workflow',
        'Identify bottlenecks in proposal creation',
        'Find quick wins for faster response times',
      ],
      spec: [
        { k: 'inquiries', v: 'response flow' },
        { k: 'proposals', v: 'creation process' },
        { k: 'follow_up', v: 'lead tracking' },
        { k: 'availability', v: 'visibility gaps' },
        { k: 'pricing', v: 'consistency check' },
        { k: 'templates', v: 'reuse potential' },
      ],
    },
  },

  event_ops: {
    title: 'Event execution',
    blurb: 'Coordination, delivery, follow-up',
    points: [
      { id: 'beo_chaos',        short: 'BEO confusion',          text: 'Event orders scattered across emails and docs' },
      { id: 'vendor_scramble',  short: 'Vendor scramble',        text: 'Last-minute vendor coordination is stressful' },
      { id: 'timeline_drift',   short: 'Timeline drift',         text: 'Event schedules drift without anyone catching it' },
      { id: 'setup_errors',     short: 'Setup mismatches',       text: 'Room setup doesn\'t match what was promised' },
      { id: 'post_event_delay', short: 'Slow follow-up',         text: 'Invoicing and feedback collection lags' },
      { id: 'other_event_ops',  short: 'Something else',         text: 'A different event execution challenge' },
    ],
    solution: {
      title: 'Event Operations',
      summary: 'We\'ll look at your event execution workflow to find coordination gaps and handoff problems.',
      approach: [
        'Walk through a recent event from booking to close-out',
        'Identify where communication breaks down',
        'Find practical improvements to your current process',
      ],
      spec: [
        { k: 'beo', v: 'order tracking' },
        { k: 'vendors', v: 'coordination flow' },
        { k: 'timeline', v: 'schedule mgmt' },
        { k: 'setup', v: 'verification' },
        { k: 'handoffs', v: 'team transition' },
        { k: 'follow_up', v: 'post-event process' },
      ],
    },
  },

  // ============= TOUR OPERATOR =============
  booking_ops: {
    title: 'Booking operations',
    blurb: 'Reservations, confirmations, changes',
    points: [
      { id: 'manual_confirm',   short: 'Manual confirmations',   text: 'Still sending confirmations by hand' },
      { id: 'changes_cascade',  short: 'Change cascades',        text: 'One booking change affects multiple suppliers' },
      { id: 'voucher_mess',     short: 'Voucher chaos',          text: 'Vouchers generated from different systems' },
      { id: 'supplier_lag',     short: 'Supplier delays',        text: 'Waiting on supplier confirmations slows everything' },
      { id: 'reconciliation',   short: 'Payment reconciliation', text: 'Matching payments to bookings is painful' },
      { id: 'other_booking',    short: 'Something else',         text: 'A different booking operations challenge' },
    ],
    solution: {
      title: 'Booking Operations',
      summary: 'We\'ll explore where your booking workflow has manual steps that could be streamlined or automated.',
      approach: [
        'Map your booking flow from inquiry to completion',
        'Identify where manual work creates delays',
        'Find high-impact automation opportunities',
      ],
      spec: [
        { k: 'confirmations', v: 'current process' },
        { k: 'changes', v: 'cascade handling' },
        { k: 'vouchers', v: 'generation flow' },
        { k: 'suppliers', v: 'confirmation lag' },
        { k: 'payments', v: 'reconciliation' },
        { k: 'automation', v: 'opportunities' },
      ],
    },
  },

  supplier_mgmt: {
    title: 'Supplier management',
    blurb: 'Contracts, rates, relationships',
    points: [
      { id: 'rate_tracking',    short: 'Rate tracking',          text: 'Contracted rates expire without anyone noticing' },
      { id: 'comparison_hard',  short: 'Comparison difficult',   text: 'Comparing supplier pricing requires spreadsheets' },
      { id: 'contracts_scattered', short: 'Contracts scattered', text: 'Contracts live in different folders and formats' },
      { id: 'quality_unknown',  short: 'Quality invisible',      text: 'Supplier quality issues not tracked systematically' },
      { id: 'comms_fragmented', short: 'Communication scattered', text: 'Supplier messages across email, WhatsApp, etc.' },
      { id: 'other_supplier',   short: 'Something else',         text: 'A different supplier management challenge' },
    ],
    solution: {
      title: 'Supplier Management',
      summary: 'We\'ll look at your supplier relationships to find better ways to track rates, contracts, and quality.',
      approach: [
        'Inventory your current supplier management process',
        'Identify where information gets lost or outdated',
        'Explore simple systems to centralize supplier data',
      ],
      spec: [
        { k: 'rates', v: 'tracking method' },
        { k: 'contracts', v: 'storage system' },
        { k: 'comparison', v: 'pricing review' },
        { k: 'quality', v: 'feedback loop' },
        { k: 'communication', v: 'channel map' },
        { k: 'centralization', v: 'data needs' },
      ],
    },
  },
};

// Map segments to relevant areas
const DIAG_SEGMENT_AREAS = {
  hotel:      ['guest_comms', 'staffing', 'systems', 'revenue', 'ops'],
  group:      ['guest_comms', 'staffing', 'systems', 'revenue', 'ops'],
  shortstay:  ['guest_comms', 'cleaning', 'systems', 'revenue', 'ops'],
  restaurant: ['bookings_reviews', 'costs', 'staffing', 'systems', 'ops'],
  techvendor: ['cs', 'systems', 'staffing'],
  villa:      ['concierge', 'owner_relations', 'staffing', 'systems', 'ops'],
  spa:        ['bookings_yield', 'staffing', 'guest_comms', 'systems'],
  events:     ['event_sales', 'event_ops', 'staffing', 'systems'],
  tour:       ['booking_ops', 'supplier_mgmt', 'systems', 'staffing'],
};

Object.assign(window, { DIAG_SEGMENTS, DIAG_AREAS, DIAG_SEGMENT_AREAS });
