BDP VHIU Project | Impact Summary :root { --dark-green: #296605; --medium-green: #4d821c; --pale-green: #bfdaa8; --lightest-green: #e8f4e0; --nhs-blue: #005eb8; --dark-blue: #003d7a; --warm-white: #fafdf8; --text-dark: #1a2e0a; --text-muted: #5a6b4a; }

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; }

body { font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif; background: var(--warm-white); color: var(--text-dark); line-height: 1.6; overflow-x: hidden; }

/* Navigation */ nav { position: fixed; top: 0; left: 0; right: 0; z-index: 1000; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(20px); border-bottom: 1px solid rgba(77, 130, 28, 0.1); padding: 1rem 2rem; display: flex; justify-content: space-between; align-items: center; transition: all 0.3s ease; }

nav.scrolled { box-shadow: 0 4px 30px rgba(41, 102, 5, 0.1); }

.nav-logo { display: flex; align-items: center; gap: 0.75rem; }

.nav-logo-icon { width: 45px; height: 45px; background: linear-gradient(135deg, var(--dark-green), var(--medium-green)); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; font-size: 0.9rem; }

.nav-logo-text { font-family: 'DM Serif Display', Georgia, serif; font-size: 1.1rem; color: var(--dark-green); }

.nav-links { display: flex; gap: 2rem; list-style: none; }

.nav-links a { text-decoration: none; color: var(--text-muted); font-size: 0.9rem; font-weight: 500; transition: color 0.3s ease; position: relative; }

.nav-links a::after { content: ''; position: absolute; bottom: -4px; left: 0; width: 0; height: 2px; background: var(--medium-green); transition: width 0.3s ease; }

.nav-links a:hover { color: var(--dark-green); }

.nav-links a:hover::after { width: 100%; }

/* Hero Section */ .hero { min-height: 100vh; background: linear-gradient(135deg, var(--dark-green) 0%, var(--medium-green) 50%, var(--pale-green) 100%); position: relative; display: flex; align-items: center; overflow: hidden; }

.hero::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); opacity: 0.5; }

.hero-content { max-width: 1400px; margin: 0 auto; padding: 8rem 4rem 4rem; display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; position: relative; z-index: 1; }

.hero-text h1 { font-family: 'DM Serif Display', Georgia, serif; font-size: clamp(2.5rem, 5vw, 4rem); color: white; margin-bottom: 0.5rem; line-height: 1.1; animation: fadeInUp 0.8s ease-out; }

.hero-text .subtitle { font-size: 1.5rem; color: rgba(255, 255, 255, 0.9); font-style: italic; margin-bottom: 2rem; animation: fadeInUp 0.8s ease-out 0.1s both; }

.hero-insight { background: rgba(255, 255, 255, 0.15); backdrop-filter: blur(10px); border-radius: 20px; padding: 2rem; border: 1px solid rgba(255, 255, 255, 0.2); animation: fadeInUp 0.8s ease-out 0.2s both; }

.hero-insight h2 { font-family: 'DM Serif Display', Georgia, serif; font-size: 1.3rem; color: white; margin-bottom: 1rem; }

.hero-insight p { color: rgba(255, 255, 255, 0.95); font-size: 1.05rem; line-height: 1.7; }

.hero-visual { display: flex; flex-direction: column; gap: 1.5rem; animation: fadeInRight 1s ease-out 0.3s both; }

.stat-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }

.stat-card { background: white; border-radius: 16px; padding: 1.5rem; text-align: center; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15); transform: translateY(0); transition: transform 0.3s ease, box-shadow 0.3s ease; }

.stat-card:hover { transform: translateY(-5px); box-shadow: 0 30px 80px rgba(0, 0, 0, 0.2); }

.stat-card .number { font-family: 'DM Serif Display', Georgia, serif; font-size: 2.5rem; color: var(--dark-green); line-height: 1; margin-bottom: 0.5rem; }

.stat-card .label { font-size: 0.85rem; color: var(--text-muted); font-weight: 500; }

.hero-tagline { text-align: center; color: white; font-size: 1.2rem; font-weight: 500; padding: 1rem 2rem; background: rgba(0, 0, 0, 0.2); border-radius: 100px; backdrop-filter: blur(5px); }

/* Section Styles */ section { padding: 6rem 4rem; max-width: 1400px; margin: 0 auto; }

.section-header { text-align: center; margin-bottom: 4rem; }

.section-header h2 { font-family: 'DM Serif Display', Georgia, serif; font-size: clamp(2rem, 4vw, 3rem); color: var(--dark-green); margin-bottom: 1rem; }

.section-header p { font-size: 1.15rem; color: var(--text-muted); max-width: 700px; margin: 0 auto; }

/* Understanding Data Section */ .data-section { background: var(--lightest-green); border-radius: 40px; margin: 2rem; padding: 4rem; }

.comparison-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; margin-top: 3rem; }

.comparison-card { background: white; border-radius: 24px; padding: 2.5rem; box-shadow: 0 10px 40px rgba(41, 102, 5, 0.08); position: relative; overflow: hidden; }

.comparison-card.headline { border: 2px solid #e0e0e0; }

.comparison-card.underlying { border: 2px solid var(--medium-green); background: linear-gradient(135deg, white 0%, var(--lightest-green) 100%); }

.comparison-card h3 { font-family: 'DM Serif Display', Georgia, serif; font-size: 1.4rem; margin-bottom: 0.5rem; }

.comparison-card.headline h3 { color: #666; }

.comparison-card.underlying h3 { color: var(--dark-green); }

.comparison-card .patient-count { font-size: 0.95rem; color: var(--text-muted); margin-bottom: 2rem; }

.metric-row { display: flex; justify-content: space-between; align-items: center; padding: 1rem 0; border-bottom: 1px solid rgba(0, 0, 0, 0.05); }

.metric-row:last-child { border-bottom: none; }

.metric-label { font-weight: 600; color: var(--text-dark); }

.metric-values { display: flex; align-items: center; gap: 1rem; }

.metric-before, .metric-after { padding: 0.5rem 1rem; border-radius: 8px; font-weight: 600; }

.metric-before { background: #f5f5f5; color: #666; }

.metric-after { background: var(--pale-green); color: var(--dark-green); }

.metric-after.negative { background: #ffe5e5; color: #c00; }

.metric-change { font-size: 0.85rem; font-weight: 700; }

.metric-change.positive { color: var(--dark-green); }

.metric-change.neutral { color: #999; }

.arrow { color: var(--medium-green); font-size: 1.5rem; }

.comparison-verdict { margin-top: 1.5rem; padding: 1rem; border-radius: 12px; text-align: center; font-weight: 600; }

.comparison-card.headline .comparison-verdict { background: #f5f5f5; color: #888; }

.comparison-card.underlying .comparison-verdict { background: var(--dark-green); color: white; }

.outlier-note { background: white; border-left: 4px solid var(--nhs-blue); padding: 1.5rem 2rem; margin-top: 2rem; border-radius: 0 12px 12px 0; box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05); }

.outlier-note strong { color: var(--nhs-blue); }

/* Success Section */ .success-section { background: white; }

.success-content { display: grid; grid-template-columns: 1.2fr 1fr; gap: 4rem; align-items: start; }

.trajectory-chart { background: linear-gradient(180deg, var(--lightest-green) 0%, white 100%); border-radius: 24px; padding: 2.5rem; position: relative; }

.trajectory-chart h3 { font-family: 'DM Serif Display', Georgia, serif; font-size: 1.5rem; color: var(--dark-green); margin-bottom: 2rem; }

.chart-container { height: 300px; position: relative; margin: 2rem 0; }

.chart-svg { width: 100%; height: 100%; }

.chart-legend { display: flex; gap: 2rem; justify-content: center; margin-top: 1rem; }

.legend-item { display: flex; align-items: center; gap: 0.5rem; font-size: 0.9rem; }

.legend-dot { width: 12px; height: 12px; border-radius: 50%; }

.legend-dot.expected { background: #999; }

.legend-dot.actual { background: var(--medium-green); }

.key-finding { background: white; border-radius: 24px; padding: 2.5rem; box-shadow: 0 15px 50px rgba(41, 102, 5, 0.1); }

.key-finding h3 { font-family: 'DM Serif Display', Georgia, serif; font-size: 1.3rem; color: var(--dark-green); margin-bottom: 1.5rem; display: flex; align-items: center; gap: 0.75rem; }

.key-finding h3::before { content: '★'; color: var(--medium-green); }

.finding-highlight { background: linear-gradient(135deg, var(--dark-green), var(--medium-green)); color: white; padding: 2rem; border-radius: 16px; margin: 1.5rem 0; }

.finding-highlight .big-number { font-family: 'DM Serif Display', Georgia, serif; font-size: 3.5rem; line-height: 1; }

.finding-highlight .description { font-size: 1.1rem; margin-top: 0.5rem; opacity: 0.95; }

.swing-stat { display: flex; align-items: center; gap: 1rem; padding: 1rem; background: var(--lightest-green); border-radius: 12px; margin-top: 1rem; }

.swing-stat .icon { font-size: 2rem; }

.swing-stat .text { font-size: 0.95rem; color: var(--text-dark); }

.swing-stat .text strong { color: var(--dark-green); }

/* Outcomes Grid */ .outcomes-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2rem; margin-top: 3rem; }

.outcome-card { background: white; border-radius: 24px; padding: 2rem; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.06); text-align: center; }

.outcome-card h4 { font-family: 'DM Serif Display', Georgia, serif; font-size: 1.2rem; color: var(--dark-green); margin-bottom: 1.5rem; }

.donut-chart { width: 180px; height: 180px; margin: 0 auto 1.5rem; position: relative; }

.donut-chart svg { transform: rotate(-90deg); }

.donut-chart .center-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; }

.donut-chart .percentage { font-family: 'DM Serif Display', Georgia, serif; font-size: 2.5rem; color: var(--dark-green); line-height: 1; }

.donut-chart .label { font-size: 0.8rem; color: var(--text-muted); }

.outcome-detail { font-size: 0.9rem; color: var(--text-muted); padding: 0.75rem; background: var(--lightest-green); border-radius: 8px; }

/* Financial Section */ .financial-section { background: linear-gradient(180deg, var(--dark-green) 0%, #1a4a02 100%); color: white; border-radius: 40px; margin: 2rem; position: relative; overflow: hidden; }

.financial-section::before { content: ''; position: absolute; top: 0; right: 0; width: 50%; height: 100%; background: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='50' cy='50' r='40' fill='none' stroke='%23ffffff' stroke-opacity='0.05' stroke-width='1'/%3E%3C/svg%3E"); opacity: 0.5; }

.financial-section .section-header h2 { color: white; }

.financial-section .section-header p { color: rgba(255, 255, 255, 0.8); }

.financial-flow { display: flex; justify-content: center; align-items: center; gap: 2rem; margin: 3rem 0; flex-wrap: wrap; position: relative; z-index: 1; }

.financial-box { padding: 2rem 3rem; border-radius: 20px; text-align: center; min-width: 200px; }

.financial-box.investment { background: rgba(255, 255, 255, 0.1); border: 2px solid rgba(255, 255, 255, 0.3); }

.financial-box.savings { background: rgba(255, 255, 255, 0.15); border: 2px solid rgba(255, 255, 255, 0.4); }

.financial-box.benefit { background: white; color: var(--dark-green); transform: scale(1.1); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); }

.financial-box .label { font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 0.5rem; opacity: 0.9; }

.financial-box .amount { font-family: 'DM Serif Display', Georgia, serif; font-size: 2.5rem; line-height: 1; }

.financial-box.benefit .label { color: var(--medium-green); }

.financial-arrow { font-size: 2rem; color: rgba(255, 255, 255, 0.5); }

.roi-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; margin-top: 3rem; position: relative; z-index: 1; }

.roi-stat { text-align: center; padding: 2rem; background: rgba(255, 255, 255, 0.1); border-radius: 20px; backdrop-filter: blur(10px); }

.roi-stat .icon { font-size: 2.5rem; margin-bottom: 1rem; }

.roi-stat .value { font-family: 'DM Serif Display', Georgia, serif; font-size: 3rem; color: var(--pale-green); line-height: 1; }

.roi-stat .desc { font-size: 0.95rem; margin-top: 0.5rem; opacity: 0.9; }

.what-counted { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; margin-top: 3rem; position: relative; z-index: 1; }

.counted-box { padding: 2rem; border-radius: 20px; }

.counted-box.yes { background: rgba(255, 255, 255, 0.1); }

.counted-box.no { background: rgba(0, 0, 0, 0.2); }

.counted-box h4 { font-family: 'DM Serif Display', Georgia, serif; font-size: 1.2rem; margin-bottom: 1rem; display: flex; align-items: center; gap: 0.5rem; }

.counted-box ul { list-style: none; }

.counted-box li { padding: 0.5rem 0; font-size: 0.95rem; opacity: 0.9; display: flex; align-items: center; gap: 0.5rem; }

.counted-box li::before { content: '•'; color: var(--pale-green); }

/* Ask Section */ .ask-section { background: var(--lightest-green); border-radius: 40px; margin: 2rem; }

.ask-highlights { display: flex; justify-content: center; gap: 1rem; flex-wrap: wrap; margin-bottom: 3rem; }

.highlight-pill { display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1.5rem; background: white; border-radius: 100px; font-weight: 500; color: var(--dark-green); box-shadow: 0 4px 15px rgba(41, 102, 5, 0.1); }

.highlight-pill .check { color: var(--medium-green); font-weight: 700; }

.capacity-comparison { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; }

.model-card { background: white; border-radius: 24px; padding: 2.5rem; position: relative; overflow: hidden; }

.model-card.current { border: 2px solid #ddd; }

.model-card.proposed { border: 2px solid var(--medium-green); box-shadow: 0 20px 60px rgba(41, 102, 5, 0.15); }

.model-card.proposed::before { content: 'RECOMMENDED'; position: absolute; top: 1rem; right: -2rem; background: var(--medium-green); color: white; padding: 0.25rem 3rem; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.1em; transform: rotate(45deg); }

.model-card h3 { font-family: 'DM Serif Display', Georgia, serif; font-size: 1.4rem; margin-bottom: 1.5rem; }

.model-card.current h3 { color: #666; }

.model-card.proposed h3 { color: var(--dark-green); }

.model-diagram { display: flex; flex-direction: column; gap: 1rem; margin: 1.5rem 0; }

.diagram-row { display: flex; gap: 0.5rem; flex-wrap: wrap; }

.diagram-item { padding: 0.5rem 1rem; border-radius: 8px; font-size: 0.85rem; font-weight: 500; }

.diagram-item.gp { background: var(--nhs-blue); color: white; }

.diagram-item.task { background: #f0f0f0; color: #666; }

.diagram-item.support { background: var(--pale-green); color: var(--dark-green); }

.model-outcome { padding: 1rem; border-radius: 12px; text-align: center; font-weight: 600; margin-top: 1.5rem; }

.model-card.current .model-outcome { background: #f5f5f5; color: #888; }

.model-card.proposed .model-outcome { background: var(--dark-green); color: white; }

.supporting-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: 2rem; padding: 1.5rem; background: var(--lightest-green); border-radius: 16px; }

.support-stat { text-align: center; }

.support-stat .value { font-family: 'DM Serif Display', Georgia, serif; font-size: 1.5rem; color: var(--dark-green); }

.support-stat .label { font-size: 0.8rem; color: var(--text-muted); }

/* Footer */ footer { background: var(--dark-green); color: white; padding: 3rem 4rem; text-align: center; }

footer .logo-text { font-family: 'DM Serif Display', Georgia, serif; font-size: 1.5rem; margin-bottom: 1rem; }

footer p { opacity: 0.8; font-size: 0.9rem; }

/* Animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }

@keyframes fadeInRight { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } }

.animate-on-scroll { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease, transform 0.6s ease; }

.animate-on-scroll.visible { opacity: 1; transform: translateY(0); }

/* Counter animation */ .count-up { transition: all 0.3s ease; }

/* Responsive */ @media (max-width: 1024px) { .hero-content { grid-template-columns: 1fr; padding: 6rem 2rem 3rem; }

.comparison-grid, .success-content, .capacity-comparison, .what-counted { grid-template-columns: 1fr; }

.financial-flow { flex-direction: column; }

.financial-arrow { transform: rotate(90deg); }

section { padding: 4rem 2rem; }

.data-section, .financial-section, .ask-section { margin: 1rem; padding: 2rem; border-radius: 24px; }

.nav-links { display: none; }

.roi-stats { grid-template-columns: 1fr; }

.outcomes-grid { grid-template-columns: 1fr; } }

@media (max-width: 600px) { .stat-cards { grid-template-columns: 1fr; }

.supporting-stats { grid-template-columns: 1fr; } }


BDP VHIU Project

Impact Summary

The Core Insight

For frail elderly patients with multiple conditions, standing still represents success. National data shows this population typically experiences 8-12% annual increases in emergency care use. Our 18% reduction isn't just an improvement—it's a reversal of expected decline.

85+
Average Age

4-6
Long Term Conditions

Top 2%
Risk Stratification

Proactive, personalised support for BDP's most complex patients

Understanding the Data

Early in the programme, the data showed a clear reduction in A&E attendances and emergency admissions. Over time, headline figures appeared to flatten—but the underlying story reveals sustained impact.

The Outlier Effect

Headline View

All 137 Patients

A&E Attendances

Before: 248

After: 251
(+1%)

Emergency Admissions

Before: 115

After: 107
(-7%)

Appears flat — minimal improvement

Underlying Picture

132 Patients (excluding 5 with unavoidable hospital use)

A&E Attendances

Before: 217

After: 177
(-18%)

Emergency Admissions

Before: 92

After: 75
(-18%)

Clear sustained reduction ✓

5 patients with active cancer and similar conditions required clinically appropriate hospital care. Their activity is tracked separately — not hidden. Their hospital use was appropriate and unavoidable, reflecting the reality of caring for people with advanced illness rather than failure of community care.

Why Standing Still Means Success

Traditional healthcare metrics assume improvement means reduction. But for frail elderly patients with progressive conditions, the natural trajectory is increased emergency care use year-on-year.

Why 'Standing Still' Represents Success

High Low Emergency Activity

0 6 12 months

Expected (8-12% increase)

BDP Cohort (18% reduction)

Programme Impact

Expected trajectory (without intervention)

Actual BDP HIU cohort

Key Finding

18%
reduction in both A&E attendances and emergency admissions

Against an expected 8-12% annual increase, the BDP HIU cohort achieved an 18% reduction. This represents a swing of 26-30 percentage points against the expected trajectory.

📊
26-30 percentage points better than expected trajectory

Patient Outcomes: 132 Patients Over 12 Months

A&E Attendances

64%
stable or improved

60% reduced or no change (79 patients)
34% increased (44 patients)

Emergency Admissions

76%
stable or improved

76% reduced or no change (93 patients)
24% increased (30 patients)

KEY TAKEAWAY: 3 in 4 patients showed reduced or stable emergency admissions. In a population where decline is expected, maintaining stability is a meaningful clinical outcome. Reduction is exceptional.

Programme Value: The Financial Case

Beyond clinical outcomes, the programme demonstrates clear financial value using NHS reference costs and conservative estimates.

Investment
£46,015

Gross Savings
£96,452

Net Benefit
£50,437

💷
£2.10
return for every £1 invested

🏥
40
A&E attendances avoided

🛏️
17
emergency admissions avoided

✓ What's Counted

  • A&E attendances avoided (£165 each)
  • Emergency admissions avoided (£2,300 each)
  • Based on NHS National Tariff reference costs

✗ What's NOT Counted

  • Reduced GP appointments
  • Fewer 111/999 calls
  • Medication savings from deprescribing
  • Improved quality of life

This suggests the model is not only clinically valuable but also cost-effective, despite working at the most complex end of the spectrum.

The Ask: Continued Investment

The model works — 18% reduction, £2.10 return per £1
Context matters — stability is success in advanced frailty
Investment unlocks capacity — team support could double throughput

Unlocking Capacity: The Case for Team-Based HIU Care

Current Model

Dr King — 4 sessions/week
Initial assessments (45-60 mins)
Follow-up calls
Care coordination
MDT liaison

121 patients seen in 8 months
Too many follow-ups means less new patient reviews

Proposed Model with Support Staff

Dr King & Team
Initial Complex Assessments
Clinical Decisions
Follow-up contacts
Social prescribing links
Telephone check-ins

Potential to double new patient assessments
Every follow-up handled by support staff = one more complex patient Dr King can assess

3.1
Average follow-up contacts per patient

375
121 patients × 3.1 = total follow-up contacts

60+
Hours of GP time freed annually

Continued investment, particularly with stronger multidisciplinary support around the GP role, is likely to increase both clinical benefit and system value over time. Expanding the team would enable more interventions, increase capacity, and result in greater overall savings for the system.

BDP Care Community

Bollington, Disley and Poynton Care Community — December 2025

// Navbar scroll effect const navbar = document.getElementById('navbar'); window.addEventListener('scroll', () => { if (window.scrollY > 50) { navbar.classList.add('scrolled'); } else { navbar.classList.remove('scrolled'); } });

// Scroll animations const observerOptions = { threshold: 0.1, rootMargin: '0px 0px -50px 0px' };

const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('visible'); } }); }, observerOptions);

document.querySelectorAll('.animate-on-scroll').forEach(el => { observer.observe(el); });

// Smooth scroll for nav links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); const target = document.querySelector(this.getAttribute('href')); if (target) { target.scrollIntoView({ behavior: 'smooth', block: 'start' }); } }); });

// Counter animation for statistics function animateCounter(element, target, suffix = '') { let current = 0; const increment = target / 50; const timer = setInterval(() => { current += increment; if (current >= target) { element.textContent = target + suffix; clearInterval(timer); } else { element.textContent = Math.floor(current) + suffix; } }, 30); }

// Trigger counter animations when visible const counterObserver = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting && !entry.target.classList.contains('counted')) { entry.target.classList.add('counted'); const target = parseInt(entry.target.dataset.target); if (target) { animateCounter(entry.target, target, '+'); } } }); }, { threshold: 0.5 });

document.querySelectorAll('.count-up').forEach(el => { counterObserver.observe(el); });