HEX
Server: nginx/1.24.0
System: Linux 0c1023d6c65e 6.8.0-137-generic #137-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 17 20:28:23 UTC 2026 x86_64
User: root (0)
PHP: 8.3.33
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/mu-plugins/ethnic-mobile-app-development-page.php
<?php
/**
 * Plugin Name: Ethnic Mobile App Development Page
 * Description: Creates and renders the Mobile App Development sub-service page under App Development.
 * Version: 1.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

if ( ! function_exists( 'ethnic_mobile_app_page_parent_id' ) ) {
	function ethnic_mobile_app_page_parent_id() {
		static $parent_id = null;

		if ( null !== $parent_id ) {
			return $parent_id;
		}

		$page = get_page_by_path( 'services/app-development' );

		if ( $page instanceof WP_Post ) {
			$parent_id = (int) $page->ID;
		} else {
			$fallback = get_page_by_path( 'app-development' );
			$parent_id = $fallback instanceof WP_Post ? (int) $fallback->ID : 0;
		}

		return $parent_id;
	}
}

if ( ! function_exists( 'ethnic_mobile_app_page_get_target_page' ) ) {
	function ethnic_mobile_app_page_get_target_page() {
		static $page = false;

		if ( false !== $page ) {
			return $page instanceof WP_Post ? $page : null;
		}

		$page = get_page_by_path( 'services/app-development/mobile-app-development' );

		if ( ! ( $page instanceof WP_Post ) ) {
			$fallback = get_page_by_path( 'mobile-app-development' );

			if ( $fallback instanceof WP_Post && (int) $fallback->post_parent === ethnic_mobile_app_page_parent_id() ) {
				$page = $fallback;
			}
		}

		return $page instanceof WP_Post ? $page : null;
	}
}

if ( ! function_exists( 'ethnic_mobile_app_page_ensure_page' ) ) {
	function ethnic_mobile_app_page_ensure_page() {
		static $did_run = false;

		if ( $did_run ) {
			return;
		}

		$did_run   = true;
		$parent_id = ethnic_mobile_app_page_parent_id();

		if ( ! $parent_id ) {
			return;
		}

		$postarr = array(
			'post_type'      => 'page',
			'post_title'     => 'Mobile App Development',
			'post_name'      => 'mobile-app-development',
			'post_parent'    => $parent_id,
			'post_status'    => 'publish',
			'post_content'   => '',
			'comment_status' => 'closed',
			'ping_status'    => 'closed',
		);

		$page = get_page_by_path( 'services/app-development/mobile-app-development' );

		if ( $page instanceof WP_Post ) {
			$needs_update = 'Mobile App Development' !== $page->post_title
				|| (int) $page->post_parent !== $parent_id
				|| 'publish' !== $page->post_status;

			if ( $needs_update ) {
				wp_update_post(
					array_merge(
						$postarr,
						array(
							'ID' => (int) $page->ID,
						)
					)
				);
				clean_post_cache( (int) $page->ID );
			}

			return;
		}

		$fallback = get_page_by_path( 'mobile-app-development' );

		if ( $fallback instanceof WP_Post ) {
			wp_update_post(
				array_merge(
					$postarr,
					array(
						'ID' => (int) $fallback->ID,
					)
				)
			);
			clean_post_cache( (int) $fallback->ID );
			return;
		}

		wp_insert_post( $postarr );
	}

	add_action( 'init', 'ethnic_mobile_app_page_ensure_page', 5 );
}

if ( ! function_exists( 'ethnic_mobile_app_page_is_target' ) ) {
	function ethnic_mobile_app_page_is_target() {
		if ( is_admin() ) {
			return false;
		}

		$page = ethnic_mobile_app_page_get_target_page();

		if ( ! ( $page instanceof WP_Post ) ) {
			return false;
		}

		return (int) get_queried_object_id() === (int) $page->ID || is_page( (int) $page->ID );
	}
}

if ( ! function_exists( 'ethnic_mobile_app_page_url' ) ) {
	function ethnic_mobile_app_page_url( $path ) {
		return home_url( '/' . ltrim( (string) $path, '/' ) . '/' );
	}
}

if ( ! function_exists( 'ethnic_mobile_app_page_contact_url' ) ) {
	function ethnic_mobile_app_page_contact_url( $args = array() ) {
		return ethnic_consultation_route_contact_url( $args, ethnic_mobile_app_page_url( 'contact-us' ) );
	}
}

if ( ! function_exists( 'ethnic_mobile_app_page_case_studies_url' ) ) {
	function ethnic_mobile_app_page_case_studies_url() {
		return function_exists( 'ethnic_case_studies_archive_url' ) ? ethnic_case_studies_archive_url() : ethnic_mobile_app_page_url( 'case-studies' );
	}
}

if ( ! function_exists( 'ethnic_mobile_app_page_heading' ) ) {
	function ethnic_mobile_app_page_heading( $eyebrow, $title, $copy = '' ) {
		ob_start();
		?>
		<div class="ethnic-mobile-app-heading">
			<?php if ( $eyebrow ) : ?>
				<p class="ethnic-mobile-app-heading__eyebrow"><?php echo esc_html( $eyebrow ); ?></p>
			<?php endif; ?>
			<h2 class="ethnic-mobile-app-heading__title"><?php echo esc_html( $title ); ?></h2>
			<?php if ( $copy ) : ?>
				<p class="ethnic-mobile-app-heading__copy"><?php echo esc_html( $copy ); ?></p>
			<?php endif; ?>
		</div>
		<?php

		return ob_get_clean();
	}
}

if ( ! function_exists( 'ethnic_mobile_app_page_icon' ) ) {
	function ethnic_mobile_app_page_icon( $icon ) {
		ob_start();

		switch ( $icon ) {
			case 'mobile':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="7" y="2.8" width="10" height="18.4" rx="2.3" />
					<path d="M10 6.2h4" />
					<circle cx="12" cy="18" r="0.9" />
				</svg>
				<?php
				break;
			case 'native':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="4" y="4" width="16" height="16" rx="3" />
					<path d="M8 12h8" />
					<path d="M12 8v8" />
				</svg>
				<?php
				break;
			case 'cross':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="3.5" y="5" width="8.4" height="13.5" rx="1.8" />
					<rect x="13" y="7.2" width="7.5" height="9.2" rx="1.4" />
					<path d="M12 11.8h1" />
				</svg>
				<?php
				break;
			case 'custom':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M5 7.5h14" />
					<path d="M5 12h10" />
					<path d="M5 16.5h7" />
					<path d="M16 10l3 3-4.5 4.5H12v-2.6z" />
				</svg>
				<?php
				break;
			case 'business':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="3.5" y="7" width="17" height="11" rx="2" />
					<path d="M9 7V5.6A1.6 1.6 0 0 1 10.6 4h2.8A1.6 1.6 0 0 1 15 5.6V7" />
					<path d="M3.8 11.5h16.4" />
				</svg>
				<?php
				break;
			case 'architecture':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="4" y="4" width="6" height="6" rx="1.4" />
					<rect x="14" y="4" width="6" height="6" rx="1.4" />
					<rect x="9" y="14" width="6" height="6" rx="1.4" />
					<path d="M10 7h4" />
					<path d="M12 10v4" />
				</svg>
				<?php
				break;
			case 'support':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M7.5 18.2a3 3 0 0 1-3-3v-3.4a7.5 7.5 0 1 1 15 0v3.4a3 3 0 0 1-3 3" />
					<path d="M7.5 17.8v1.2A2 2 0 0 0 9.5 21h5" />
					<rect x="17" y="10.8" width="2.5" height="5.8" rx="1.1" />
					<rect x="4.5" y="10.8" width="2.5" height="5.8" rx="1.1" />
				</svg>
				<?php
				break;
			case 'ecommerce':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M5 8.2h14l-1.2 8.3H6.2L5 8.2z" />
					<path d="M8 8.2V6.5A2.3 2.3 0 0 1 10.3 4h3.4A2.3 2.3 0 0 1 16 6.5v1.7" />
				</svg>
				<?php
				break;
			case 'booking':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="4" y="5" width="16" height="14" rx="2" />
					<path d="M8 3.8v2.4" />
					<path d="M16 3.8v2.4" />
					<path d="M4 9.5h16" />
					<path d="M8 13l1.7 1.7 3.8-4" />
				</svg>
				<?php
				break;
			case 'ondemand':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M5 18.5h14" />
					<path d="M7 14.5l4-4 3 3 4-5" />
					<path d="M14 8h4v4" />
				</svg>
				<?php
				break;
			case 'social':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M6 6.2h12a2.2 2.2 0 0 1 2.2 2.2v5.5A2.2 2.2 0 0 1 18 16.1H10l-4.5 3v-3H6a2.2 2.2 0 0 1-2.2-2.2V8.4A2.2 2.2 0 0 1 6 6.2z" />
				</svg>
				<?php
				break;
			case 'education':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M12 5l8 4.2-8 4.2-8-4.2z" />
					<path d="M7 11.8v3.6c0 1.4 2.2 2.6 5 2.6s5-1.2 5-2.6v-3.6" />
				</svg>
				<?php
				break;
			case 'health':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M12 20.2c-5.7-3.5-8.3-6.3-8.3-10a4.2 4.2 0 0 1 7.1-3.1L12 8.3l1.2-1.2a4.2 4.2 0 0 1 7.1 3.1c0 3.7-2.6 6.5-8.3 10z" />
					<path d="M12 9v5.7" />
					<path d="M9.2 11.8h5.6" />
				</svg>
				<?php
				break;
			case 'logistics':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M3.5 8.2h10.5v7.2H3.5z" />
					<path d="M14 10h3.3l3.2 3.2v2.2H14z" />
					<circle cx="7.3" cy="17.4" r="1.6" />
					<circle cx="17.5" cy="17.4" r="1.6" />
				</svg>
				<?php
				break;
			case 'internal':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="4" y="4" width="16" height="16" rx="2.5" />
					<path d="M8 8h8" />
					<path d="M8 12h4" />
					<path d="M8 16h6" />
				</svg>
				<?php
				break;
			case 'marketplace':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M4 7.5h16l-1.4 8.3H7.2L5.8 7.5z" />
					<circle cx="9" cy="18.2" r="1.2" />
					<circle cx="16" cy="18.2" r="1.2" />
				</svg>
				<?php
				break;
			case 'subscription':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="4" y="6" width="16" height="12" rx="2" />
					<path d="M7.5 10.5h9" />
					<path d="M9 14h6" />
				</svg>
				<?php
				break;
			case 'check':
			default:
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M7.5 12.3l3 3 6-6.3" />
				</svg>
				<?php
				break;
		}

		return ob_get_clean();
	}
}

if ( ! function_exists( 'ethnic_mobile_app_page_render' ) ) {
	function ethnic_mobile_app_page_render() {
		$hero_points = array(
			'iOS and Android app development',
			'Native and cross-platform solutions',
			'From product idea to launch and support',
		);

		$overview_features = array(
			array(
				'icon'  => 'custom',
				'title' => 'Custom Mobile Solutions',
				'text'  => 'We build tailored mobile applications aligned to your workflows, users, and revenue model.',
			),
			array(
				'icon'  => 'business',
				'title' => 'Business-Driven Development',
				'text'  => 'Delivery is anchored on outcomes: adoption, operational clarity, and measurable growth.',
			),
			array(
				'icon'  => 'architecture',
				'title' => 'Scalable App Architecture',
				'text'  => 'We plan for performance, long-term maintainability, and future feature expansion.',
			),
			array(
				'icon'  => 'support',
				'title' => 'Launch & Support',
				'text'  => 'We stay involved through release readiness, monitoring, and post-launch improvements.',
			),
		);

		$app_types = array(
			array(
				'icon'  => 'ecommerce',
				'title' => 'eCommerce Apps',
				'text'  => 'Mobile storefronts, product discovery, and conversion-focused commerce experiences.',
			),
			array(
				'icon'  => 'booking',
				'title' => 'Booking & Appointment Apps',
				'text'  => 'Scheduling, confirmations, and service workflows built around user convenience.',
			),
			array(
				'icon'  => 'ondemand',
				'title' => 'On-Demand Service Apps',
				'text'  => 'Real-time service delivery, dispatching, and customer coordination.',
			),
			array(
				'icon'  => 'social',
				'title' => 'Social / Community Apps',
				'text'  => 'Engagement, messaging, and community features that keep users active.',
			),
			array(
				'icon'  => 'education',
				'title' => 'Education Apps',
				'text'  => 'Learning, training, and onboarding apps for teams, students, or customers.',
			),
			array(
				'icon'  => 'health',
				'title' => 'Healthcare Apps',
				'text'  => 'Patient engagement, intake flows, and care coordination experiences.',
			),
			array(
				'icon'  => 'logistics',
				'title' => 'Logistics / Tracking Apps',
				'text'  => 'Shipment visibility, delivery updates, and field team coordination.',
			),
			array(
				'icon'  => 'internal',
				'title' => 'Internal Business Apps',
				'text'  => 'Operations, reporting, and internal tools that reduce manual overhead.',
			),
			array(
				'icon'  => 'marketplace',
				'title' => 'Marketplace Apps',
				'text'  => 'Multi-sided platforms connecting vendors, customers, and service providers.',
			),
			array(
				'icon'  => 'subscription',
				'title' => 'Subscription-Based Apps',
				'text'  => 'Recurring revenue platforms with retention and lifecycle management.',
			),
		);

		$flow_steps = array(
			array(
				'title' => 'Discovery & Requirements',
				'text'  => 'We gather business goals, user needs, and the technical requirements for the product.',
			),
			array(
				'title' => 'Product Strategy',
				'text'  => 'We define success metrics, feature priorities, and roadmap alignment.',
			),
			array(
				'title' => 'Wireframing & UX Planning',
				'text'  => 'We map flows and interactions so the product is intuitive and outcome-driven.',
			),
			array(
				'title' => 'UI Design',
				'text'  => 'We create a modern, consistent UI tailored to your brand and user expectations.',
			),
			array(
				'title' => 'App Development',
				'text'  => 'Our engineers deliver the app in focused sprints with clear QA touchpoints.',
			),
			array(
				'title' => 'API / Backend Integration',
				'text'  => 'We connect the app to data systems, services, and operational platforms.',
			),
			array(
				'title' => 'QA & Review',
				'text'  => 'We validate stability, usability, and performance before release.',
			),
		);

		$testing_checks = array(
			'Device compatibility testing',
			'Performance optimization',
			'UI consistency checks',
			'API validation',
			'App Store / Play Store readiness',
			'Release support',
		);

		$support_highlights = array(
			array(
				'icon'  => 'support',
				'title' => 'Ongoing Maintenance',
				'text'  => 'We keep your mobile app stable, secure, and updated after launch.',
			),
			array(
				'icon'  => 'custom',
				'title' => 'Feature Enhancements',
				'text'  => 'We extend your product roadmap with new features and workflows.',
			),
			array(
				'icon'  => 'architecture',
				'title' => 'Performance Optimization',
				'text'  => 'We monitor and tune performance to keep the app fast and reliable.',
			),
			array(
				'icon'  => 'business',
				'title' => 'Version & Security Updates',
				'text'  => 'We keep pace with OS changes, security patches, and compliance needs.',
			),
		);

		$case_studies = ethnic_shared_service_case_studies(
			array(
				array(
					'industry'     => 'Retail',
					'title'        => 'Mobile Commerce Experience Upgrade',
					'summary'      => 'Rebuilt the mobile buying journey to improve conversion, navigation, and catalog discovery.',
					'technologies' => array( 'Mobile Apps', 'Retail', 'Checkout UX' ),
				),
				array(
					'industry'     => 'Logistics',
					'title'        => 'Field Operations Mobile Suite',
					'summary'      => 'Delivered a mobile workflow app that improved dispatch visibility and team coordination.',
					'technologies' => array( 'Field Mobility', 'Workflow', 'Operations' ),
				),
				array(
					'industry'     => 'Healthcare',
					'title'        => 'Patient Engagement App',
					'summary'      => 'Built a patient-facing mobile app that simplified intake, scheduling, and ongoing support.',
					'technologies' => array( 'Patient App', 'Scheduling', 'Support' ),
				),
			),
			3
		);

		ob_start();
		?>
		<div class="ethnic-mobile-app-page" data-ethnic-mobile-app-page>
			<section class="ethnic-mobile-app-section ethnic-mobile-app-section--hero">
				<div class="ethnic-mobile-app-shell ethnic-mobile-app-hero">
					<div class="ethnic-mobile-app-hero__content">
						<p class="ethnic-mobile-app-kicker">Mobile App Development</p>
						<h1 class="ethnic-mobile-app-hero__title">Mobile App Development</h1>
						<p class="ethnic-mobile-app-hero__copy">We are a mobile app development company focused on custom mobile application development services that deliver performance, usability, and scalable architecture. From product strategy to launch and ongoing support, we build apps that grow with your business.</p>
						<div class="ethnic-mobile-app-actions">
							<a class="ethnic-mobile-app-button ethnic-mobile-app-button--primary" href="<?php echo esc_url( ethnic_mobile_app_page_contact_url( array( 'intent' => 'consultation', 'service' => 'mobile-app-development' ) ) ); ?>">Book a Free Consultation</a>
							<a class="ethnic-mobile-app-button ethnic-mobile-app-button--secondary" href="#mobile-case-studies">View Case Studies</a>
						</div>
						<ul class="ethnic-mobile-app-trust">
							<?php foreach ( $hero_points as $point ) : ?>
								<li>
									<span class="ethnic-mobile-app-trust__icon" aria-hidden="true"><?php echo ethnic_mobile_app_page_icon( 'check' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
									<span><?php echo esc_html( $point ); ?></span>
								</li>
							<?php endforeach; ?>
						</ul>
					</div>
					<div class="ethnic-mobile-app-hero__visual" aria-hidden="true">
						<div class="ethnic-mobile-app-mockup">
							<div class="ethnic-mobile-app-phone">
								<div class="ethnic-mobile-app-phone__screen">
									<div class="ethnic-mobile-app-phone__badge">Mobile UI</div>
									<div class="ethnic-mobile-app-phone__cards">
										<div class="ethnic-mobile-app-phone__card">
											<strong>Active users</strong>
											<span>+42%</span>
										</div>
										<div class="ethnic-mobile-app-phone__card ethnic-mobile-app-phone__card--accent">
											<strong>Load time</strong>
											<span>1.2s</span>
										</div>
									</div>
									<div class="ethnic-mobile-app-phone__list">
										<span></span>
										<span></span>
										<span></span>
									</div>
								</div>
							</div>
							<div class="ethnic-mobile-app-mockup__glow"></div>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-mobile-app-section" id="mobile-overview">
				<div class="ethnic-mobile-app-shell">
					<?php echo ethnic_mobile_app_page_heading( 'Overview', 'Custom mobile application development services aligned to business goals and user experience.', 'We build mobile apps for startups, growing businesses, and enterprises that need customer engagement, operational clarity, and measurable outcomes.' ); ?>
					<div class="ethnic-mobile-app-overview">
						<div class="ethnic-mobile-app-overview__copy">
							<p>Our mobile app development services focus on performance, usability, and delivery speed without compromising long-term scalability. We help businesses launch mobile products that support customer engagement, internal workflows, on-demand services, and marketplace growth.</p>
							<p>From planning to launch, we stay accountable for product strategy, UX, architecture, and QA so your app is stable, efficient, and ready to scale across iOS and Android platforms.</p>
						</div>
						<div class="ethnic-mobile-app-feature-stack">
							<?php foreach ( $overview_features as $feature ) : ?>
								<div class="ethnic-mobile-app-feature">
									<span class="ethnic-mobile-app-icon" aria-hidden="true"><?php echo ethnic_mobile_app_page_icon( $feature['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
									<div>
										<h3><?php echo esc_html( $feature['title'] ); ?></h3>
										<p><?php echo esc_html( $feature['text'] ); ?></p>
									</div>
								</div>
							<?php endforeach; ?>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-mobile-app-section ethnic-mobile-app-section--soft" id="mobile-approach">
				<div class="ethnic-mobile-app-shell">
					<?php echo ethnic_mobile_app_page_heading( 'Native vs Cross-Platform Approach', 'Choose the mobile build approach that fits your product strategy and delivery needs.', 'The right choice depends on timeline, budget, complexity, and the experience you want to deliver. We help you evaluate the best approach early.' ); ?>
					<div class="ethnic-mobile-app-compare">
						<div class="ethnic-mobile-app-compare__card">
							<div class="ethnic-mobile-app-compare__title">
								<span class="ethnic-mobile-app-icon" aria-hidden="true"><?php echo ethnic_mobile_app_page_icon( 'native' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
								<h3>Native App Development</h3>
							</div>
							<ul>
								<li>Best for maximum performance</li>
								<li>Deeper device integration</li>
								<li>Platform-specific user experience</li>
								<li>Ideal for complex apps and long-term scalability</li>
							</ul>
						</div>
						<div class="ethnic-mobile-app-compare__card">
							<div class="ethnic-mobile-app-compare__title">
								<span class="ethnic-mobile-app-icon" aria-hidden="true"><?php echo ethnic_mobile_app_page_icon( 'cross' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
								<h3>Cross-Platform App Development</h3>
							</div>
							<ul>
								<li>Faster development cycles</li>
								<li>Shared codebase</li>
								<li>Cost-effective for many business cases</li>
								<li>Suitable for MVPs and multi-platform launches</li>
							</ul>
						</div>
					</div>
					<p class="ethnic-mobile-app-note">Recommendation: the best approach depends on business goals, budget, timeline, and product complexity. We help you choose the right fit during discovery.</p>
				</div>
			</section>

			<section class="ethnic-mobile-app-section" id="mobile-app-types">
				<div class="ethnic-mobile-app-shell">
					<?php echo ethnic_mobile_app_page_heading( 'App Types', 'Mobile apps designed for real business use cases, from commerce to internal operations.', 'We build the mobile experiences that support customer journeys, service delivery, and operational systems.' ); ?>
					<div class="ethnic-mobile-app-types">
						<?php foreach ( $app_types as $type ) : ?>
							<article class="ethnic-mobile-app-type">
								<span class="ethnic-mobile-app-icon" aria-hidden="true"><?php echo ethnic_mobile_app_page_icon( $type['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
								<h3><?php echo esc_html( $type['title'] ); ?></h3>
								<p><?php echo esc_html( $type['text'] ); ?></p>
							</article>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-mobile-app-section ethnic-mobile-app-section--workflow" id="mobile-flow">
				<div class="ethnic-mobile-app-shell">
					<?php echo ethnic_mobile_app_page_heading( 'Design and Development Flow', 'A structured workflow for mobile product delivery.', 'We keep the process transparent so teams always understand what is happening, what is next, and what outcomes we are targeting.' ); ?>
					<ol class="ethnic-mobile-app-flow">
						<?php foreach ( $flow_steps as $step ) : ?>
							<li>
								<h3><?php echo esc_html( $step['title'] ); ?></h3>
								<p><?php echo esc_html( $step['text'] ); ?></p>
							</li>
						<?php endforeach; ?>
					</ol>
				</div>
			</section>

			<section class="ethnic-mobile-app-section" id="mobile-testing">
				<div class="ethnic-mobile-app-shell">
					<?php echo ethnic_mobile_app_page_heading( 'Testing and Deployment', 'Quality assurance and launch readiness built into every mobile delivery.', 'We validate stability, usability, and performance before release so your app is ready for the App Store, Play Store, and real users.' ); ?>
					<div class="ethnic-mobile-app-testing">
						<div class="ethnic-mobile-app-testing__copy">
							<p>Our QA process covers functional testing, usability testing, performance checks, and device coverage. We test critical flows, edge cases, API integration reliability, and store compliance to avoid launch blockers.</p>
							<p>We also support release planning and app store deployment to ensure launches are smooth, on time, and aligned with business goals.</p>
						</div>
						<div class="ethnic-mobile-app-testing__list">
							<h3>Launch readiness checklist</h3>
							<ul>
								<?php foreach ( $testing_checks as $check ) : ?>
									<li><span aria-hidden="true"><?php echo ethnic_mobile_app_page_icon( 'check' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span><?php echo esc_html( $check ); ?></li>
								<?php endforeach; ?>
							</ul>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-mobile-app-section ethnic-mobile-app-section--soft" id="mobile-support">
				<div class="ethnic-mobile-app-shell">
					<?php echo ethnic_mobile_app_page_heading( 'App Support', 'Post-launch support that keeps your mobile product stable and evolving.', 'We provide ongoing maintenance, updates, and enhancements so your app continues to perform as your business grows.' ); ?>
					<div class="ethnic-mobile-app-support">
						<?php foreach ( $support_highlights as $support ) : ?>
							<article class="ethnic-mobile-app-support__card">
								<span class="ethnic-mobile-app-icon" aria-hidden="true"><?php echo ethnic_mobile_app_page_icon( $support['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
								<h3><?php echo esc_html( $support['title'] ); ?></h3>
								<p><?php echo esc_html( $support['text'] ); ?></p>
							</article>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<?php if ( ! empty( $case_studies ) ) : ?>
			<section class="ethnic-mobile-app-section" id="mobile-case-studies">
				<div class="ethnic-mobile-app-shell">
					<?php echo ethnic_mobile_app_page_heading( 'Relevant Case Studies', 'Mobile and digital product case studies that show real-world delivery outcomes.', 'Each example highlights the challenge, solution, and result delivered through mobile application development services.' ); ?>
					<?php echo ethnic_shared_case_study_showcase_render( $case_studies ); ?>
				</div>
			</section>
			<?php endif; ?>

			<section class="ethnic-mobile-app-section ethnic-mobile-app-section--cta" id="mobile-cta">
				<div class="ethnic-mobile-app-shell">
					<div class="ethnic-mobile-app-cta">
						<div class="ethnic-mobile-app-cta__copy">
							<p class="ethnic-mobile-app-kicker ethnic-mobile-app-kicker--light">Ready to Talk</p>
							<h2>Looking for a Mobile App Development Company?</h2>
							<p>Share your mobile app idea, MVP, modernization plan, or custom requirement and we will help define the right path forward.</p>
						</div>
						<div class="ethnic-mobile-app-actions ethnic-mobile-app-actions--cta">
							<a class="ethnic-mobile-app-button ethnic-mobile-app-button--primary" href="<?php echo esc_url( ethnic_mobile_app_page_contact_url( array( 'intent' => 'consultation', 'service' => 'mobile-app-development' ) ) ); ?>">Talk to Our Team</a>
							<a class="ethnic-mobile-app-button ethnic-mobile-app-button--secondary" href="<?php echo esc_url( ethnic_mobile_app_page_contact_url( array( 'intent' => 'quote', 'service' => 'mobile-app-development' ) ) ); ?>">Get a Free Quote</a>
						</div>
					</div>
				</div>
			</section>
		</div>
		<?php

		return ob_get_clean();
	}
}

if ( ! function_exists( 'ethnic_mobile_app_page_styles' ) ) {
	function ethnic_mobile_app_page_styles() {
		return <<<'CSS'
body.ethnic-mobile-app-target #page-title.page-title-block.custom-page-title {
	display: none;
}

body.ethnic-mobile-app-target .fullwidth-content > .ethnic-mobile-app-page {
	padding-bottom: clamp(72px, 8vw, 120px);
}

.ethnic-mobile-app-page {
	--ethnic-mobile-app-text: #0f172a;
	--ethnic-mobile-app-muted: #5c6b84;
	--ethnic-mobile-app-border: rgba(15, 23, 42, 0.08);
	--ethnic-mobile-app-accent: #2f6bff;
	--ethnic-mobile-app-lime: #e7ff89;
	--ethnic-mobile-app-shadow: 0 22px 60px rgba(15, 23, 42, 0.08);
	--ethnic-mobile-app-shadow-hover: 0 30px 80px rgba(15, 23, 42, 0.12);
	color: var(--ethnic-mobile-app-text);
}

.ethnic-mobile-app-page,
.ethnic-mobile-app-page *,
.ethnic-mobile-app-page *::before,
.ethnic-mobile-app-page *::after {
	box-sizing: border-box;
}

.ethnic-mobile-app-shell {
	width: min(1240px, calc(100% - (var(--ethnic-page-shell-padding, 36px) * 2)));
	margin: 0 auto;
}

.ethnic-mobile-app-section + .ethnic-mobile-app-section {
	margin-top: clamp(72px, 8vw, 112px);
}

.ethnic-mobile-app-section--soft {
	padding: clamp(28px, 4vw, 36px) 0;
}

.ethnic-mobile-app-page p,
.ethnic-mobile-app-page li {
	color: var(--ethnic-mobile-app-muted);
	font-size: 16px;
	line-height: 1.72;
}

.ethnic-mobile-app-kicker,
.ethnic-mobile-app-heading__eyebrow {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	margin: 0 0 16px;
	padding: 7px 13px;
	border-radius: 999px;
	background: rgba(47, 107, 255, 0.1);
	border: 1px solid rgba(47, 107, 255, 0.12);
	color: #2f6bff;
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.1em;
	line-height: 1;
	text-transform: uppercase;
}

.ethnic-mobile-app-kicker--light {
	background: rgba(255, 255, 255, 0.1);
	border-color: rgba(255, 255, 255, 0.14);
	color: #ffffff;
}

.ethnic-mobile-app-heading {
	max-width: 760px;
	margin-bottom: clamp(26px, 4vw, 36px);
}

.ethnic-mobile-app-heading__title,
.ethnic-mobile-app-hero__title,
.ethnic-mobile-app-cta h2 {
	margin: 0;
	font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
	font-weight: 700;
	letter-spacing: -0.05em;
	text-wrap: balance;
}

.ethnic-mobile-app-heading__title,
.ethnic-mobile-app-cta h2 {
	color: var(--ethnic-mobile-app-text);
	font-size: clamp(30px, 2.5vw, 44px);
	line-height: 1.04;
}

.ethnic-mobile-app-heading__copy {
	margin: 18px 0 0;
	max-width: 64ch;
}

.ethnic-mobile-app-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin-top: 28px;
}

.ethnic-mobile-app-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 52px;
	padding: 0 22px;
	border-radius: 999px;
	font-size: 15px;
	font-weight: 700;
	line-height: 1;
	text-decoration: none !important;
	transition: transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease, border-color 180ms ease, color 180ms ease;
}

.ethnic-mobile-app-button:hover,
.ethnic-mobile-app-button:focus-visible {
	transform: translateY(-2px);
	outline: none;
}

.ethnic-mobile-app-button--primary {
	background: var(--ethnic-mobile-app-lime);
	border: 1px solid var(--ethnic-mobile-app-lime);
	color: #0b1730 !important;
	box-shadow: 0 18px 30px rgba(231, 255, 137, 0.18);
}

.ethnic-mobile-app-button--secondary {
	background: rgba(255, 255, 255, 0.92);
	border: 1px solid rgba(15, 23, 42, 0.08);
	color: var(--ethnic-mobile-app-text) !important;
}

.ethnic-mobile-app-section--hero {
	padding-top: clamp(18px, 3vw, 32px);
}

.ethnic-mobile-app-hero {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(420px, 0.85fr);
	gap: clamp(28px, 5vw, 56px);
	align-items: center;
	padding: clamp(38px, 6vw, 64px);
	border-radius: 36px;
	overflow: hidden;
	background:
		radial-gradient(circle at top left, rgba(47, 107, 255, 0.2), transparent 28%),
		radial-gradient(circle at bottom right, rgba(231, 255, 137, 0.12), transparent 18%),
		linear-gradient(135deg, #0f172a 0%, #142543 46%, #163561 100%);
	box-shadow: 0 34px 90px rgba(15, 23, 42, 0.16);
}

.ethnic-mobile-app-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(transparent 95%, rgba(255, 255, 255, 0.04) 95%),
		linear-gradient(90deg, transparent 95%, rgba(255, 255, 255, 0.04) 95%);
	background-size: 100% 58px, 58px 100%;
	opacity: 0.18;
	pointer-events: none;
}

.ethnic-mobile-app-hero__content,
.ethnic-mobile-app-hero__visual {
	position: relative;
	z-index: 1;
}

.ethnic-mobile-app-hero__title {
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff;
	font-size: clamp(42px, 5vw, 72px);
	line-height: 0.96;
}

.ethnic-mobile-app-hero__copy {
	max-width: 62ch;
	margin: 20px 0 0;
	color: rgba(255, 255, 255, 0.86) !important;
	-webkit-text-fill-color: rgba(255, 255, 255, 0.86);
	font-size: clamp(17px, 1.4vw, 20px);
	line-height: 1.72;
}

.ethnic-mobile-app-trust {
	display: flex;
	flex-wrap: wrap;
	gap: 14px 18px;
	margin: 24px 0 0;
	padding: 0;
	list-style: none;
}

.ethnic-mobile-app-trust li {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	color: #ffffff;
	font-size: 14px;
	font-weight: 700;
}

.ethnic-mobile-app-trust__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.1);
	border: 1px solid rgba(255, 255, 255, 0.1);
	color: var(--ethnic-mobile-app-lime);
}

.ethnic-mobile-app-trust__icon svg {
	width: 14px;
	height: 14px;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	fill: none;
}

.ethnic-mobile-app-mockup {
	position: relative;
	display: grid;
	place-items: center;
	min-height: 420px;
}

.ethnic-mobile-app-mockup__glow {
	position: absolute;
	inset: 12%;
	background: radial-gradient(circle, rgba(47, 107, 255, 0.32), transparent 70%);
	filter: blur(40px);
	opacity: 0.6;
}

.ethnic-mobile-app-phone {
	position: relative;
	width: min(320px, 100%);
	border-radius: 36px;
	padding: 16px;
	background: rgba(255, 255, 255, 0.94);
	box-shadow: 0 28px 60px rgba(3, 10, 25, 0.2);
}

.ethnic-mobile-app-phone__screen {
	border-radius: 26px;
	padding: 18px;
	min-height: 360px;
	background:
		linear-gradient(180deg, rgba(47, 107, 255, 0.16), rgba(255, 255, 255, 0.96)),
		#ffffff;
}

.ethnic-mobile-app-phone__badge {
	display: inline-flex;
	align-items: center;
	min-height: 28px;
	padding: 0 12px;
	border-radius: 999px;
	background: rgba(15, 23, 42, 0.08);
	color: var(--ethnic-mobile-app-text);
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.ethnic-mobile-app-phone__cards {
	display: grid;
	gap: 12px;
	margin-top: 16px;
}

.ethnic-mobile-app-phone__card {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 12px 14px;
	border-radius: 16px;
	background: rgba(255, 255, 255, 0.94);
	border: 1px solid rgba(15, 23, 42, 0.08);
}

.ethnic-mobile-app-phone__card strong {
	color: var(--ethnic-mobile-app-text);
	font-size: 13px;
}

.ethnic-mobile-app-phone__card span {
	color: var(--ethnic-mobile-app-text);
	font-weight: 800;
}

.ethnic-mobile-app-phone__card--accent {
	background: linear-gradient(180deg, rgba(47, 107, 255, 0.14), rgba(255, 255, 255, 0.96));
}

.ethnic-mobile-app-phone__list {
	display: grid;
	gap: 10px;
	margin-top: 18px;
}

.ethnic-mobile-app-phone__list span {
	display: block;
	height: 12px;
	border-radius: 999px;
	background: rgba(15, 23, 42, 0.1);
}

.ethnic-mobile-app-overview {
	display: grid;
	grid-template-columns: minmax(0, 0.86fr) minmax(0, 1.14fr);
	gap: 28px 36px;
	align-items: start;
}

.ethnic-mobile-app-feature-stack {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
	align-content: start;
}

.ethnic-mobile-app-feature {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 16px;
	align-items: start;
	min-height: 100%;
	padding: 24px;
	border-radius: 24px;
	border: 1px solid var(--ethnic-mobile-app-border);
	background:
		radial-gradient(circle at top right, rgba(47, 107, 255, 0.06), transparent 24%),
		linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 250, 255, 0.98));
	box-shadow: var(--ethnic-mobile-app-shadow);
}

.ethnic-mobile-app-feature:last-child {
	border-bottom: 0;
}

.ethnic-mobile-app-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 50px;
	height: 50px;
	border-radius: 18px;
	background: linear-gradient(135deg, rgba(47, 107, 255, 0.18), rgba(255, 255, 255, 0.96));
	border: 1px solid rgba(47, 107, 255, 0.16);
	color: var(--ethnic-mobile-app-accent);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}

.ethnic-mobile-app-icon svg {
	width: 24px;
	height: 24px;
	stroke: currentColor;
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
	fill: none;
}

.ethnic-mobile-app-feature h3,
.ethnic-mobile-app-compare__card h3,
.ethnic-mobile-app-type h3,
.ethnic-mobile-app-flow h3,
.ethnic-mobile-app-testing__list h3,
.ethnic-mobile-app-support__card h3,
.ethnic-mobile-app-case h3 {
	margin: 0;
	color: var(--ethnic-mobile-app-text);
	font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
	font-size: clamp(19px, 1.35vw, 24px);
	line-height: 1.16;
	letter-spacing: -0.04em;
	text-wrap: balance;
}

.ethnic-mobile-app-feature p,
.ethnic-mobile-app-type p,
.ethnic-mobile-app-support__card p {
	margin: 8px 0 0;
}

.ethnic-mobile-app-compare {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
}

.ethnic-mobile-app-compare__card {
	padding: 26px;
	border-radius: 28px;
	border: 1px solid var(--ethnic-mobile-app-border);
	background:
		radial-gradient(circle at top right, rgba(47, 107, 255, 0.06), transparent 24%),
		linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 250, 255, 0.98));
	box-shadow: var(--ethnic-mobile-app-shadow);
}

.ethnic-mobile-app-compare__title {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-bottom: 16px;
}

.ethnic-mobile-app-compare__card ul {
	margin: 0;
	padding-left: 18px;
	color: var(--ethnic-mobile-app-muted);
}

.ethnic-mobile-app-compare__card li + li {
	margin-top: 10px;
}

.ethnic-mobile-app-note {
	margin: 18px 0 0;
	font-size: 14px;
	color: var(--ethnic-mobile-app-muted);
}

.ethnic-mobile-app-types {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 18px;
}

.ethnic-mobile-app-type {
	padding: 20px;
	border-radius: 22px;
	border: 1px solid var(--ethnic-mobile-app-border);
	background: #ffffff;
	box-shadow: var(--ethnic-mobile-app-shadow);
}

.ethnic-mobile-app-flow {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 18px;
	border-left: 2px solid rgba(47, 107, 255, 0.18);
	padding-left: 24px;
}

.ethnic-mobile-app-flow li {
	position: relative;
	padding: 6px 0 6px 16px;
}

.ethnic-mobile-app-flow li::before {
	content: "";
	position: absolute;
	left: -30px;
	top: 12px;
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background: var(--ethnic-mobile-app-accent);
	box-shadow: 0 0 0 6px rgba(47, 107, 255, 0.18);
}

.ethnic-mobile-app-testing {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 0.9fr);
	gap: 28px;
	align-items: start;
}

.ethnic-mobile-app-testing__list {
	padding: 24px;
	border-radius: 26px;
	border: 1px solid var(--ethnic-mobile-app-border);
	background:
		linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 250, 255, 0.98));
	box-shadow: var(--ethnic-mobile-app-shadow);
}

.ethnic-mobile-app-testing__list ul {
	margin: 18px 0 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 12px;
}

.ethnic-mobile-app-testing__list li {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--ethnic-mobile-app-text);
	font-size: 14px;
	font-weight: 600;
}

.ethnic-mobile-app-testing__list li span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: rgba(47, 107, 255, 0.12);
	color: var(--ethnic-mobile-app-accent);
}

.ethnic-mobile-app-testing__list li span svg {
	width: 16px;
	height: 16px;
	stroke: currentColor;
	stroke-width: 2.2;
	stroke-linecap: round;
	stroke-linejoin: round;
	fill: none;
}

.ethnic-mobile-app-support {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 18px;
}

.ethnic-mobile-app-support__card {
	padding: 22px;
	border-radius: 24px;
	border: 1px solid var(--ethnic-mobile-app-border);
	background: #ffffff;
	box-shadow: var(--ethnic-mobile-app-shadow);
}

.ethnic-mobile-app-cases {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
}

.ethnic-mobile-app-case {
	padding: 24px;
	border-radius: 26px;
	border: 1px solid var(--ethnic-mobile-app-border);
	background:
		radial-gradient(circle at top right, rgba(47, 107, 255, 0.06), transparent 24%),
		linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 250, 255, 0.98));
	box-shadow: var(--ethnic-mobile-app-shadow);
}

.ethnic-mobile-app-case__tag {
	display: inline-flex;
	align-items: center;
	min-height: 28px;
	padding: 0 12px;
	border-radius: 999px;
	background: rgba(47, 107, 255, 0.08);
	color: var(--ethnic-mobile-app-accent);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.ethnic-mobile-app-case p {
	margin: 14px 0 0;
}

.ethnic-mobile-app-inline-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: 18px;
	color: var(--ethnic-mobile-app-accent);
	font-size: 14px;
	font-weight: 700;
	text-decoration: none;
}

.ethnic-mobile-app-inline-link::after {
	content: "→";
	font-size: 16px;
}

.ethnic-mobile-app-section--cta {
	margin-top: clamp(80px, 9vw, 120px);
}

.ethnic-mobile-app-cta {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 28px;
	align-items: end;
	padding: clamp(28px, 5vw, 48px);
	border-radius: 32px;
	background:
		radial-gradient(circle at top left, rgba(47, 107, 255, 0.2), transparent 28%),
		radial-gradient(circle at bottom right, rgba(231, 255, 137, 0.18), transparent 18%),
		linear-gradient(135deg, #0f172a 0%, #142543 46%, #173561 100%);
	box-shadow: 0 34px 90px rgba(15, 23, 42, 0.16);
}

.ethnic-mobile-app-cta h2,
.ethnic-mobile-app-cta p {
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff;
}

.ethnic-mobile-app-cta p {
	max-width: 62ch;
	margin: 16px 0 0;
}

@media (max-width: 1200px) {
	.ethnic-mobile-app-overview,
	.ethnic-mobile-app-testing {
		grid-template-columns: 1fr;
	}

	.ethnic-mobile-app-feature-stack {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ethnic-mobile-app-types {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.ethnic-mobile-app-support {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 1100px) {
	.ethnic-mobile-app-hero {
		grid-template-columns: 1fr;
	}

	.ethnic-mobile-app-hero__visual {
		order: -1;
	}
}

@media (max-width: 980px) {
	.ethnic-mobile-app-compare,
	.ethnic-mobile-app-cases {
		grid-template-columns: 1fr;
	}

	.ethnic-mobile-app-types {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ethnic-mobile-app-cta {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 767px) {
	.ethnic-mobile-app-shell {
		width: min(1240px, calc(100% - (var(--ethnic-page-shell-padding, 16px) * 2)));
	}

	.ethnic-mobile-app-section + .ethnic-mobile-app-section {
		margin-top: 56px;
	}

	.ethnic-mobile-app-hero {
		padding: 26px 22px;
		border-radius: 28px;
	}

	.ethnic-mobile-app-hero__title {
		font-size: clamp(34px, 10vw, 48px);
	}

	.ethnic-mobile-app-heading__title,
	.ethnic-mobile-app-cta h2 {
		font-size: clamp(26px, 7.6vw, 34px);
	}

	.ethnic-mobile-app-actions,
	.ethnic-mobile-app-actions--cta {
		flex-direction: column;
		align-items: stretch;
	}

	.ethnic-mobile-app-button {
		width: 100%;
	}

	.ethnic-mobile-app-trust {
		flex-direction: column;
		align-items: flex-start;
	}

	.ethnic-mobile-app-types,
	.ethnic-mobile-app-support,
	.ethnic-mobile-app-feature-stack {
		grid-template-columns: 1fr;
	}

	.ethnic-mobile-app-compare__card,
	.ethnic-mobile-app-case,
	.ethnic-mobile-app-support__card,
	.ethnic-mobile-app-testing__list,
	.ethnic-mobile-app-feature,
	.ethnic-mobile-app-cta {
		padding-left: 22px;
		padding-right: 22px;
	}
}
CSS;
	}
}

if ( ! function_exists( 'ethnic_mobile_app_page_body_class' ) ) {
	function ethnic_mobile_app_page_body_class( $classes ) {
		if ( ethnic_mobile_app_page_is_target() ) {
			$classes[] = 'ethnic-mobile-app-target';
		}

		return $classes;
	}

	add_filter( 'body_class', 'ethnic_mobile_app_page_body_class' );
}

if ( ! function_exists( 'ethnic_mobile_app_page_print_head_assets' ) ) {
	function ethnic_mobile_app_page_print_head_assets() {
		if ( ! ethnic_mobile_app_page_is_target() ) {
			return;
		}

		?>
		<style id="ethnic-mobile-app-page-inline-css" type="text/css">
			<?php echo ethnic_mobile_app_page_styles(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
		</style>
		<meta name="description" content="Need a mobile app development company? We build custom mobile application development solutions for iOS, Android, and cross-platform business apps." />
		<?php
	}

	add_action( 'wp_head', 'ethnic_mobile_app_page_print_head_assets', 120 );
}

if ( ! function_exists( 'ethnic_mobile_app_page_document_title' ) ) {
	function ethnic_mobile_app_page_document_title( $title ) {
		if ( ethnic_mobile_app_page_is_target() ) {
			return 'Mobile App Development Company | Custom Mobile Application Development Services';
		}

		return $title;
	}

	add_filter( 'pre_get_document_title', 'ethnic_mobile_app_page_document_title', 50 );
}

if ( ! function_exists( 'ethnic_mobile_app_page_replace_content' ) ) {
	function ethnic_mobile_app_page_replace_content( $content ) {
		if ( ! ethnic_mobile_app_page_is_target() || ! in_the_loop() || ! is_main_query() ) {
			return $content;
		}

		static $rendered = false;

		if ( $rendered ) {
			return $content;
		}

		$rendered = true;

		return ethnic_mobile_app_page_render();
	}

	add_filter( 'the_content', 'ethnic_mobile_app_page_replace_content', 1000 );
}