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-android-app-development-page.php
<?php
/**
 * Plugin Name: Ethnic Android App Development Page
 * Description: Creates and renders the Android App Development sub-service page under App Development.
 * Version: 1.0.0
 */

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

if ( ! function_exists( 'ethnic_android_page_parent_id' ) ) {
	function ethnic_android_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_android_page_get_target_page' ) ) {
	function ethnic_android_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/android-app-development' );

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

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

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

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

		if ( $did_run ) {
			return;
		}

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

		if ( ! $parent_id ) {
			return;
		}

		$postarr = array(
			'post_type'      => 'page',
			'post_title'     => 'Android App Development',
			'post_name'      => 'android-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/android-app-development' );

		if ( $page instanceof WP_Post ) {
			$needs_update = 'Android 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( 'android-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_android_page_ensure_page', 5 );
}

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

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

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

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

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

		return ob_get_clean();
	}
}

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

		switch ( $icon ) {
			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 '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 '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 '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 'refresh':
				?>
				<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" />
				</svg>
				<?php
				break;
			case 'integration':
				?>
				<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 '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_android_page_render' ) ) {
	function ethnic_android_page_render() {
		$hero_points = array(
			'Custom Android app development',
			'Consumer and enterprise app solutions',
			'From product planning to launch and support',
		);

		$overview_features = array(
			array(
				'icon'  => 'android',
				'title' => 'Custom Android Solutions',
				'text'  => 'Tailored Android apps aligned with your business goals and workflows.',
			),
			array(
				'icon'  => 'architecture',
				'title' => 'Scalable App Architecture',
				'text'  => 'We design for performance, maintainability, and future growth.',
			),
			array(
				'icon'  => 'briefcase',
				'title' => 'Business-Focused Development',
				'text'  => 'We align product decisions with operational and revenue outcomes.',
			),
			array(
				'icon'  => 'support',
				'title' => 'Launch & Support',
				'text'  => 'We support release readiness, updates, and long-term stability.',
			),
		);

		$service_highlights = array(
			array(
				'title' => 'New Android app development',
				'text'  => 'From idea to production-ready Android applications.',
			),
			array(
				'title' => 'App redesign and modernization',
				'text'  => 'Modernize UX, performance, and architecture.',
			),
			array(
				'title' => 'API-connected mobile products',
				'text'  => 'Integrate data, services, and business logic.',
			),
			array(
				'title' => 'Business-specific feature development',
				'text'  => 'Custom workflows and product features.',
			),
		);

		$enterprise_points = array(
			'Internal operations support',
			'Employee workflows',
			'Approval systems',
			'Reporting tools',
			'Field mobility solutions',
		);

		$consumer_points = array(
			'Customer engagement',
			'eCommerce and payments',
			'Booking and service flows',
			'Loyalty and retention',
			'On-demand experiences',
		);

		$integration_groups = array(
			array(
				'title' => 'APIs & Backend Systems',
				'items' => array( 'REST APIs', 'GraphQL', 'Custom backends' ),
			),
			array(
				'title' => 'Payments & Transactions',
				'items' => array( 'Payment gateways', 'Subscriptions', 'In-app purchases' ),
			),
			array(
				'title' => 'CRM / ERP Integration',
				'items' => array( 'Sales platforms', 'ERP data sync', 'Customer data' ),
			),
			array(
				'title' => 'Analytics & Tracking',
				'items' => array( 'Event tracking', 'Usage analytics', 'Performance monitoring' ),
			),
			array(
				'title' => 'Notifications & Messaging',
				'items' => array( 'Push notifications', 'Email/SMS', 'In-app messaging' ),
			),
		);

		$deployment_checks = array(
			array(
				'title' => 'Release build preparation',
				'text'  => 'Signing, packaging, and final pre-submission build validation before release.',
			),
			array(
				'title' => 'Store readiness checks',
				'text'  => 'Listing content, metadata, assets, and console setup reviewed before launch.',
			),
			array(
				'title' => 'Versioning support',
				'text'  => 'Release numbering, build sequencing, and update planning structured clearly.',
			),
			array(
				'title' => 'Rollout planning',
				'text'  => 'Staged release workflows and launch timing planned around product priorities.',
			),
			array(
				'title' => 'Launch assistance',
				'text'  => 'Submission support, approval follow-through, and go-live coordination when needed.',
			),
			array(
				'title' => 'Post-release updates',
				'text'  => 'Patch planning, iterative improvements, and ongoing release continuity after launch.',
			),
		);

		$deployment_highlights = array(
			array(
				'title' => 'Submission readiness',
				'text'  => 'Store listing assets, review expectations, and pre-launch validation aligned before release.',
			),
			array(
				'title' => 'Staged rollout control',
				'text'  => 'Version timing, phased rollout planning, and cleaner go-live coordination across teams.',
			),
			array(
				'title' => 'Post-launch continuity',
				'text'  => 'Update planning, hotfix readiness, and ongoing release support after production launch.',
			),
		);

		$testing_points = array(
			'Functional testing',
			'Device compatibility',
			'UI validation',
			'Performance checks',
			'Integration testing',
			'Pre-release issue resolution',
		);

		$case_studies = ethnic_shared_service_case_studies(
			array(
				array(
					'industry'     => 'Logistics',
					'title'        => 'Android Field Operations Suite',
					'summary'      => 'Delivered an Android app for real-time field coordination and reporting.',
					'technologies' => array( 'Android', 'Logistics', 'Field Reporting' ),
				),
				array(
					'industry'     => 'Retail',
					'title'        => 'Consumer Commerce App',
					'summary'      => 'Built a high-performance Android commerce experience with checkout and loyalty flows.',
					'technologies' => array( 'Android', 'Retail', 'Commerce' ),
				),
				array(
					'industry'     => 'Healthcare',
					'title'        => 'Enterprise Patient Workflow Tool',
					'summary'      => 'Created an Android workflow app for care team operations and data access.',
					'technologies' => array( 'Android', 'Healthcare', 'Workflow' ),
				),
			),
			3
		);

		ob_start();
		?>
		<div class="ethnic-android-page" data-ethnic-android-page>
			<section class="ethnic-android-section ethnic-android-section--hero">
				<div class="ethnic-android-shell ethnic-android-hero">
					<div class="ethnic-android-hero__content">
						<p class="ethnic-android-kicker">Android App Development</p>
						<h1 class="ethnic-android-hero__title">Android App Development</h1>
						<p class="ethnic-android-hero__copy">Build scalable, high-performing Android apps for startups, enterprises, and digital products. Our Android app development services focus on usability, performance, and long-term maintainability.</p>
						<div class="ethnic-android-actions">
							<a class="ethnic-android-button ethnic-android-button--primary" href="<?php echo esc_url( ethnic_android_page_contact_url( array( 'intent' => 'consultation', 'service' => 'android-app-development' ) ) ); ?>">Book a Free Consultation</a>
							<a class="ethnic-android-button ethnic-android-button--secondary" href="#android-case-studies">View Case Studies</a>
						</div>
						<ul class="ethnic-android-trust">
							<?php foreach ( $hero_points as $point ) : ?>
								<li>
									<span class="ethnic-android-trust__icon" aria-hidden="true"><?php echo ethnic_android_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-android-hero__visual" aria-hidden="true">
						<div class="ethnic-android-mockup">
							<div class="ethnic-android-mockup__phone">
								<div class="ethnic-android-mockup__screen">
									<div class="ethnic-android-mockup__pill">Android UI</div>
									<div class="ethnic-android-mockup__cards">
										<div>
											<strong>Crash-free</strong>
											<span>99.8%</span>
										</div>
										<div>
											<strong>Active users</strong>
											<span>+28%</span>
										</div>
									</div>
									<div class="ethnic-android-mockup__list">
										<span></span>
										<span></span>
										<span></span>
									</div>
								</div>
							</div>
							<div class="ethnic-android-mockup__glow"></div>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-android-section" id="android-overview">
				<div class="ethnic-android-shell">
					<?php echo ethnic_android_page_heading( 'Service Overview', 'Android app development services built for modern business products and operational tools.', 'We develop custom Android applications for startups, SMBs, and enterprises that need scalable mobile experiences.' ); ?>
					<div class="ethnic-android-overview">
						<div class="ethnic-android-overview__copy">
							<p>Our Android app development services cover consumer apps, internal tools, operational platforms, and digital products. We focus on performance, usability, and clean architecture so the app scales as your business grows.</p>
							<p>From discovery and design to launch and enhancement, we provide a clear, accountable delivery process.</p>
							<p>We build Android products that align with business outcomes and long-term maintainability.</p>
						</div>
						<div class="ethnic-android-feature-grid">
							<?php foreach ( $overview_features as $feature ) : ?>
								<article class="ethnic-android-feature">
									<span class="ethnic-android-icon" aria-hidden="true"><?php echo ethnic_android_page_icon( $feature['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
									<h3><?php echo esc_html( $feature['title'] ); ?></h3>
									<p><?php echo esc_html( $feature['text'] ); ?></p>
								</article>
							<?php endforeach; ?>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-android-section ethnic-android-section--soft" id="android-services">
				<div class="ethnic-android-shell">
					<?php echo ethnic_android_page_heading( 'Android App Development Services', 'End-to-end Android app delivery with product and engineering discipline.', 'We build Android apps for new products, modernization, and API-connected workflows.' ); ?>
					<div class="ethnic-android-services">
						<?php foreach ( $service_highlights as $item ) : ?>
							<article class="ethnic-android-service">
								<h3><?php echo esc_html( $item['title'] ); ?></h3>
								<p><?php echo esc_html( $item['text'] ); ?></p>
							</article>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-android-section" id="android-app-types">
				<div class="ethnic-android-shell">
					<?php echo ethnic_android_page_heading( 'Enterprise and Consumer Apps', 'Android apps built for internal teams and customer experiences alike.', 'We align product design with the needs of business users or end customers.' ); ?>
					<div class="ethnic-android-app-types">
						<div class="ethnic-android-app-types__card">
							<h3>Enterprise Apps</h3>
							<ul>
								<?php foreach ( $enterprise_points as $point ) : ?>
									<li><?php echo esc_html( $point ); ?></li>
								<?php endforeach; ?>
							</ul>
						</div>
						<div class="ethnic-android-app-types__card">
							<h3>Consumer Apps</h3>
							<ul>
								<?php foreach ( $consumer_points as $point ) : ?>
									<li><?php echo esc_html( $point ); ?></li>
								<?php endforeach; ?>
							</ul>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-android-section ethnic-android-section--soft" id="android-integrations">
				<div class="ethnic-android-shell">
					<?php echo ethnic_android_page_heading( 'Custom Integrations', 'Android apps connected to the systems that run your business.', 'We integrate APIs, payment gateways, analytics, and enterprise platforms for complete Android solutions.' ); ?>
					<div class="ethnic-android-integrations">
						<?php foreach ( $integration_groups as $group ) : ?>
							<article class="ethnic-android-integration">
								<span class="ethnic-android-icon" aria-hidden="true"><?php echo ethnic_android_page_icon( 'integration' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
								<h3><?php echo esc_html( $group['title'] ); ?></h3>
								<ul>
									<?php foreach ( $group['items'] as $item ) : ?>
										<li><?php echo esc_html( $item ); ?></li>
									<?php endforeach; ?>
								</ul>
							</article>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-android-section" id="android-play">
				<div class="ethnic-android-shell">
					<div class="ethnic-android-deployment">
						<div class="ethnic-android-deployment__copy">
							<div class="ethnic-android-deployment__intro">
								<p class="ethnic-android-heading__eyebrow">Google Play Deployment</p>
								<h2 class="ethnic-android-deployment__title">Launch support built for a smooth Google Play release.</h2>
								<p class="ethnic-android-deployment__lead">We prepare, validate, and support your Android app release with clear workflows and post-launch updates.</p>
							</div>
							<p>We manage release readiness, versioning, and rollout planning to help Android apps launch smoothly in Google Play. Our team supports listings, compliance checks, and post-launch updates.</p>
							<div class="ethnic-android-deployment__highlights">
								<?php foreach ( $deployment_highlights as $highlight ) : ?>
									<article class="ethnic-android-deployment__highlight">
										<strong><?php echo esc_html( $highlight['title'] ); ?></strong>
										<p><?php echo esc_html( $highlight['text'] ); ?></p>
									</article>
								<?php endforeach; ?>
							</div>
						</div>
						<div class="ethnic-android-deployment__list">
							<p class="ethnic-android-deployment__eyebrow">Play Console Workflow</p>
							<h3>Deployment checklist</h3>
							<p class="ethnic-android-deployment__summary">Everything from release packaging to staged rollout support is planned so your Android launch feels controlled and production-ready.</p>
							<ul>
								<?php foreach ( $deployment_checks as $index => $check ) : ?>
									<li>
										<span class="ethnic-android-deployment__step" aria-hidden="true"><?php echo esc_html( sprintf( '%02d', $index + 1 ) ); ?></span>
										<div class="ethnic-android-deployment__item-copy">
											<strong><?php echo esc_html( $check['title'] ); ?></strong>
											<p><?php echo esc_html( $check['text'] ); ?></p>
										</div>
									</li>
								<?php endforeach; ?>
							</ul>
							<div class="ethnic-android-deployment__footnote">Includes Google Play submission support, rollout coordination, and post-launch follow-through.</div>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-android-section ethnic-android-section--soft" id="android-testing">
				<div class="ethnic-android-shell">
					<?php echo ethnic_android_page_heading( 'Testing Approach', 'Android QA focused on performance, compatibility, and stability.', 'We validate functionality, device coverage, and UI consistency before every release.' ); ?>
					<div class="ethnic-android-testing">
						<?php foreach ( $testing_points as $point ) : ?>
							<div class="ethnic-android-testing__item">
								<span aria-hidden="true"><?php echo ethnic_android_page_icon( 'check' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
								<p><?php echo esc_html( $point ); ?></p>
							</div>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<?php if ( ! empty( $case_studies ) ) : ?>
			<section class="ethnic-android-section" id="android-case-studies">
				<div class="ethnic-android-shell">
					<?php echo ethnic_android_page_heading( 'Case Studies', 'Android app delivery aligned to real business outcomes.', 'Examples of Android product builds across enterprise and consumer use cases.' ); ?>
					<?php echo ethnic_shared_case_study_showcase_render( $case_studies ); ?>
				</div>
			</section>
			<?php endif; ?>

			<section class="ethnic-android-section ethnic-android-section--cta" id="android-cta">
				<div class="ethnic-android-shell">
					<div class="ethnic-android-cta">
						<div class="ethnic-android-cta__copy">
							<p class="ethnic-android-kicker ethnic-android-kicker--light">Ready to Talk</p>
							<h2>Need a Custom Android App for Your Business?</h2>
							<p>Discuss Android app ideas, enterprise mobility needs, consumer app requirements, or modernization projects with our team.</p>
						</div>
						<div class="ethnic-android-actions ethnic-android-actions--cta">
							<a class="ethnic-android-button ethnic-android-button--primary" href="<?php echo esc_url( ethnic_android_page_contact_url( array( 'intent' => 'consultation', 'service' => 'android-app-development' ) ) ); ?>">Talk to Our Team</a>
							<a class="ethnic-android-button ethnic-android-button--secondary" href="<?php echo esc_url( ethnic_android_page_contact_url( array( 'intent' => 'quote', 'service' => 'android-app-development' ) ) ); ?>">Get a Free Quote</a>
						</div>
					</div>
				</div>
			</section>
		</div>
		<?php

		return ob_get_clean();
	}
}

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

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

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

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

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

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

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

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

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

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

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

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

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

#android-integrations .ethnic-android-heading {
	max-width: 1120px;
}

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

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

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

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

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

.ethnic-android-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-android-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-android-hero__content,
.ethnic-android-hero__visual {
	position: relative;
	z-index: 1;
}

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

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

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

.ethnic-android-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-android-lime);
}

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

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

.ethnic-android-mockup__phone {
	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-android-mockup__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;
	display: grid;
	gap: 16px;
}

.ethnic-android-mockup__pill {
	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-android-text);
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.ethnic-android-mockup__cards {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

.ethnic-android-mockup__cards div {
	padding: 12px;
	border-radius: 16px;
	background: rgba(255, 255, 255, 0.94);
	border: 1px solid rgba(15, 23, 42, 0.08);
}

.ethnic-android-mockup__cards strong {
	display: block;
	color: var(--ethnic-android-text);
	font-size: 14px;
}

.ethnic-android-mockup__cards span {
	display: block;
	margin-top: 6px;
	color: var(--ethnic-android-muted);
	font-size: 12px;
	font-weight: 700;
}

.ethnic-android-mockup__list {
	display: grid;
	gap: 10px;
}

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

.ethnic-android-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-android-overview {
	display: grid;
	grid-template-columns: minmax(0, 0.86fr) minmax(0, 1.14fr);
	gap: 28px 36px;
	align-items: start;
}

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

.ethnic-android-services,
.ethnic-android-integrations {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 18px;
}

.ethnic-android-integrations {
	grid-template-columns: repeat(5, minmax(0, 1fr));
	align-items: start;
}

.ethnic-android-feature,
.ethnic-android-service,
.ethnic-android-integration {
	padding: 24px;
	border-radius: 24px;
	border: 1px solid var(--ethnic-android-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-android-shadow);
}

.ethnic-android-feature {
	min-height: 100%;
}

.ethnic-android-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-android-accent);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}

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

.ethnic-android-feature h3,
.ethnic-android-service h3,
.ethnic-android-integration h3,
.ethnic-android-app-types__card h3,
.ethnic-android-case h3,
.ethnic-android-deployment__list h3 {
	margin: 16px 0 0;
	color: var(--ethnic-android-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-android-feature p,
.ethnic-android-service p,
.ethnic-android-integration ul {
	margin: 10px 0 0;
}

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

.ethnic-android-app-types__card {
	padding: 24px;
	border-radius: 26px;
	border: 1px solid var(--ethnic-android-border);
	background: #ffffff;
	box-shadow: var(--ethnic-android-shadow);
}

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

.ethnic-android-app-types__card li + li {
	margin-top: 10px;
}

.ethnic-android-integrations ul {
	padding-left: 18px;
	color: var(--ethnic-android-muted);
}

.ethnic-android-deployment {
	display: grid;
	grid-template-columns: minmax(0, 0.94fr) minmax(360px, 1.06fr);
	gap: 28px 34px;
	align-items: start;
}

.ethnic-android-deployment__copy {
	display: grid;
	gap: 22px;
	align-content: start;
}

.ethnic-android-deployment__intro {
	display: grid;
	gap: 0;
}

.ethnic-android-deployment__intro .ethnic-android-heading__eyebrow {
	margin-bottom: 16px;
}

.ethnic-android-deployment__title {
	max-width: 12ch;
	margin: 0;
	color: var(--ethnic-android-text);
	font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
	font-size: clamp(30px, 2.7vw, 46px);
	font-weight: 700;
	line-height: 1.03;
	letter-spacing: -0.05em;
	text-wrap: balance;
}

.ethnic-android-deployment__lead {
	max-width: 60ch;
	margin: 18px 0 0;
	color: var(--ethnic-android-muted);
	font-size: 16px;
	line-height: 1.76;
}

.ethnic-android-deployment__highlights {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 14px;
}

.ethnic-android-deployment__highlight {
	padding: 18px 18px 16px;
	border-radius: 22px;
	border: 1px solid var(--ethnic-android-border);
	background:
		radial-gradient(circle at top right, rgba(47, 107, 255, 0.06), transparent 28%),
		linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(245, 249, 255, 0.96));
	box-shadow: 0 16px 34px rgba(15, 23, 42, 0.05);
}

.ethnic-android-deployment__highlight strong {
	display: block;
	color: var(--ethnic-android-text);
	font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.35;
}

.ethnic-android-deployment__highlight p {
	margin: 8px 0 0;
	color: var(--ethnic-android-muted);
	font-size: 14px;
	line-height: 1.64;
}

.ethnic-android-deployment__list {
	padding: 28px;
	border-radius: 30px;
	border: 1px solid var(--ethnic-android-border);
	background:
		radial-gradient(circle at top right, rgba(47, 107, 255, 0.08), transparent 26%),
		linear-gradient(180deg, rgba(255, 255, 255, 0.99), rgba(246, 249, 255, 0.97));
	box-shadow: var(--ethnic-android-shadow);
}

.ethnic-android-deployment__eyebrow {
	display: inline-flex;
	align-items: center;
	width: fit-content;
	min-height: 30px;
	margin: 0;
	padding: 7px 12px;
	border-radius: 999px;
	background: rgba(47, 107, 255, 0.08);
	color: var(--ethnic-android-accent);
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.14em;
	line-height: 1;
	text-transform: uppercase;
}

.ethnic-android-deployment__summary {
	margin: 14px 0 0;
	color: var(--ethnic-android-muted);
	font-size: 15px;
	line-height: 1.72;
}

.ethnic-android-deployment__list ul {
	margin: 22px 0 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 12px;
}

.ethnic-android-deployment__list li {
	display: grid;
	grid-template-columns: 44px minmax(0, 1fr);
	gap: 14px;
	align-items: start;
	padding: 14px 16px;
	border-radius: 20px;
	border: 1px solid rgba(15, 23, 42, 0.06);
	background:
		linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(243, 247, 255, 0.88)),
		#ffffff;
	box-shadow: 0 14px 30px rgba(15, 23, 42, 0.05);
}

.ethnic-android-deployment__step {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: 16px;
	background: linear-gradient(135deg, rgba(231, 255, 137, 0.92), rgba(187, 243, 104, 0.9));
	color: #183022;
	font-size: 13px;
	font-weight: 800;
	letter-spacing: 0.08em;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4);
}

.ethnic-android-deployment__item-copy strong {
	display: block;
	color: var(--ethnic-android-text);
	font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.4;
}

.ethnic-android-deployment__item-copy p {
	margin: 6px 0 0;
	color: var(--ethnic-android-muted);
	font-size: 13px;
	line-height: 1.62;
}

.ethnic-android-deployment__footnote {
	margin-top: 18px;
	padding: 14px 16px;
	border-radius: 18px;
	background: rgba(47, 107, 255, 0.06);
	border: 1px solid rgba(47, 107, 255, 0.1);
	color: var(--ethnic-android-text);
	font-size: 14px;
	font-weight: 600;
	line-height: 1.6;
}

.ethnic-android-testing {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 14px;
}

.ethnic-android-testing__item {
	padding: 18px;
	border-radius: 18px;
	border: 1px solid var(--ethnic-android-border);
	background: #ffffff;
	box-shadow: var(--ethnic-android-shadow);
	display: grid;
	grid-template-columns: 38px minmax(0, 1fr);
	align-items: center;
	gap: 12px;
}

.ethnic-android-testing__item span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border-radius: 14px;
	background: linear-gradient(135deg, rgba(47, 107, 255, 0.12), rgba(231, 255, 137, 0.28));
	border: 1px solid rgba(47, 107, 255, 0.14);
	color: var(--ethnic-android-accent);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}

.ethnic-android-testing__item span svg {
	width: 18px;
	height: 18px;
	stroke: currentColor;
	stroke-width: 2.2;
	stroke-linecap: round;
	stroke-linejoin: round;
	fill: none;
}

.ethnic-android-testing__item p {
	margin: 0;
	color: var(--ethnic-android-text);
	font-size: 15px;
	font-weight: 600;
	line-height: 1.5;
}

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

.ethnic-android-case {
	padding: 24px;
	border-radius: 26px;
	border: 1px solid var(--ethnic-android-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-android-shadow);
}

.ethnic-android-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-android-accent);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

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

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

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

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

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

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

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

	.ethnic-android-feature-grid,
	.ethnic-android-services,
	.ethnic-android-integrations {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ethnic-android-testing {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ethnic-android-deployment__highlights {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1201px) {
	#android-integrations .ethnic-android-heading__title {
		white-space: nowrap;
	}
}

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

	.ethnic-android-hero__visual {
		order: -1;
	}
}

@media (max-width: 980px) {
	.ethnic-android-cta {
		grid-template-columns: 1fr;
	}

	.ethnic-android-cases,
	.ethnic-android-app-types,
	.ethnic-android-deployment__highlights {
		grid-template-columns: 1fr;
	}
}

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

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

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

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

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

	.ethnic-android-deployment__title {
		max-width: 100%;
		font-size: clamp(26px, 8vw, 36px);
	}

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

	.ethnic-android-button {
		width: 100%;
	}

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

	.ethnic-android-feature-grid,
	.ethnic-android-services,
	.ethnic-android-integrations,
	.ethnic-android-testing {
		grid-template-columns: 1fr;
	}

	.ethnic-android-feature,
	.ethnic-android-service,
	.ethnic-android-integration,
	.ethnic-android-testing__item,
	.ethnic-android-case,
	.ethnic-android-cta {
		padding-left: 22px;
		padding-right: 22px;
	}

	.ethnic-android-deployment__list {
		padding: 22px;
	}

	.ethnic-android-deployment__list li {
		grid-template-columns: 40px minmax(0, 1fr);
		padding: 13px 14px;
	}

	.ethnic-android-deployment__step {
		width: 40px;
		height: 40px;
		border-radius: 14px;
	}
}
CSS;
	}
}

if ( ! function_exists( 'ethnic_android_page_body_class' ) ) {
	function ethnic_android_page_body_class( $classes ) {
		if ( ethnic_android_page_is_target() ) {
			$classes[] = 'ethnic-android-target';
		}

		return $classes;
	}

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

if ( ! function_exists( 'ethnic_android_page_print_head_assets' ) ) {
	function ethnic_android_page_print_head_assets() {
		if ( ! ethnic_android_page_is_target() ) {
			return;
		}

		?>
		<style id="ethnic-android-page-inline-css" type="text/css">
			<?php echo ethnic_android_page_styles(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
		</style>
		<meta name="description" content="Build scalable Android apps with our Android app development services. We create custom enterprise and consumer apps with integrations, testing, Google Play deployment, and long-term support." />
		<?php
	}

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

if ( ! function_exists( 'ethnic_android_page_document_title' ) ) {
	function ethnic_android_page_document_title( $title ) {
		if ( ethnic_android_page_is_target() ) {
			return 'Android App Development Services | Custom Enterprise & Consumer Android Apps';
		}

		return $title;
	}

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

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

		static $rendered = false;

		if ( $rendered ) {
			return $content;
		}

		$rendered = true;

		return ethnic_android_page_render();
	}

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