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-app-development-page.php
<?php
/**
 * Plugin Name: Ethnic App Development Service Page
 * Description: Creates and renders the App Development Services pillar page.
 * Version: 1.0.0
 */

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

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

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

		$page = get_page_by_path( 'services' );

		if ( $page instanceof WP_Post ) {
			$parent_id = (int) $page->ID;
		} else {
			$fallback = get_post( 843 );
			$parent_id = $fallback instanceof WP_Post ? (int) $fallback->ID : 0;
		}

		return $parent_id;
	}
}

if ( ! function_exists( 'ethnic_app_development_page_get_target_page' ) ) {
	function ethnic_app_development_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' );

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

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

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

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

		if ( $did_run ) {
			return;
		}

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

		if ( ! $parent_id ) {
			return;
		}

		$postarr = array(
			'post_type'      => 'page',
			'post_title'     => 'App Development Services',
			'post_name'      => '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' );

		if ( $page instanceof WP_Post ) {
			$needs_update = 'App Development Services' !== $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( '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_app_development_page_ensure_page', 5 );
}

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

		$page = ethnic_app_development_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_app_development_page_url' ) ) {
	function ethnic_app_development_page_url( $path ) {
		return home_url( '/' . ltrim( (string) $path, '/' ) . '/' );
	}
}

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

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

if ( ! function_exists( 'ethnic_app_development_page_case_study_defaults' ) ) {
	function ethnic_app_development_page_case_study_defaults() {
		$works_url = ethnic_app_development_page_case_studies_url();

		return array(
			array(
				'industry'  => 'Retail',
				'title'     => 'Omnichannel Retail App Modernization',
				'challenge' => 'A growing retail brand needed to unify customer engagement across mobile, promotions, and in-store coordination.',
				'solution'  => 'We designed a cross-platform app experience with cleaner journeys, connected data flows, and admin-side visibility.',
				'outcome'   => 'The platform became easier to operate, easier to expand, and better aligned with repeat-purchase growth goals.',
				'summary'   => 'Featured example of how custom application development can improve operations, customer experience, and long-term scalability.',
				'url'       => $works_url,
			),
			array(
				'industry'  => 'Logistics',
				'title'     => 'Field Operations Workflow Platform',
				'challenge' => 'Manual dispatch updates and fragmented systems slowed down operations, communication, and reporting.',
				'solution'  => 'We built a custom operational app with workflow automation, status tracking, and connected dashboard reporting.',
				'outcome'   => 'The team gained faster coordination, stronger visibility, and a more dependable day-to-day operations process.',
				'summary'   => 'Selected example of how app delivery can improve operational visibility, coordination, and reliability.',
				'url'       => $works_url,
			),
			array(
				'industry'  => 'Fintech',
				'title'     => 'Digital Onboarding & Client Portal',
				'challenge' => 'An existing onboarding experience lacked product clarity, speed, and the confidence needed for financial users.',
				'solution'  => 'We rebuilt the flow as a guided application experience with clearer UX, structured backend logic, and scalable delivery.',
				'outcome'   => 'The business gained a stronger customer-facing product foundation and a platform ready for future feature expansion.',
				'summary'   => 'Selected example of how product-focused application work can strengthen digital onboarding and long-term platform growth.',
				'url'       => $works_url,
			),
		);
	}
}

if ( ! function_exists( 'ethnic_app_development_page_case_study_text' ) ) {
	function ethnic_app_development_page_case_study_text( $text, $fallback = '' ) {
		$text = wp_strip_all_tags( strip_shortcodes( (string) $text ) );
		$text = preg_replace( '/\s+/u', ' ', trim( $text ) );

		if ( null === $text ) {
			$text = '';
		}

		return '' !== $text ? $text : $fallback;
	}
}

if ( ! function_exists( 'ethnic_app_development_page_case_study_is_placeholder' ) ) {
	function ethnic_app_development_page_case_study_is_placeholder( $text ) {
		$text = strtolower( ethnic_app_development_page_case_study_text( $text ) );

		if ( '' === $text ) {
			return false;
		}

		$placeholder_markers = array(
			'(demo)',
			'lorem ipsum',
			'sample page',
			'project details',
			'fullscreen showcase project page',
			'minimalistic stylish template',
			'trendy template',
		);

		foreach ( $placeholder_markers as $marker ) {
			if ( false !== strpos( $text, $marker ) ) {
				return true;
			}
		}

		return false;
	}
}

if ( ! function_exists( 'ethnic_app_development_page_case_study_first_meta' ) ) {
	function ethnic_app_development_page_case_study_first_meta( $post_id, $meta_keys ) {
		foreach ( $meta_keys as $meta_key ) {
			$value = get_post_meta( $post_id, $meta_key, true );

			if ( is_array( $value ) ) {
				$value = implode( ' ', array_filter( array_map( 'trim', $value ) ) );
			}

			$value = ethnic_app_development_page_case_study_text( $value );

			if ( '' !== $value && ! ethnic_app_development_page_case_study_is_placeholder( $value ) ) {
				return $value;
			}
		}

		return '';
	}
}

if ( ! function_exists( 'ethnic_app_development_page_case_study_sentences' ) ) {
	function ethnic_app_development_page_case_study_sentences( $text ) {
		$text = ethnic_app_development_page_case_study_text( $text );

		if ( '' === $text ) {
			return array();
		}

		$sentences = preg_split( '/(?<=[.!?])\s+/u', $text );

		if ( ! is_array( $sentences ) ) {
			return array();
		}

		return array_values(
			array_filter(
				array_map(
					static function ( $sentence ) {
						return ethnic_app_development_page_case_study_text( $sentence );
					},
					$sentences
				)
			)
		);
	}
}

if ( ! function_exists( 'ethnic_app_development_page_case_study_from_post' ) ) {
	function ethnic_app_development_page_case_study_from_post( $post, $taxonomy ) {
		$post = get_post( $post );

		if ( ! ( $post instanceof WP_Post ) ) {
			return array();
		}

		$post_id = (int) $post->ID;
		$title   = ethnic_app_development_page_case_study_text( get_the_title( $post_id ) );

		if ( '' === $title || ethnic_app_development_page_case_study_is_placeholder( $title ) ) {
			return array();
		}

		$excerpt_source = has_excerpt( $post_id ) ? get_the_excerpt( $post_id ) : get_post_field( 'post_content', $post_id );
		$summary_source = ethnic_app_development_page_case_study_text( $excerpt_source );

		if ( ethnic_app_development_page_case_study_is_placeholder( $summary_source ) ) {
			$summary_source = '';
		}

		$summary_sentences = ethnic_app_development_page_case_study_sentences( $summary_source );
		$summary           = '' !== $summary_source ? wp_trim_words( $summary_source, 24, '…' ) : '';

		$terms = get_the_terms( $post_id, $taxonomy );
		if ( is_wp_error( $terms ) || empty( $terms ) ) {
			$terms = array();
		}

		$industry = 'Case Study';
		foreach ( $terms as $term ) {
			$term_name = isset( $term->name ) ? ethnic_app_development_page_case_study_text( $term->name ) : '';

			if ( '' === $term_name || ethnic_app_development_page_case_study_is_placeholder( $term_name ) ) {
				continue;
			}

			$industry = preg_replace( '/\s*\(demo\)\s*/i', '', $term_name );
			$industry = ethnic_app_development_page_case_study_text( $industry, 'Case Study' );
			break;
		}

		$challenge = ethnic_app_development_page_case_study_first_meta(
			$post_id,
			array( 'challenge', '_challenge', 'project_challenge', '_project_challenge', 'case_study_challenge', '_case_study_challenge', 'brief', '_brief' )
		);
		$solution  = ethnic_app_development_page_case_study_first_meta(
			$post_id,
			array( 'solution', '_solution', 'project_solution', '_project_solution', 'case_study_solution', '_case_study_solution' )
		);
		$outcome   = ethnic_app_development_page_case_study_first_meta(
			$post_id,
			array( 'outcome', '_outcome', 'project_outcome', '_project_outcome', 'case_study_outcome', '_case_study_outcome', 'result', '_result' )
		);

		if ( '' === $challenge && ! empty( $summary_sentences[0] ) ) {
			$challenge = wp_trim_words( $summary_sentences[0], 22, '…' );
		}

		if ( '' === $outcome && ! empty( $summary_sentences[1] ) ) {
			$outcome = wp_trim_words( $summary_sentences[1], 22, '…' );
		}

		if ( '' === $challenge ) {
			$challenge = 'The team needed a clearer application experience and a more scalable product foundation.';
		}

		if ( '' === $solution ) {
			$solution = 'We delivered a custom application approach focused on clearer workflows, stronger usability, and maintainable implementation.';
		}

		if ( '' === $outcome ) {
			$outcome = 'The project created a stronger digital foundation for daily operations and future product growth.';
		}

		if ( '' === $summary ) {
			$summary = 'Selected example of how custom application development can improve operations, customer experience, and long-term scalability.';
		}

		$permalink = get_permalink( $post_id );
		if ( ! $permalink ) {
			$permalink = ethnic_app_development_page_case_studies_url();
		}

		return array(
			'industry'  => $industry,
			'title'     => $title,
			'challenge' => $challenge,
			'solution'  => $solution,
			'outcome'   => $outcome,
			'summary'   => $summary,
			'url'       => $permalink,
		);
	}
}

if ( ! function_exists( 'ethnic_app_development_page_case_studies' ) ) {
	function ethnic_app_development_page_case_studies( $limit = 3 ) {
		static $cache = null;

		$limit = max( 1, (int) $limit );

		if ( null !== $cache ) {
			return array_slice( $cache, 0, $limit );
		}

		$fallback_case_studies = ethnic_app_development_page_case_study_defaults();
		$case_study_post_type  = post_type_exists( 'thegem_pf_item' ) ? 'thegem_pf_item' : 'post';
		$case_study_taxonomy   = 'thegem_pf_item' === $case_study_post_type ? 'thegem_portfolios' : 'category';
		$query_args            = array(
			'post_type'           => $case_study_post_type,
			'post_status'         => 'publish',
			'posts_per_page'      => max( $limit * 3, 9 ),
			'orderby'             => 'date',
			'order'               => 'DESC',
			'ignore_sticky_posts' => true,
			'no_found_rows'       => true,
		);

		$query_args = apply_filters( 'ethnic_app_development_page_case_study_query_args', $query_args, $limit, $case_study_post_type, $case_study_taxonomy );

		$dynamic_case_studies = array();
		$case_studies_query   = new WP_Query( $query_args );

		if ( $case_studies_query->have_posts() ) {
			while ( $case_studies_query->have_posts() ) {
				$case_studies_query->the_post();

				$case_study = ethnic_app_development_page_case_study_from_post( get_post(), $case_study_taxonomy );

				if ( empty( $case_study ) ) {
					continue;
				}

				$dynamic_case_studies[] = $case_study;

				if ( count( $dynamic_case_studies ) >= $limit ) {
					break;
				}
			}

			wp_reset_postdata();
		}

		$dynamic_case_studies = apply_filters( 'ethnic_app_development_page_case_studies', $dynamic_case_studies, $fallback_case_studies );

		$case_studies = array();
		$seen_titles  = array();

		foreach ( array_merge( is_array( $dynamic_case_studies ) ? $dynamic_case_studies : array(), $fallback_case_studies ) as $case_study ) {
			if ( ! is_array( $case_study ) ) {
				continue;
			}

			$title = isset( $case_study['title'] ) ? ethnic_app_development_page_case_study_text( $case_study['title'] ) : '';

			if ( '' === $title || isset( $seen_titles[ strtolower( $title ) ] ) ) {
				continue;
			}

			$case_studies[] = array(
				'industry'  => isset( $case_study['industry'] ) ? ethnic_app_development_page_case_study_text( $case_study['industry'], 'Case Study' ) : 'Case Study',
				'title'     => $title,
				'challenge' => isset( $case_study['challenge'] ) ? ethnic_app_development_page_case_study_text( $case_study['challenge'], 'The team needed a clearer application experience and a more scalable product foundation.' ) : 'The team needed a clearer application experience and a more scalable product foundation.',
				'solution'  => isset( $case_study['solution'] ) ? ethnic_app_development_page_case_study_text( $case_study['solution'], 'We delivered a custom application approach focused on clearer workflows, stronger usability, and maintainable implementation.' ) : 'We delivered a custom application approach focused on clearer workflows, stronger usability, and maintainable implementation.',
				'outcome'   => isset( $case_study['outcome'] ) ? ethnic_app_development_page_case_study_text( $case_study['outcome'], 'The project created a stronger digital foundation for daily operations and future product growth.' ) : 'The project created a stronger digital foundation for daily operations and future product growth.',
				'summary'   => isset( $case_study['summary'] ) ? ethnic_app_development_page_case_study_text( $case_study['summary'], 'Selected example of how custom application development can improve operations, customer experience, and long-term scalability.' ) : 'Selected example of how custom application development can improve operations, customer experience, and long-term scalability.',
				'url'       => isset( $case_study['url'] ) && $case_study['url'] ? $case_study['url'] : ethnic_app_development_page_case_studies_url(),
			);

			$seen_titles[ strtolower( $title ) ] = true;

			if ( count( $case_studies ) >= $limit ) {
				break;
			}
		}

		if ( empty( $case_studies ) ) {
			$case_studies = $fallback_case_studies;
		}

		$cache = array_values( $case_studies );

		return array_slice( $cache, 0, $limit );
	}
}

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

		return ob_get_clean();
	}
}

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

		switch ( $icon ) {
			case 'custom':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M4.5 7.5h15" />
					<path d="M4.5 12h15" />
					<path d="M4.5 16.5h9" />
					<path d="M17.2 14.6l2.3 2.3-4.1 4.1H13v-2.4z" />
				</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 'design':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M12 4c4.4 0 8 2.8 8 6.4 0 3-2.7 5.4-6.1 5.4h-1.2c-.8 0-1.5.6-1.5 1.3 0 .4.1.7.4 1l.7.7c.5.5.2 1.2-.5 1.2C7.5 20 4 16.6 4 12.4 4 7.8 7.6 4 12 4z" />
					<circle cx="8.2" cy="10.1" r="1" />
					<circle cx="11.1" cy="8.1" r="1" />
					<circle cx="14.5" cy="8.3" r="1" />
					<circle cx="16.9" cy="10.8" r="1" />
				</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 'manual':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M7 4.5h10" />
					<path d="M7 8.5h10" />
					<path d="M7 12.5h6" />
					<path d="M6.8 19.5l3.1-3.1 1.8 1.8L8.6 21H6.8z" />
					<rect x="5" y="3" width="14" height="18" rx="2" />
				</svg>
				<?php
				break;

			case 'systems':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="3.5" y="5" width="7" height="5.5" rx="1.2" />
					<rect x="13.5" y="5" width="7" height="5.5" rx="1.2" />
					<rect x="8.5" y="14.2" width="7" height="5.5" rx="1.2" />
					<path d="M10.5 7.8h3" />
					<path d="M12 10.5v3.7" />
				</svg>
				<?php
				break;

			case 'mobile-experience':
				?>
				<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" />
					<path d="M9.6 14.5l2.1-2.1 2.6 2.6 2-2" />
				</svg>
				<?php
				break;

			case 'market':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M5 18.5h14" />
					<path d="M7.5 15.5V10" />
					<path d="M12 15.5V7" />
					<path d="M16.5 15.5v-4" />
					<path d="M6 7.2l3-2.7 2.8 2.1 4.2-3.1" />
				</svg>
				<?php
				break;

			case 'legacy':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M12 4.2a7.8 7.8 0 1 1-7.6 9.7" />
					<path d="M4.4 7.4V3.8H8" />
					<path d="M12 8v4l2.8 1.8" />
				</svg>
				<?php
				break;

			case 'analytics':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M5 18.5h14" />
					<rect x="6.2" y="11.5" width="2.7" height="7" rx="0.8" />
					<rect x="10.7" y="8.5" width="2.7" height="10" rx="0.8" />
					<rect x="15.2" y="5.5" width="2.7" height="13" rx="0.8" />
				</svg>
				<?php
				break;

			case 'mobile':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="7" y="3" width="10" height="18" rx="2.2" />
					<path d="M10.2 6h3.6" />
					<circle cx="12" cy="17.4" r="0.8" />
				</svg>
				<?php
				break;

			case 'ios':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M14.4 6.2c.8-1 1.1-2 .9-3-.9.1-1.9.7-2.5 1.5-.6.7-1.1 1.8-.9 2.9 1 .1 1.9-.5 2.5-1.4z" />
					<path d="M12.1 8.8c1.2 0 2.2-.8 3.2-.8 1.2 0 2 .5 2.7 1.5-2.4 1.3-2 4.7.4 5.8-.5 1.5-1.1 3-2.4 3-1 0-1.6-.6-2.7-.6-1.1 0-1.8.6-2.8.6-1.3 0-2.1-1.4-2.6-2.9-.8-2.2-.8-4.7.6-6 .8-.8 1.8-1.3 2.8-1.3 1.1 0 2 .7 2.8.7z" />
				</svg>
				<?php
				break;

			case 'android':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M8.2 8.5h7.6a2 2 0 0 1 2 2v5.6a2 2 0 0 1-2 2H8.2a2 2 0 0 1-2-2v-5.6a2 2 0 0 1 2-2z" />
					<path d="M9.2 6.8l-1.1-1.5" />
					<path d="M14.8 6.8l1.1-1.5" />
					<path d="M8.8 18.1v2.1" />
					<path d="M15.2 18.1v2.1" />
					<circle cx="9.9" cy="11.6" r=".7" />
					<circle cx="14.1" cy="11.6" r=".7" />
				</svg>
				<?php
				break;

			case 'flutter':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M7 13.5L14.9 5.6h3.3L10.3 13.5z" />
					<path d="M10.3 13.5l2.6-2.6 5.3 5.3h-3.3z" />
					<path d="M10.3 13.5l4.6 4.6H11.7L7 13.5z" />
				</svg>
				<?php
				break;

			case 'react-native':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<ellipse cx="12" cy="12" rx="8.2" ry="3.2" />
					<ellipse cx="12" cy="12" rx="8.2" ry="3.2" transform="rotate(60 12 12)" />
					<ellipse cx="12" cy="12" rx="8.2" ry="3.2" transform="rotate(-60 12 12)" />
					<circle cx="12" cy="12" r="1.5" />
				</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 'web':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="3" y="4.5" width="18" height="15" rx="2" />
					<path d="M3 8.2h18" />
					<path d="M8.8 4.8v14.4" />
					<path d="M15.2 4.8v14.4" />
				</svg>
				<?php
				break;

			case 'software':
				?>
				<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 16h8" />
				</svg>
				<?php
				break;

			case 'maintenance':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M14.8 5.2a3.7 3.7 0 0 0-4.7 4.7l-5.5 5.5a1.8 1.8 0 0 0 2.6 2.6l5.5-5.5a3.7 3.7 0 0 0 4.7-4.7l-2.4 2.4-2.4-2.4z" />
				</svg>
				<?php
				break;

			case 'retail':
				?>
				<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 'healthcare':
				?>
				<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 'fintech':
				?>
				<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.2h9" />
					<path d="M9 14h6" />
				</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 '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 'gaming':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M7 9.5h10a3.2 3.2 0 0 1 3 4.2l-.9 2.8a2 2 0 0 1-3.7.4l-.9-1.4h-5l-.9 1.4a2 2 0 0 1-3.7-.4l-.9-2.8a3.2 3.2 0 0 1 3-4.2z" />
					<path d="M8.4 12h2.4" />
					<path d="M9.6 10.8v2.4" />
					<circle cx="15.8" cy="11.5" r=".8" />
					<circle cx="17.8" cy="13.5" r=".8" />
				</svg>
				<?php
				break;

			case 'manufacturing':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M4 19.5v-8.8l4 2.2V9.2l4 2.4V7.9l4 2.4V5.6l4 2.6v11.3z" />
				</svg>
				<?php
				break;

			case 'briefcase':
				?>
				<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 'tailored':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M6 6.2l2.5-2.2 3.5 3.5L8.5 10z" />
					<path d="M12 7.5l3.5-3.5L18 6.2 14.5 10z" />
					<path d="M8.8 10.3V20h6.4v-9.7" />
				</svg>
				<?php
				break;

			case 'clean-code':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M8.5 8.2L5 12l3.5 3.8" />
					<path d="M15.5 8.2L19 12l-3.5 3.8" />
					<path d="M13.3 6.2l-2.6 11.6" />
				</svg>
				<?php
				break;

			case 'communication':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M5 6.2h14a1.8 1.8 0 0 1 1.8 1.8v6.6A1.8 1.8 0 0 1 19 16.4H10l-4.5 3v-3H5A1.8 1.8 0 0 1 3.2 14.6V8A1.8 1.8 0 0 1 5 6.2z" />
				</svg>
				<?php
				break;

			case 'agile':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M12 4.2a7.8 7.8 0 1 1-7.1 4.5" />
					<path d="M4.8 5.5v4h4" />
					<path d="M12 8.5v3.7l2.6 1.6" />
				</svg>
				<?php
				break;

			case 'growth':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M5 18.5h14" />
					<path d="M7 15.5l3.2-3.2 3 3 4.8-5.3" />
					<path d="M14.8 10h3.2v3.2" />
				</svg>
				<?php
				break;

			case 'check':
			default:
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<circle cx="12" cy="12" r="9" />
					<path d="M8.5 12.2l2.2 2.2 4.8-5" />
				</svg>
				<?php
				break;
		}

		return ob_get_clean();
	}
}

if ( ! function_exists( 'ethnic_app_development_page_render' ) ) {
	function ethnic_app_development_page_render() {
		$hero_points = array(
			'Custom web and mobile apps',
			'Scalable architecture',
			'Support from idea to launch',
		);

		$overview_features = array(
			array(
				'icon'  => 'custom',
				'title' => 'Custom-Built Solutions',
				'text'  => 'Every application is scoped around your product goals, workflows, integrations, and long-term business model.',
			),
			array(
				'icon'  => 'architecture',
				'title' => 'Scalable Architecture',
				'text'  => 'We design for performance, maintainability, and future growth from the first release onward.',
			),
			array(
				'icon'  => 'design',
				'title' => 'User-Centric Design',
				'text'  => 'Clear UI and thoughtful UX help teams launch products that are easier to adopt, use, and scale.',
			),
			array(
				'icon'  => 'support',
				'title' => 'Long-Term Support',
				'text'  => 'We continue with optimization, feature expansion, stabilization, and ongoing app support after launch.',
			),
		);

		$problems = array(
			array(
				'icon'  => 'manual',
				'title' => 'Outdated Manual Processes',
				'text'  => 'We replace spreadsheet-driven or repetitive workflows with connected digital tools that reduce friction and improve speed.',
			),
			array(
				'icon'  => 'systems',
				'title' => 'Disconnected Business Systems',
				'text'  => 'We build applications that integrate data, teams, and operational systems into one more usable product experience.',
			),
			array(
				'icon'  => 'mobile-experience',
				'title' => 'Poor Mobile User Experience',
				'text'  => 'We improve app usability, performance, and navigation so customers and internal users can get more done on mobile.',
			),
			array(
				'icon'  => 'market',
				'title' => 'Slow Time-to-Market',
				'text'  => 'We use structured delivery, product scoping, and agile execution to move from concept to launch more efficiently.',
			),
			array(
				'icon'  => 'legacy',
				'title' => 'Legacy Apps That Cannot Scale',
				'text'  => 'We modernize brittle platforms and rebuild aging applications with better architecture, cleaner code, and stronger extensibility.',
			),
			array(
				'icon'  => 'analytics',
				'title' => 'Missing Analytics & Automation',
				'text'  => 'We add data visibility, reporting, and automation opportunities that help teams make faster and better decisions.',
			),
		);

		$sub_services = array(
			array(
				'icon'        => 'mobile',
				'title'       => 'Mobile App Development',
				'description' => 'Custom mobile app development services for business products, customer apps, and internal operational tools.',
				'url'         => ethnic_app_development_page_url( 'services/app-development/mobile-app-development' ),
			),
				array(
					'icon'        => 'ios',
					'title'       => 'iOS App Development',
					'description' => 'Native iPhone and iPad applications built for polished performance, security, and long-term maintainability.',
					'url'         => ethnic_app_development_page_url( 'services/app-development/ios-app-development' ),
				),
				array(
					'icon'        => 'android',
					'title'       => 'Android App Development',
					'description' => 'Android app experiences tailored to product growth, operational workflows, and broad device coverage.',
					'url'         => ethnic_app_development_page_url( 'services/app-development/android-app-development' ),
				),
				array(
					'icon'        => 'flutter',
					'title'       => 'Flutter App Development',
					'description' => 'Cross-platform Flutter apps that support faster launch cycles while maintaining a high-quality user experience.',
					'url'         => ethnic_app_development_page_url( 'services/app-development/flutter-app-development' ),
				),
			array(
				'icon'        => 'react-native',
				'title'       => 'React Native App Development',
				'description' => 'React Native solutions for mobile products that need shared velocity across iOS and Android delivery.',
				'url'         => ethnic_app_development_page_url( 'services/app-development/react-native-app-development' ),
			),
			array(
				'icon'        => 'web',
				'title'       => 'Web App Development',
				'description' => 'Modern web applications for customer portals, admin panels, SaaS platforms, and workflow systems.',
				'url'         => ethnic_app_development_page_url( 'services/app-development/web-app-development' ),
			),
			array(
				'icon'        => 'maintenance',
				'title'       => 'App Maintenance & Support',
				'description' => 'Post-launch support, optimization, bug fixing, feature enhancement, and stability improvements.',
				'url'         => ethnic_app_development_page_url( 'services/app-development/app-maintenance-support' ),
			),
		);

		$process_steps = array(
			array(
				'title' => 'Discovery & Strategy',
				'text'  => 'We define goals, user needs, feature priorities, technical constraints, and business outcomes before development starts.',
			),
			array(
				'title' => 'Planning & Wireframing',
				'text'  => 'We translate the product direction into flows, structure, release priorities, and implementation-ready planning.',
			),
			array(
				'title' => 'UI/UX Design',
				'text'  => 'We shape app interfaces that are clear, modern, conversion-aware, and easier for real users to navigate.',
			),
			array(
				'title' => 'Development',
				'text'  => 'Our app development team builds the product in focused iterations with strong engineering and delivery discipline.',
			),
			array(
				'title' => 'QA & Testing',
				'text'  => 'We validate quality across functionality, usability, edge cases, and release readiness before launch.',
			),
			array(
				'title' => 'Deployment',
				'text'  => 'We handle release preparation, launch coordination, and environment readiness for a smoother go-live.',
			),
			array(
				'title' => 'Support & Optimization',
				'text'  => 'After launch, we support app stability, iteration planning, performance tuning, and roadmap improvements.',
			),
		);

		$tech_groups = array(
			array(
				'label'       => 'Mobile',
				'description' => 'Core mobile app technologies for native and cross-platform app delivery.',
				'items'       => array( 'iOS', 'Android', 'Flutter', 'React Native' ),
			),
			array(
				'label'       => 'Frontend',
				'description' => 'Modern frontend stacks used for portals, dashboards, and customer-facing web applications.',
				'items'       => array( 'React', 'Next.js', 'HTML5', 'Tailwind' ),
			),
			array(
				'label'       => 'Backend',
				'description' => 'Backend technologies used for APIs, admin systems, integrations, and scalable logic.',
				'items'       => array( 'Node.js', 'PHP', 'Laravel', '.NET' ),
			),
			array(
				'label'       => 'Database',
				'description' => 'Databases and backend data systems chosen based on app complexity and product needs.',
				'items'       => array( 'MySQL', 'PostgreSQL', 'MongoDB', 'Firebase' ),
			),
			array(
				'label'       => 'Cloud & DevOps',
				'description' => 'Cloud infrastructure and DevOps tooling that support stable releases and scalable environments.',
				'items'       => array( 'AWS', 'Docker', 'CI/CD' ),
			),
			array(
				'label'       => 'Integrations',
				'description' => 'Common integration capabilities used in custom application development services.',
				'items'       => array( 'REST API', 'GraphQL', 'Payment Gateway', 'CRM/ERP' ),
			),
		);

		$industries = array(
			array(
				'icon'  => 'retail',
				'title' => 'Retail',
				'text'  => 'Commerce apps, customer journeys, loyalty experiences, and operational visibility for modern retail growth.',
			),
			array(
				'icon'  => 'healthcare',
				'title' => 'Healthcare',
				'text'  => 'Patient-facing applications, workflow systems, and digital products designed for usability and trust.',
			),
			array(
				'icon'  => 'fintech',
				'title' => 'Fintech',
				'text'  => 'Secure application experiences for onboarding, dashboards, operations, and product confidence.',
			),
			array(
				'icon'  => 'logistics',
				'title' => 'Logistics',
				'text'  => 'Tracking apps, internal tools, and operational platforms that improve coordination and visibility.',
			),
			array(
				'icon'  => 'education',
				'title' => 'Education',
				'text'  => 'Learning applications, portals, and engagement systems that support accessibility and retention.',
			),
			array(
				'icon'  => 'gaming',
				'title' => 'Gaming',
				'text'  => 'Interactive platforms, player-focused experiences, and scalable digital products for gaming brands.',
			),
			array(
				'icon'  => 'manufacturing',
				'title' => 'Manufacturing',
				'text'  => 'Operational applications, dashboards, and internal systems that modernize process-heavy environments.',
			),
		);

		$case_studies = ethnic_shared_service_case_studies( ethnic_app_development_page_case_study_defaults(), 3 );

		$why_choose_us = array(
			array(
				'icon'  => 'briefcase',
				'title' => 'Business-First Development Approach',
				'text'  => 'We connect product decisions to business goals, operations, growth plans, and practical delivery constraints.',
			),
			array(
				'icon'  => 'tailored',
				'title' => 'Custom Solutions, Not One-Size-Fits-All',
				'text'  => 'Every app is shaped around your workflow, users, roadmap, and integration reality rather than a generic template.',
			),
			array(
				'icon'  => 'clean-code',
				'title' => 'Scalable & Clean Architecture',
				'text'  => 'We design maintainable systems that are easier to evolve, support, and extend as your product grows.',
			),
			array(
				'icon'  => 'communication',
				'title' => 'Transparent Communication',
				'text'  => 'You get documented priorities, clear checkpoints, and a delivery process that stays understandable for stakeholders.',
			),
			array(
				'icon'  => 'agile',
				'title' => 'Agile Delivery Process',
				'text'  => 'We move in focused iterations so teams can validate direction earlier and reduce late-stage delivery risk.',
			),
			array(
				'icon'  => 'growth',
				'title' => 'Long-Term Support & Enhancement',
				'text'  => 'We continue after launch with optimization, enhancements, and support that help the product stay effective over time.',
			),
		);

		$faqs = array(
			array(
				'question' => 'What types of app development services do you offer?',
				'answer'   => 'We offer custom app development services covering mobile apps, web apps, cross-platform products, custom software, and long-term application support.',
			),
			array(
				'question' => 'Do you build both mobile and web applications?',
				'answer'   => 'Yes. We build both mobile and web applications depending on the product strategy, user journey, and business requirements.',
			),
			array(
				'question' => 'Which technologies do you use for app development?',
				'answer'   => 'We work with technologies such as iOS, Android, Flutter, React Native, React, Next.js, Node.js, PHP, Laravel, .NET, AWS, and more.',
			),
			array(
				'question' => 'Can you modernize or rebuild an existing application?',
				'answer'   => 'Yes. We help modernize legacy apps, improve architecture, redesign the user experience, and rebuild products that are hard to scale.',
			),
			array(
				'question' => 'Do you provide app maintenance and support after launch?',
				'answer'   => 'Yes. We provide post-launch support including bug fixing, monitoring, optimization, enhancement work, and ongoing technical guidance.',
			),
			array(
				'question' => 'How long does it take to build an app?',
				'answer'   => 'Timelines depend on scope, platform coverage, integrations, and product complexity, but we help define a realistic phased plan early in discovery.',
			),
			array(
				'question' => 'Do you work with startups as well as established businesses?',
				'answer'   => 'Yes. We support startups, SMBs, and enterprise teams with app development services aligned to their stage, resources, and goals.',
			),
			array(
				'question' => 'Can you build cross-platform apps using Flutter or React Native?',
				'answer'   => 'Yes. We build cross-platform applications with Flutter and React Native when speed, shared delivery, and business needs make them the right fit.',
			),
			array(
				'question' => 'Will my app be scalable for future growth?',
				'answer'   => 'That is a core part of our approach. We focus on architecture, maintainability, and extensibility so your app can support future growth.',
			),
			array(
				'question' => 'How do you handle testing and quality assurance?',
				'answer'   => 'We include QA and testing throughout delivery, covering functionality, usability, edge cases, performance, and release readiness before deployment.',
			),
		);

		$overview_metrics = array(
			array(
				'value' => 'Startup to Enterprise',
				'label' => 'Delivery range',
			),
			array(
				'value' => 'Mobile + Web',
				'label' => 'Platform coverage',
			),
			array(
				'value' => 'Launch + Support',
				'label' => 'Lifecycle ownership',
			),
		);

		ob_start();
		?>
		<div class="ethnic-app-development-page" data-ethnic-app-development-page>
			<section class="ethnic-app-dev-section ethnic-app-dev-section--hero">
				<div class="ethnic-app-dev-shell ethnic-app-dev-hero">
					<div class="ethnic-app-dev-hero__content">
						<p class="ethnic-app-dev-kicker">App Development Services</p>
						<h1 class="ethnic-app-dev-hero__title">App Development Services</h1>
						<p class="ethnic-app-dev-hero__copy">Work with an app development company that builds custom mobile apps, web apps, and scalable digital products around your business goals. We help startups, SMBs, and enterprise teams turn ideas, workflows, and modernization needs into maintainable applications ready to grow.</p>
						<div class="ethnic-app-dev-actions">
							<a class="ethnic-app-dev-button ethnic-app-dev-button--primary" href="<?php echo esc_url( ethnic_app_development_page_contact_url( array( 'intent' => 'consultation', 'service' => 'app-development' ) ) ); ?>">Book a Free Consultation</a>
							<a class="ethnic-app-dev-button ethnic-app-dev-button--secondary" href="#app-case-studies">View Case Studies</a>
						</div>
						<ul class="ethnic-app-dev-trust-list" aria-label="App development service highlights">
							<?php foreach ( $hero_points as $point ) : ?>
								<li>
									<span class="ethnic-app-dev-trust-list__icon" aria-hidden="true"><?php echo ethnic_app_development_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-app-dev-hero__visual" aria-hidden="true">
						<div class="ethnic-app-dev-device-stack">
							<div class="ethnic-app-dev-device ethnic-app-dev-device--tablet">
								<div class="ethnic-app-dev-device__screen">
									<div class="ethnic-app-dev-ui-card ethnic-app-dev-ui-card--header">
										<span class="ethnic-app-dev-ui-card__label">Product roadmap</span>
										<span class="ethnic-app-dev-ui-card__value">Launch-ready</span>
									</div>
									<div class="ethnic-app-dev-ui-chart">
										<span></span>
										<span></span>
										<span></span>
										<span></span>
										<span></span>
									</div>
									<div class="ethnic-app-dev-ui-metrics">
										<div class="ethnic-app-dev-ui-metric">
											<strong>4.8</strong>
											<span>User rating</span>
										</div>
										<div class="ethnic-app-dev-ui-metric">
											<strong>24/7</strong>
											<span>Monitoring</span>
										</div>
									</div>
								</div>
							</div>
							<div class="ethnic-app-dev-device ethnic-app-dev-device--phone">
								<div class="ethnic-app-dev-device__screen">
									<div class="ethnic-app-dev-phone-top">
										<span></span>
										<span></span>
										<span></span>
									</div>
									<div class="ethnic-app-dev-phone-card">
										<p>App performance</p>
										<strong>99.9%</strong>
									</div>
									<div class="ethnic-app-dev-phone-card ethnic-app-dev-phone-card--accent">
										<p>Feature adoption</p>
										<strong>+38%</strong>
									</div>
								</div>
							</div>
							<div class="ethnic-app-dev-float ethnic-app-dev-float--top">
								<span>Custom mobile & web apps</span>
							</div>
							<div class="ethnic-app-dev-float ethnic-app-dev-float--bottom">
								<span>From idea to launch support</span>
							</div>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-app-dev-section" id="app-service-overview">
				<div class="ethnic-app-dev-shell">
					<?php echo ethnic_app_development_page_heading( 'Service Overview', 'Custom app development services built around product goals, performance, and long-term growth.', 'We help startups, SMBs, and enterprise teams plan, design, and develop custom applications across mobile, web, and cross-platform ecosystems.' ); ?>
					<div class="ethnic-app-dev-overview">
						<div class="ethnic-app-dev-overview__copy">
							<p>As a mobile app development company and custom app development partner, we focus on building practical digital products that solve real operational or market-facing problems. That includes customer apps, internal platforms, admin systems, business process tools, and product-led experiences.</p>
							<p>Our delivery model covers mobile app development, web app development, and cross-platform app execution using the technology stack that best fits the product stage, user needs, and long-term roadmap.</p>
							<p>Across every engagement, we prioritize product clarity, performance, scalability, UX quality, and maintainability so the application remains valuable well after the first release.</p>
							<div class="ethnic-app-dev-overview__stats">
								<?php foreach ( $overview_metrics as $metric ) : ?>
									<div class="ethnic-app-dev-overview__stat">
										<strong><?php echo esc_html( $metric['value'] ); ?></strong>
										<span><?php echo esc_html( $metric['label'] ); ?></span>
									</div>
								<?php endforeach; ?>
							</div>
						</div>
						<div class="ethnic-app-dev-feature-rail" aria-label="App development strengths">
							<?php foreach ( $overview_features as $feature ) : ?>
								<article class="ethnic-app-dev-feature-band">
									<span class="ethnic-app-dev-icon-badge" aria-hidden="true"><?php echo ethnic_app_development_page_icon( $feature['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
									<div class="ethnic-app-dev-feature-band__body">
										<h3><?php echo esc_html( $feature['title'] ); ?></h3>
										<p><?php echo esc_html( $feature['text'] ); ?></p>
									</div>
								</article>
							<?php endforeach; ?>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-app-dev-section ethnic-app-dev-section--soft" id="app-problems-solved">
				<div class="ethnic-app-dev-shell">
					<?php echo ethnic_app_development_page_heading( 'Business Problems Solved', 'Application development that addresses operational friction, product gaps, and scalability challenges.', 'We design and build digital applications around the issues that usually slow teams down, delay launches, or limit growth.' ); ?>
					<div class="ethnic-app-dev-problem-matrix">
						<?php foreach ( $problems as $index => $problem ) : ?>
							<article class="ethnic-app-dev-problem-strip">
								<div class="ethnic-app-dev-problem-strip__lead">
									<span class="ethnic-app-dev-problem-strip__count"><?php echo esc_html( str_pad( (string) ( $index + 1 ), 2, '0', STR_PAD_LEFT ) ); ?></span>
									<span class="ethnic-app-dev-icon-badge ethnic-app-dev-icon-badge--soft" aria-hidden="true"><?php echo ethnic_app_development_page_icon( $problem['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
								</div>
								<div class="ethnic-app-dev-problem-strip__body">
									<h3><?php echo esc_html( $problem['title'] ); ?></h3>
									<p><?php echo esc_html( $problem['text'] ); ?></p>
								</div>
							</article>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-app-dev-section" id="app-sub-services">
				<div class="ethnic-app-dev-shell">
					<?php echo ethnic_app_development_page_heading( 'Sub-Services', 'App development services that branch into the mobile, web, and support capabilities teams usually need.', 'Each sub-service can support a broader application strategy or a focused delivery requirement depending on your roadmap.' ); ?>
					<div class="ethnic-app-dev-subservice-directory">
						<?php foreach ( $sub_services as $service ) : ?>
							<article class="ethnic-app-dev-subservice-row">
								<a class="ethnic-app-dev-subservice-row__link" href="<?php echo esc_url( $service['url'] ); ?>">
									<span class="ethnic-app-dev-icon-badge ethnic-app-dev-subservice-row__icon" aria-hidden="true"><?php echo ethnic_app_development_page_icon( $service['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
									<div class="ethnic-app-dev-subservice-row__body">
										<h3><?php echo esc_html( $service['title'] ); ?></h3>
										<p><?php echo esc_html( $service['description'] ); ?></p>
									</div>
									<span class="ethnic-app-dev-subservice-row__cta">Learn More</span>
								</a>
							</article>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-app-dev-section ethnic-app-dev-section--workflow" id="app-process">
				<div class="ethnic-app-dev-shell">
					<?php echo ethnic_app_development_page_heading( 'Process / Workflow', 'A structured app development workflow from discovery to support.', 'We keep delivery visible and accountable across the full application lifecycle, from early strategy through release and optimization.' ); ?>
					<div class="ethnic-app-dev-process">
						<?php foreach ( $process_steps as $index => $step ) : ?>
							<article class="ethnic-app-dev-process-step">
								<span class="ethnic-app-dev-process-step__number"><?php echo esc_html( str_pad( (string) ( $index + 1 ), 2, '0', STR_PAD_LEFT ) ); ?></span>
								<h3><?php echo esc_html( $step['title'] ); ?></h3>
								<p><?php echo esc_html( $step['text'] ); ?></p>
							</article>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-app-dev-section" id="app-technology-stack">
				<div class="ethnic-app-dev-shell">
					<?php echo ethnic_app_development_page_heading( 'Technology Stack', 'Technology stacks selected for app delivery, performance, integration, and future scalability.', 'We work across mobile, frontend, backend, data, cloud, and integration layers to support custom application development services.' ); ?>
					<div class="ethnic-app-dev-tech-board">
						<?php foreach ( $tech_groups as $group ) : ?>
							<div class="ethnic-app-dev-tech-row">
								<div class="ethnic-app-dev-tech-row__meta">
									<p class="ethnic-app-dev-tech-row__label"><?php echo esc_html( $group['label'] ); ?></p>
									<p class="ethnic-app-dev-tech-row__copy"><?php echo esc_html( $group['description'] ); ?></p>
								</div>
								<div class="ethnic-app-dev-tech-row__chips" aria-label="<?php echo esc_attr( $group['label'] . ' technologies' ); ?>">
									<?php foreach ( $group['items'] as $item ) : ?>
										<span class="ethnic-app-dev-chip"><?php echo esc_html( $item ); ?></span>
									<?php endforeach; ?>
								</div>
							</div>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-app-dev-section ethnic-app-dev-section--soft" id="app-industries">
				<div class="ethnic-app-dev-shell">
					<?php echo ethnic_app_development_page_heading( 'Industries Supported', 'Application experiences shaped around the operational and customer realities of the industries we serve most.', 'Our app development work adapts to sector-specific workflows, compliance needs, business models, and user expectations.' ); ?>
					<div class="ethnic-app-dev-industries">
						<div class="ethnic-app-dev-industries__intro">
							<h3>Industry-aware product delivery for teams building customer apps, internal tools, and digital platforms.</h3>
							<p>We support organizations that need an app development company able to understand industry context, not just code requirements. That means designing around operations, customer expectations, integration dependencies, and future growth.</p>
							<div class="ethnic-app-dev-stat-grid">
								<div class="ethnic-app-dev-stat">
									<strong>7</strong>
									<span>Core industries featured</span>
								</div>
								<div class="ethnic-app-dev-stat">
									<strong>Mobile + Web</strong>
									<span>Delivery coverage</span>
								</div>
								<div class="ethnic-app-dev-stat">
									<strong>Product-led</strong>
									<span>Execution mindset</span>
								</div>
							</div>
						</div>
						<div class="ethnic-app-dev-industry-list">
							<?php foreach ( $industries as $industry ) : ?>
								<article class="ethnic-app-dev-industry-row">
									<span class="ethnic-app-dev-industry-row__icon" aria-hidden="true"><?php echo ethnic_app_development_page_icon( $industry['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
									<div class="ethnic-app-dev-industry-row__copy">
										<h3><?php echo esc_html( $industry['title'] ); ?></h3>
										<p><?php echo esc_html( $industry['text'] ); ?></p>
									</div>
								</article>
							<?php endforeach; ?>
						</div>
					</div>
				</div>
			</section>

			<?php if ( ! empty( $case_studies ) ) : ?>
			<section class="ethnic-app-dev-section" id="app-case-studies">
				<div class="ethnic-app-dev-shell">
					<?php echo ethnic_app_development_page_heading( 'Case Studies', 'Selected app development case studies presented in the same showcase format used on the home page.', 'These previews highlight the kind of product, workflow, and platform delivery we support across custom application engagements.' ); ?>
					<?php echo ethnic_shared_case_study_showcase_render( $case_studies ); ?>
				</div>
			</section>
			<?php endif; ?>

			<section class="ethnic-app-dev-section ethnic-app-dev-section--soft" id="app-why-us">
				<div class="ethnic-app-dev-shell">
					<div class="ethnic-app-dev-why">
						<div class="ethnic-app-dev-why__intro">
							<?php echo ethnic_app_development_page_heading( 'Why Choose Us', 'An app development company focused on commercial outcomes, not just feature delivery.', 'We bring together product thinking, engineering discipline, and clear delivery ownership so teams can launch and scale with more confidence.' ); ?>
							<p>Whether you need a new custom mobile app, a web application, or modernization support for an existing platform, we structure the work around clarity, scale, and dependable execution.</p>
						</div>
						<div class="ethnic-app-dev-why-list">
							<?php foreach ( $why_choose_us as $index => $reason ) : ?>
								<article class="ethnic-app-dev-why-item">
									<span class="ethnic-app-dev-why-item__number"><?php echo esc_html( str_pad( (string) ( $index + 1 ), 2, '0', STR_PAD_LEFT ) ); ?></span>
									<div class="ethnic-app-dev-why-item__body">
										<div class="ethnic-app-dev-why-item__heading">
											<span class="ethnic-app-dev-icon-badge ethnic-app-dev-icon-badge--soft" aria-hidden="true"><?php echo ethnic_app_development_page_icon( $reason['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
											<h3><?php echo esc_html( $reason['title'] ); ?></h3>
										</div>
										<p><?php echo esc_html( $reason['text'] ); ?></p>
									</div>
								</article>
							<?php endforeach; ?>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-app-dev-section" id="app-faq">
				<div class="ethnic-app-dev-shell ethnic-app-dev-shell--narrow">
					<?php echo ethnic_app_development_page_heading( 'FAQs', 'Questions teams usually ask before starting an app development engagement.' ); ?>
					<div class="ethnic-app-dev-faq">
						<?php foreach ( $faqs as $index => $faq ) : ?>
							<details class="ethnic-app-dev-faq__item" <?php echo 0 === $index ? 'open' : ''; ?>>
								<summary>
									<span><?php echo esc_html( $faq['question'] ); ?></span>
									<span class="ethnic-app-dev-faq__marker" aria-hidden="true"></span>
								</summary>
								<div class="ethnic-app-dev-faq__answer">
									<p><?php echo esc_html( $faq['answer'] ); ?></p>
								</div>
							</details>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-app-dev-section ethnic-app-dev-section--cta" id="app-cta">
				<div class="ethnic-app-dev-shell">
					<div class="ethnic-app-dev-cta">
						<div class="ethnic-app-dev-cta__copy">
							<p class="ethnic-app-dev-kicker ethnic-app-dev-kicker--light">Ready to Talk</p>
							<h2>Ready to Build Your Next App?</h2>
							<p>Whether you are planning a new product, modernizing an existing application, or exploring custom app development services for a specific business workflow, we can help define the right next step.</p>
						</div>
						<div class="ethnic-app-dev-actions ethnic-app-dev-actions--cta">
							<a class="ethnic-app-dev-button ethnic-app-dev-button--primary" href="<?php echo esc_url( ethnic_app_development_page_contact_url( array( 'intent' => 'consultation', 'service' => 'app-development' ) ) ); ?>">Talk to Our Team</a>
							<a class="ethnic-app-dev-button ethnic-app-dev-button--secondary" href="<?php echo esc_url( ethnic_app_development_page_contact_url( array( 'intent' => 'quote', 'service' => 'app-development' ) ) ); ?>">Get a Free Quote</a>
						</div>
					</div>
				</div>
			</section>
		</div>
		<?php

		return ob_get_clean();
	}
}

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

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

.ethnic-app-development-page {
	--ethnic-app-dev-text: #0f172a;
	--ethnic-app-dev-muted: #586b84;
	--ethnic-app-dev-border: rgba(15, 23, 42, 0.08);
	--ethnic-app-dev-surface: rgba(255, 255, 255, 0.96);
	--ethnic-app-dev-surface-soft: rgba(246, 249, 255, 0.98);
	--ethnic-app-dev-accent: #2f6bff;
	--ethnic-app-dev-lime: #e7ff89;
	--ethnic-app-dev-shadow: 0 22px 60px rgba(15, 23, 42, 0.08);
	--ethnic-app-dev-shadow-hover: 0 30px 80px rgba(15, 23, 42, 0.12);
	color: var(--ethnic-app-dev-text);
}

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

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

.ethnic-app-dev-shell--narrow {
	width: min(980px, calc(100% - (var(--ethnic-page-shell-padding, 36px) * 2)));
}

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

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

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

.ethnic-app-dev-kicker,
.ethnic-app-dev-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-app-dev-kicker--light {
	background: rgba(255, 255, 255, 0.1);
	border-color: rgba(255, 255, 255, 0.14);
	color: #ffffff;
}

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

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

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

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

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

.ethnic-app-dev-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-app-dev-button:hover,
.ethnic-app-dev-button:focus-visible {
	transform: translateY(-2px);
	outline: none;
}

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

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

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

.ethnic-app-dev-hero {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(420px, 0.92fr);
	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-app-dev-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-app-dev-hero__content,
.ethnic-app-dev-hero__visual {
	position: relative;
	z-index: 1;
}

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

.ethnic-app-dev-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-app-dev-trust-list {
	display: flex;
	flex-wrap: wrap;
	gap: 14px 18px;
	margin: 24px 0 0;
	padding: 0;
	list-style: none;
}

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

.ethnic-app-dev-trust-list__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-app-dev-lime);
}

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

.ethnic-app-dev-device-stack {
	position: relative;
	min-height: 520px;
}

.ethnic-app-dev-device {
	position: absolute;
	border-radius: 34px;
	background: rgba(255, 255, 255, 0.92);
	box-shadow: 0 28px 60px rgba(3, 10, 25, 0.18);
}

.ethnic-app-dev-device--tablet {
	top: 18px;
	right: 18px;
	width: min(100%, 470px);
	padding: 18px;
}

.ethnic-app-dev-device--phone {
	left: 24px;
	bottom: 8px;
	width: 230px;
	padding: 14px;
	border-radius: 32px;
	background: #f9fbff;
}

.ethnic-app-dev-device__screen {
	border-radius: 26px;
	overflow: hidden;
	background:
		linear-gradient(180deg, rgba(47, 107, 255, 0.12), rgba(255, 255, 255, 0.96)),
		#ffffff;
}

.ethnic-app-dev-device--tablet .ethnic-app-dev-device__screen {
	padding: 22px;
	min-height: 310px;
}

.ethnic-app-dev-device--phone .ethnic-app-dev-device__screen {
	padding: 16px;
	min-height: 360px;
	background:
		radial-gradient(circle at top, rgba(47, 107, 255, 0.2), transparent 35%),
		linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(243, 247, 255, 0.98));
}

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

.ethnic-app-dev-ui-card__label {
	color: var(--ethnic-app-dev-muted);
	font-size: 13px;
	font-weight: 600;
}

.ethnic-app-dev-ui-card__value {
	color: var(--ethnic-app-dev-text);
	font-size: 13px;
	font-weight: 800;
}

.ethnic-app-dev-ui-chart {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	align-items: end;
	gap: 12px;
	height: 128px;
	margin-top: 18px;
	padding: 20px 16px 12px;
	border-radius: 22px;
	background: rgba(15, 23, 42, 0.05);
}

.ethnic-app-dev-ui-chart span {
	display: block;
	border-radius: 16px 16px 8px 8px;
	background: linear-gradient(180deg, rgba(47, 107, 255, 0.9), rgba(47, 107, 255, 0.24));
}

.ethnic-app-dev-ui-chart span:nth-child(1) { height: 48px; }
.ethnic-app-dev-ui-chart span:nth-child(2) { height: 76px; }
.ethnic-app-dev-ui-chart span:nth-child(3) { height: 108px; }
.ethnic-app-dev-ui-chart span:nth-child(4) { height: 88px; }
.ethnic-app-dev-ui-chart span:nth-child(5) { height: 118px; }

.ethnic-app-dev-ui-metrics {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px;
	margin-top: 18px;
}

.ethnic-app-dev-ui-metric {
	padding: 16px;
	border-radius: 18px;
	background: rgba(255, 255, 255, 0.94);
	border: 1px solid rgba(15, 23, 42, 0.08);
}

.ethnic-app-dev-ui-metric strong,
.ethnic-app-dev-phone-card strong {
	display: block;
	color: var(--ethnic-app-dev-text);
	font-size: 24px;
	line-height: 1;
}

.ethnic-app-dev-ui-metric span,
.ethnic-app-dev-phone-card p {
	display: block;
	margin-top: 8px;
	color: var(--ethnic-app-dev-muted);
	font-size: 12px;
	font-weight: 700;
}

.ethnic-app-dev-phone-top {
	display: flex;
	gap: 6px;
	justify-content: center;
	margin-bottom: 18px;
}

.ethnic-app-dev-phone-top span {
	display: block;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: rgba(47, 107, 255, 0.26);
}

.ethnic-app-dev-phone-card {
	padding: 16px;
	border-radius: 18px;
	background: #ffffff;
	border: 1px solid rgba(15, 23, 42, 0.08);
	box-shadow: 0 14px 24px rgba(15, 23, 42, 0.06);
}

.ethnic-app-dev-phone-card + .ethnic-app-dev-phone-card {
	margin-top: 14px;
}

.ethnic-app-dev-phone-card--accent {
	background: linear-gradient(180deg, rgba(47, 107, 255, 0.12), rgba(255, 255, 255, 0.96));
}

.ethnic-app-dev-float {
	position: absolute;
	display: inline-flex;
	align-items: center;
	min-height: 42px;
	padding: 0 16px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.14);
	border: 1px solid rgba(255, 255, 255, 0.18);
	backdrop-filter: blur(8px);
	color: #ffffff;
	font-size: 13px;
	font-weight: 700;
}

.ethnic-app-dev-float--top {
	left: 34px;
	top: 28px;
}

.ethnic-app-dev-float--bottom {
	right: 22px;
	bottom: 10px;
}

.ethnic-app-dev-overview {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(380px, 0.92fr);
	gap: 28px 36px;
	align-items: start;
}

.ethnic-app-dev-overview__copy > p {
	margin: 0;
}

.ethnic-app-dev-overview__copy > p + p {
	margin-top: 18px;
}

.ethnic-app-dev-overview__stats {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 14px;
	margin-top: 28px;
}

.ethnic-app-dev-overview__stat {
	padding: 18px;
	border: 1px solid var(--ethnic-app-dev-border);
	border-top: 3px solid rgba(47, 107, 255, 0.2);
	border-radius: 20px;
	background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 250, 255, 0.98));
	box-shadow: var(--ethnic-app-dev-shadow);
}

.ethnic-app-dev-overview__stat strong {
	display: block;
	color: var(--ethnic-app-dev-text);
	font-size: 16px;
	line-height: 1.35;
	font-weight: 800;
}

.ethnic-app-dev-overview__stat span {
	display: block;
	margin-top: 8px;
	color: var(--ethnic-app-dev-muted);
	font-size: 12px;
	font-weight: 700;
	line-height: 1.5;
}

.ethnic-app-dev-feature-rail,
.ethnic-app-dev-case-feature,
.ethnic-app-dev-case-story,
.ethnic-app-dev-faq__item {
	border: 1px solid var(--ethnic-app-dev-border);
	border-radius: 28px;
	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-app-dev-shadow);
	transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.ethnic-app-dev-feature-rail:hover,
.ethnic-app-dev-case-feature:hover,
.ethnic-app-dev-case-story:hover,
.ethnic-app-dev-faq__item:hover {
	transform: translateY(-3px);
	box-shadow: var(--ethnic-app-dev-shadow-hover);
	border-color: rgba(47, 107, 255, 0.16);
}

.ethnic-app-dev-feature-rail {
	display: grid;
	gap: 0;
	padding: 28px;
	border-radius: 30px;
}

.ethnic-app-dev-feature-band {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 16px;
	align-items: start;
	padding: 18px 0;
}

.ethnic-app-dev-feature-band + .ethnic-app-dev-feature-band {
	border-top: 1px solid rgba(15, 23, 42, 0.08);
}

.ethnic-app-dev-icon-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	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-app-dev-accent);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}

.ethnic-app-dev-icon-badge--soft {
	background: linear-gradient(135deg, rgba(47, 107, 255, 0.12), rgba(255, 255, 255, 0.96));
}

.ethnic-app-dev-icon-badge svg,
.ethnic-app-dev-industry-row__icon svg {
	width: 24px;
	height: 24px;
	stroke: currentColor;
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
	fill: none;
}

.ethnic-app-dev-feature-band__body h3,
.ethnic-app-dev-problem-strip__body h3,
.ethnic-app-dev-subservice-row__body h3,
.ethnic-app-dev-tech-row__label,
.ethnic-app-dev-industry-row h3,
.ethnic-app-dev-case-feature__body h3,
.ethnic-app-dev-case-story h3,
.ethnic-app-dev-why-item__heading h3,
.ethnic-app-dev-faq__item summary {
	margin: 0;
	color: var(--ethnic-app-dev-text);
	font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
	font-size: clamp(21px, 1.5vw, 24px);
	line-height: 1.16;
	letter-spacing: -0.04em;
}

.ethnic-app-dev-feature-band__body p {
	margin: 10px 0 0;
}

.ethnic-app-dev-problem-matrix {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0 28px;
}

.ethnic-app-dev-problem-strip {
	display: flex;
	gap: 18px;
	align-items: flex-start;
	padding: 24px 0;
	border-top: 1px solid rgba(15, 23, 42, 0.08);
}

.ethnic-app-dev-problem-strip__lead {
	display: flex;
	flex-direction: column;
	gap: 14px;
	align-items: flex-start;
}

.ethnic-app-dev-problem-strip__count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	height: 32px;
	padding: 0 12px;
	border-radius: 999px;
	background: #0f172a;
	color: #ffffff;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.14em;
	line-height: 1;
}

.ethnic-app-dev-problem-strip__body p {
	margin: 10px 0 0;
}

.ethnic-app-dev-subservice-directory {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px 28px;
}

.ethnic-app-dev-subservice-row {
	border-top: 1px solid rgba(15, 23, 42, 0.08);
}

.ethnic-app-dev-subservice-row__link {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	gap: 18px;
	align-items: center;
	padding: 22px 0;
	color: inherit;
	text-decoration: none !important;
}

.ethnic-app-dev-subservice-row__body p {
	margin: 8px 0 0;
}

.ethnic-app-dev-subservice-row__cta,
.ethnic-app-dev-inline-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: var(--ethnic-app-dev-accent);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.02em;
}

.ethnic-app-dev-subservice-row__cta::after,
.ethnic-app-dev-inline-link::after {
	content: "→";
	font-size: 16px;
	line-height: 1;
	transition: transform 180ms ease;
}

.ethnic-app-dev-subservice-row__link:hover .ethnic-app-dev-subservice-row__cta::after,
.ethnic-app-dev-subservice-row__link:focus-visible .ethnic-app-dev-subservice-row__cta::after,
.ethnic-app-dev-inline-link:hover::after,
.ethnic-app-dev-inline-link:focus-visible::after {
	transform: translateX(2px);
}

.ethnic-app-dev-subservice-row__link:hover .ethnic-app-dev-subservice-row__body h3,
.ethnic-app-dev-subservice-row__link:focus-visible .ethnic-app-dev-subservice-row__body h3 {
	color: var(--ethnic-app-dev-accent);
}

.ethnic-app-dev-subservice-row__link:focus-visible,
.ethnic-app-dev-inline-link:focus-visible {
	outline: none;
}

.ethnic-app-dev-process {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 18px;
	position: relative;
}

.ethnic-app-dev-process::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 24px;
	height: 1px;
	background: linear-gradient(90deg, rgba(47, 107, 255, 0.14), rgba(47, 107, 255, 0.22), rgba(47, 107, 255, 0.14));
}

.ethnic-app-dev-process-step {
	position: relative;
	padding: 56px 18px 0;
}

.ethnic-app-dev-process-step__number {
	position: absolute;
	left: 18px;
	top: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	border-radius: 18px;
	background: linear-gradient(135deg, rgba(47, 107, 255, 0.18), rgba(255, 255, 255, 0.98));
	border: 1px solid rgba(47, 107, 255, 0.16);
	color: var(--ethnic-app-dev-accent);
	font-size: 13px;
	font-weight: 800;
	letter-spacing: 0.08em;
	box-shadow: var(--ethnic-app-dev-shadow);
}

.ethnic-app-dev-process-step h3 {
	margin: 0;
	color: var(--ethnic-app-dev-text);
	font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
	font-size: 19px;
	line-height: 1.2;
	letter-spacing: -0.03em;
}

.ethnic-app-dev-process-step p {
	margin: 12px 0 0;
	font-size: 14px;
	line-height: 1.62;
}

.ethnic-app-dev-tech-board {
	display: grid;
	gap: 16px;
}

.ethnic-app-dev-tech-row {
	display: grid;
	grid-template-columns: minmax(220px, 0.42fr) minmax(0, 1fr);
	gap: 22px;
	align-items: center;
	padding: 20px 24px;
	border: 1px solid var(--ethnic-app-dev-border);
	border-radius: 24px;
	background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 250, 255, 0.98));
	box-shadow: var(--ethnic-app-dev-shadow);
}

.ethnic-app-dev-tech-row__label {
	margin: 0;
	font-size: 15px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ethnic-app-dev-accent);
}

.ethnic-app-dev-tech-row__copy {
	margin: 10px 0 0;
	font-size: 14px;
	line-height: 1.62;
}

.ethnic-app-dev-tech-row__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.ethnic-app-dev-chip {
	display: inline-flex;
	align-items: center;
	min-height: 38px;
	padding: 0 14px;
	border-radius: 999px;
	background: rgba(47, 107, 255, 0.08);
	border: 1px solid rgba(47, 107, 255, 0.12);
	color: var(--ethnic-app-dev-text);
	font-size: 13px;
	font-weight: 700;
	line-height: 1;
}

.ethnic-app-dev-industries {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	gap: 30px;
	align-items: start;
}

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

.ethnic-app-dev-industries__intro h3 {
	margin: 0;
	color: var(--ethnic-app-dev-text);
	font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
	font-size: clamp(28px, 2.1vw, 34px);
	line-height: 1.08;
	letter-spacing: -0.05em;
}

.ethnic-app-dev-industries__intro p {
	margin: 18px 0 0;
}

.ethnic-app-dev-stat-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 14px;
	margin-top: 24px;
}

.ethnic-app-dev-stat {
	padding: 18px;
	border-radius: 20px;
	background: rgba(15, 23, 42, 0.04);
}

.ethnic-app-dev-stat strong {
	display: block;
	color: var(--ethnic-app-dev-text);
	font-size: 20px;
	line-height: 1.1;
}

.ethnic-app-dev-stat span {
	display: block;
	margin-top: 8px;
	color: var(--ethnic-app-dev-muted);
	font-size: 12px;
	font-weight: 700;
	line-height: 1.5;
}

.ethnic-app-dev-industry-list {
	display: grid;
	gap: 12px;
}

.ethnic-app-dev-industry-row {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 16px;
	align-items: start;
	padding: 18px 0;
	border-bottom: 1px solid rgba(15, 23, 42, 0.08);
}

.ethnic-app-dev-industry-row:first-child {
	padding-top: 0;
}

.ethnic-app-dev-industry-row__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	border-radius: 16px;
	background: rgba(47, 107, 255, 0.08);
	border: 1px solid rgba(47, 107, 255, 0.12);
	color: var(--ethnic-app-dev-accent);
}

.ethnic-app-dev-industry-row h3 {
	margin: 0;
	font-size: 20px;
}

.ethnic-app-dev-industry-row p {
	margin: 8px 0 0;
	font-size: 14px;
	line-height: 1.65;
}

.ethnic-app-dev-case-showcase {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr);
	gap: 22px;
	align-items: start;
}

.ethnic-app-dev-case-feature {
	display: grid;
	grid-template-columns: minmax(240px, 0.42fr) minmax(0, 1fr);
	overflow: hidden;
}

.ethnic-app-dev-case-feature__visual {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
	padding: 28px;
	background:
		radial-gradient(circle at top left, rgba(47, 107, 255, 0.16), transparent 36%),
		linear-gradient(135deg, #132241 0%, #173561 100%);
}

.ethnic-app-dev-case-feature__visual span {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	padding: 0 12px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.1);
	border: 1px solid rgba(255, 255, 255, 0.12);
	color: #ffffff;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

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

.ethnic-app-dev-case-feature__visual h3 {
	margin: 18px 0 0;
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff;
	font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
	font-size: clamp(30px, 2.4vw, 38px);
	line-height: 1.04;
	letter-spacing: -0.05em;
}

.ethnic-app-dev-case-feature__visual p {
	margin: 14px 0 0;
	color: rgba(255, 255, 255, 0.76) !important;
	-webkit-text-fill-color: rgba(255, 255, 255, 0.76);
	font-size: 14px;
	line-height: 1.68;
}

.ethnic-app-dev-case-feature__body {
	padding: 28px;
}

.ethnic-app-dev-case-feature__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: center;
}

.ethnic-app-dev-case-feature__body h3 {
	margin-top: 16px;
	font-size: clamp(26px, 2vw, 34px);
	line-height: 1.06;
}

.ethnic-app-dev-case-card__tag {
	margin: 0;
	color: var(--ethnic-app-dev-accent);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.ethnic-app-dev-case-feature__details {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 12px;
	margin-top: 22px;
}

.ethnic-app-dev-case-feature__detail {
	padding: 16px;
	border-radius: 20px;
	background: rgba(47, 107, 255, 0.06);
	border: 1px solid rgba(47, 107, 255, 0.1);
}

.ethnic-app-dev-case-feature__detail strong {
	display: block;
	color: var(--ethnic-app-dev-text);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.12em;
	line-height: 1;
	text-transform: uppercase;
}

.ethnic-app-dev-case-feature__detail p,
.ethnic-app-dev-case-story p {
	margin: 10px 0 0;
	font-size: 14px;
	line-height: 1.65;
}

.ethnic-app-dev-case-feature .ethnic-app-dev-inline-link {
	margin-top: 22px;
	text-decoration: none;
}

.ethnic-app-dev-case-stack {
	display: grid;
	gap: 16px;
}

.ethnic-app-dev-case-story {
	padding: 24px;
	border-radius: 24px;
}

.ethnic-app-dev-case-story h3 {
	margin: 12px 0 0;
}

.ethnic-app-dev-case-story strong {
	color: var(--ethnic-app-dev-text);
}

.ethnic-app-dev-case-story .ethnic-app-dev-inline-link {
	margin-top: 18px;
	text-decoration: none;
}

.ethnic-app-dev-why {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	gap: 30px;
	align-items: start;
}

.ethnic-app-dev-why__intro p {
	margin: 0;
}

.ethnic-app-dev-why-list {
	display: grid;
	gap: 0;
	border-top: 1px solid rgba(15, 23, 42, 0.08);
}

.ethnic-app-dev-why-item {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 18px;
	padding: 22px 0;
	border-bottom: 1px solid rgba(15, 23, 42, 0.08);
}

.ethnic-app-dev-why-item__number {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	border-radius: 16px;
	background: #0f172a;
	color: #ffffff;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.14em;
	line-height: 1;
}

.ethnic-app-dev-why-item__heading {
	display: flex;
	align-items: center;
	gap: 16px;
}

.ethnic-app-dev-why-item__body p {
	margin: 14px 0 0;
	padding-left: 68px;
}

.ethnic-app-dev-faq {
	display: grid;
	gap: 18px;
}

.ethnic-app-dev-faq__item {
	overflow: hidden;
}

.ethnic-app-dev-faq__item summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	padding: 24px 28px;
	cursor: pointer;
	list-style: none;
	font-size: clamp(18px, 1.35vw, 22px);
	font-weight: 600;
	line-height: 1.3;
}

.ethnic-app-dev-faq__item summary::-webkit-details-marker {
	display: none;
}

.ethnic-app-dev-faq__item[open] summary {
	color: var(--ethnic-app-dev-accent);
}

.ethnic-app-dev-faq__marker {
	position: relative;
	flex: 0 0 auto;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	border: 1px solid rgba(15, 23, 42, 0.12);
	background: rgba(255, 255, 255, 0.9);
}

.ethnic-app-dev-faq__marker::before,
.ethnic-app-dev-faq__marker::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 50%;
	width: 12px;
	height: 2px;
	border-radius: 999px;
	background: currentColor;
	transform: translate(-50%, -50%);
}

.ethnic-app-dev-faq__marker::after {
	transform: translate(-50%, -50%) rotate(90deg);
	transition: opacity 180ms ease;
}

.ethnic-app-dev-faq__item[open] .ethnic-app-dev-faq__marker::after {
	opacity: 0;
}

.ethnic-app-dev-faq__answer {
	padding: 0 28px 26px;
}

.ethnic-app-dev-faq__answer p {
	margin: 0;
}

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

.ethnic-app-dev-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-app-dev-cta h2,
.ethnic-app-dev-cta p {
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff;
}

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

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

	.ethnic-app-dev-problem-matrix,
	.ethnic-app-dev-subservice-directory,
	.ethnic-app-dev-case-showcase,
	.ethnic-app-dev-case-feature,
	.ethnic-app-dev-case-feature__details {
		grid-template-columns: 1fr;
	}

	.ethnic-app-dev-process {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.ethnic-app-dev-process::before {
		display: none;
	}

	.ethnic-app-dev-tech-row {
		grid-template-columns: 1fr;
	}
}

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

	.ethnic-app-dev-hero__title {
		max-width: 100%;
	}

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

	.ethnic-app-dev-device-stack {
		min-height: 440px;
	}
}

@media (max-width: 980px) {
	.ethnic-app-dev-overview__stats,
	.ethnic-app-dev-stat-grid {
		grid-template-columns: 1fr;
	}

	.ethnic-app-dev-subservice-directory {
		grid-template-columns: 1fr;
	}

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

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

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

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

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

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

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

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

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

	.ethnic-app-dev-device-stack {
		min-height: 360px;
	}

	.ethnic-app-dev-device--tablet {
		position: relative;
		top: auto;
		right: auto;
		width: 100%;
	}

	.ethnic-app-dev-device--phone {
		left: auto;
		right: 10px;
		bottom: -14px;
		width: 172px;
	}

	.ethnic-app-dev-float {
		display: none;
	}

	.ethnic-app-dev-feature-band,
	.ethnic-app-dev-subservice-row__link,
	.ethnic-app-dev-why-item {
		grid-template-columns: 1fr;
	}

	.ethnic-app-dev-problem-strip {
		flex-direction: column;
	}

	.ethnic-app-dev-problem-strip__lead {
		flex-direction: row;
		align-items: center;
	}

	.ethnic-app-dev-process {
		grid-template-columns: 1fr;
		gap: 22px;
	}

	.ethnic-app-dev-process-step {
		padding: 0 0 0 64px;
	}

	.ethnic-app-dev-process-step__number {
		left: 0;
	}

	.ethnic-app-dev-feature-rail,
	.ethnic-app-dev-case-feature__body,
	.ethnic-app-dev-case-story,
	.ethnic-app-dev-case-feature__visual,
	.ethnic-app-dev-industries__intro,
	.ethnic-app-dev-tech-row,
	.ethnic-app-dev-faq__item summary,
	.ethnic-app-dev-faq__answer,
	.ethnic-app-dev-cta {
		padding-left: 22px;
		padding-right: 22px;
	}

	.ethnic-app-dev-subservice-row__link,
	.ethnic-app-dev-problem-strip,
	.ethnic-app-dev-why-item {
		padding-left: 0;
		padding-right: 0;
	}

	.ethnic-app-dev-subservice-row__cta {
		margin-top: 6px;
	}

	.ethnic-app-dev-why-item__heading {
		gap: 12px;
	}

	.ethnic-app-dev-why-item__body p {
		padding-left: 0;
	}

	.ethnic-app-dev-tech-row__chips {
		gap: 8px;
	}

	.ethnic-app-dev-chip,
	.ethnic-app-dev-industry-row__copy p,
	.ethnic-app-dev-case-feature__detail p,
	.ethnic-app-dev-case-story p {
		font-size: 13px;
	}
}
CSS;
	}
}

if ( ! function_exists( 'ethnic_app_development_page_body_class' ) ) {
	function ethnic_app_development_page_body_class( $classes ) {
		if ( ethnic_app_development_page_is_target() ) {
			$classes[] = 'ethnic-app-development-target';
		}

		return $classes;
	}

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

if ( ! function_exists( 'ethnic_app_development_page_print_head_assets' ) ) {
	function ethnic_app_development_page_print_head_assets() {
		if ( ! ethnic_app_development_page_is_target() ) {
			return;
		}

		?>
		<style id="ethnic-app-development-page-inline-css" type="text/css">
			<?php echo ethnic_app_development_page_styles(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
		</style>
		<meta name="description" content="Looking for an app development company? We build custom mobile apps, web apps, and scalable software solutions for startups, SMBs, and enterprises." />
		<?php
	}

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

if ( ! function_exists( 'ethnic_app_development_page_document_title' ) ) {
	function ethnic_app_development_page_document_title( $title ) {
		if ( ethnic_app_development_page_is_target() ) {
			return 'App Development Services | Custom Mobile & Web App Development Company';
		}

		return $title;
	}

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

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

		static $rendered = false;

		if ( $rendered ) {
			return $content;
		}

		$rendered = true;

		return ethnic_app_development_page_render();
	}

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