File: /var/www/html/wp-content/mu-plugins/ethnic-app-maintenance-page.php
<?php
/**
* Plugin Name: Ethnic App Maintenance & Support Page
* Description: Creates and renders the App Maintenance & Support sub-service page under App Development.
* Version: 1.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! function_exists( 'ethnic_app_maintenance_page_parent_id' ) ) {
function ethnic_app_maintenance_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_app_maintenance_page_get_target_page' ) ) {
function ethnic_app_maintenance_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/app-maintenance-support' );
if ( ! ( $page instanceof WP_Post ) ) {
$fallback = get_page_by_path( 'app-maintenance-support' );
if ( $fallback instanceof WP_Post && (int) $fallback->post_parent === ethnic_app_maintenance_page_parent_id() ) {
$page = $fallback;
}
}
return $page instanceof WP_Post ? $page : null;
}
}
if ( ! function_exists( 'ethnic_app_maintenance_page_ensure_page' ) ) {
function ethnic_app_maintenance_page_ensure_page() {
static $did_run = false;
if ( $did_run ) {
return;
}
$did_run = true;
$parent_id = ethnic_app_maintenance_page_parent_id();
if ( ! $parent_id ) {
return;
}
$postarr = array(
'post_type' => 'page',
'post_title' => 'App Maintenance & Support',
'post_name' => 'app-maintenance-support',
'post_parent' => $parent_id,
'post_status' => 'publish',
'post_content' => '',
'comment_status' => 'closed',
'ping_status' => 'closed',
);
$page = get_page_by_path( 'services/app-development/app-maintenance-support' );
if ( $page instanceof WP_Post ) {
$needs_update = 'App Maintenance & Support' !== $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-maintenance-support' );
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_maintenance_page_ensure_page', 5 );
}
if ( ! function_exists( 'ethnic_app_maintenance_page_is_target' ) ) {
function ethnic_app_maintenance_page_is_target() {
if ( is_admin() ) {
return false;
}
$page = ethnic_app_maintenance_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_maintenance_page_url' ) ) {
function ethnic_app_maintenance_page_url( $path ) {
return home_url( '/' . ltrim( (string) $path, '/' ) . '/' );
}
}
if ( ! function_exists( 'ethnic_app_maintenance_page_contact_url' ) ) {
function ethnic_app_maintenance_page_contact_url( $args = array() ) {
return ethnic_consultation_route_contact_url( $args, ethnic_app_maintenance_page_url( 'contact-us' ) );
}
}
if ( ! function_exists( 'ethnic_app_maintenance_page_heading' ) ) {
function ethnic_app_maintenance_page_heading( $eyebrow, $title, $copy = '' ) {
ob_start();
?>
<div class="ethnic-app-maintenance-heading">
<?php if ( $eyebrow ) : ?>
<p class="ethnic-app-maintenance-heading__eyebrow"><?php echo esc_html( $eyebrow ); ?></p>
<?php endif; ?>
<h2 class="ethnic-app-maintenance-heading__title"><?php echo esc_html( $title ); ?></h2>
<?php if ( $copy ) : ?>
<p class="ethnic-app-maintenance-heading__copy"><?php echo esc_html( $copy ); ?></p>
<?php endif; ?>
</div>
<?php
return ob_get_clean();
}
}
if ( ! function_exists( 'ethnic_app_maintenance_page_icon' ) ) {
function ethnic_app_maintenance_page_icon( $icon ) {
ob_start();
switch ( $icon ) {
case 'shield':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M12 3.5l6 2.5v5.2c0 4-2.4 7.7-6 9.6-3.6-1.9-6-5.6-6-9.6V6L12 3.5z" />
<path d="M9.2 12h5.6" />
<path d="M12 9.2v5.6" />
</svg>
<?php
break;
case 'wrench':
?>
<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 '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 'speed':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M4.5 15a7.5 7.5 0 0 1 15 0" />
<path d="M12 12l3.5-3.5" />
<circle cx="12" cy="15" r="1.2" />
</svg>
<?php
break;
case 'bug':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<rect x="8" y="7" width="8" height="10" rx="3" />
<path d="M6 10h12" />
<path d="M6 14h12" />
<path d="M9 4l-2-2" />
<path d="M15 4l2-2" />
</svg>
<?php
break;
case 'feature':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<rect x="4" y="4" width="7" height="7" rx="2" />
<rect x="13" y="4" width="7" height="7" rx="2" />
<rect x="4" y="13" width="16" height="7" rx="2" />
</svg>
<?php
break;
case 'chart':
?>
<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 'monitor':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<rect x="3.5" y="5" width="17" height="11" rx="2" />
<path d="M8 19h8" />
<path d="M12 16v3" />
</svg>
<?php
break;
case 'star':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M12 4l2.4 4.9 5.4.8-3.9 3.8.9 5.4-4.8-2.5-4.8 2.5.9-5.4-3.9-3.8 5.4-.8z" />
</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_app_maintenance_page_render' ) ) {
function ethnic_app_maintenance_page_render() {
$hero_points = array(
'Ongoing bug fixing and updates',
'Performance and stability improvements',
'Long-term support for growing apps',
);
$overview_features = array(
array(
'icon' => 'shield',
'title' => 'Proactive Maintenance',
'text' => 'We keep apps healthy with proactive fixes, monitoring, and release planning.',
),
array(
'icon' => 'wrench',
'title' => 'Fast Issue Resolution',
'text' => 'We prioritize and resolve bugs quickly to reduce downtime and user impact.',
),
array(
'icon' => 'refresh',
'title' => 'Continuous Improvement',
'text' => 'We refine UX, workflows, and features based on real user feedback.',
),
array(
'icon' => 'speed',
'title' => 'Long-Term Technical Support',
'text' => 'We remain a dependable partner for scaling, updates, and new priorities.',
),
);
$bug_fixes = array(
array(
'icon' => 'bug',
'title' => 'Critical Issue Resolution',
'text' => 'Rapid response to high-impact bugs that affect uptime or core workflows.',
),
array(
'icon' => 'wrench',
'title' => 'UI and Functionality Fixes',
'text' => 'Repair broken flows, UI inconsistencies, and user-facing issues.',
),
array(
'icon' => 'monitor',
'title' => 'API & Integration Support',
'text' => 'Stabilize backend and third-party integrations to prevent failures.',
),
array(
'icon' => 'refresh',
'title' => 'Device & OS Compatibility',
'text' => 'Maintain compatibility across devices, browsers, and OS upgrades.',
),
);
$feature_updates = array(
array(
'icon' => 'feature',
'title' => 'New Feature Rollout',
'text' => 'Add new capabilities without rebuilding the entire application.',
),
array(
'icon' => 'star',
'title' => 'Workflow Enhancement',
'text' => 'Refine flows based on analytics and user behavior insights.',
),
array(
'icon' => 'refresh',
'title' => 'UX Refinements',
'text' => 'Improve clarity, speed, and usability across key journeys.',
),
array(
'icon' => 'monitor',
'title' => 'Integration Expansion',
'text' => 'Connect new systems, data sources, or partner services.',
),
);
$performance_highlights = array(
array(
'title' => 'Runtime stability',
'text' => 'We target regressions, fragile flows, and crash-prone experiences before they disrupt production.',
),
array(
'title' => 'Infrastructure efficiency',
'text' => 'Performance work includes backend response tuning, API review, and database efficiency improvements.',
),
array(
'title' => 'Release confidence',
'text' => 'We pair optimization with measurement and post-release monitoring so performance gains stay dependable.',
),
);
$performance_checks = array(
array(
'title' => 'Speed optimization',
'text' => 'Trim slow interactions and reduce wait time across the app\'s most important user journeys.',
),
array(
'title' => 'Stability improvement',
'text' => 'Address recurring failures and reliability issues before they affect live usage or team confidence.',
),
array(
'title' => 'Backend tuning',
'text' => 'Optimize services, APIs, and processing paths that sit behind the application experience.',
),
array(
'title' => 'Database efficiency',
'text' => 'Improve query performance, data access patterns, and resource usage for higher-volume workflows.',
),
array(
'title' => 'Scalability planning',
'text' => 'Prepare the product for traffic growth, new features, and operational complexity without slowdown.',
),
array(
'title' => 'Crash reduction',
'text' => 'Track root causes, stabilize risky paths, and lower production incidents through targeted fixes.',
),
);
$monitoring_items = array(
array(
'icon' => 'chart',
'title' => 'User Behavior Insights',
'text' => 'Track engagement, drop-offs, and high-value journeys.',
),
array(
'icon' => 'speed',
'title' => 'Performance Tracking',
'text' => 'Monitor load times, latency, and responsiveness over time.',
),
array(
'icon' => 'bug',
'title' => 'Error Monitoring',
'text' => 'Surface crashes and issues quickly with alerting.',
),
array(
'icon' => 'monitor',
'title' => 'Usage Analytics',
'text' => 'Identify which features and screens drive value.',
),
array(
'icon' => 'refresh',
'title' => 'Release Impact Tracking',
'text' => 'Understand how updates affect key metrics.',
),
array(
'icon' => 'chart',
'title' => 'Actionable Reporting',
'text' => 'Use insights to prioritize fixes and roadmap updates.',
),
);
$retainers = array(
array(
'title' => 'Essential Support',
'items' => array(
'Regular bug fixing',
'Minor updates',
'Technical monitoring',
),
),
array(
'title' => 'Growth Support',
'items' => array(
'Feature updates',
'Performance improvements',
'Analytics review',
'Release assistance',
),
),
array(
'title' => 'Dedicated Support',
'items' => array(
'Priority support',
'Ongoing roadmap execution',
'Strategic technical partnership',
),
),
);
ob_start();
?>
<div class="ethnic-app-maintenance-page" data-ethnic-app-maintenance-page>
<section class="ethnic-app-maintenance-section ethnic-app-maintenance-section--hero">
<div class="ethnic-app-maintenance-shell ethnic-app-maintenance-hero">
<div class="ethnic-app-maintenance-hero__content">
<p class="ethnic-app-maintenance-kicker">App Maintenance & Support</p>
<h1 class="ethnic-app-maintenance-hero__title">App Maintenance & Support</h1>
<p class="ethnic-app-maintenance-hero__copy">Keep your applications stable, secure, and fast with app maintenance and support services designed for evolving business needs. We help teams fix issues, ship updates, and optimize performance so your app remains reliable over time.</p>
<div class="ethnic-app-maintenance-actions">
<a class="ethnic-app-maintenance-button ethnic-app-maintenance-button--primary" href="<?php echo esc_url( ethnic_app_maintenance_page_contact_url( array( 'intent' => 'consultation', 'service' => 'app-maintenance-support' ) ) ); ?>">Book a Free Consultation</a>
<a class="ethnic-app-maintenance-button ethnic-app-maintenance-button--secondary" href="<?php echo esc_url( ethnic_app_maintenance_page_contact_url( array( 'intent' => 'support', 'service' => 'app-maintenance-support' ) ) ); ?>">Talk to Support Experts</a>
</div>
<ul class="ethnic-app-maintenance-trust">
<?php foreach ( $hero_points as $point ) : ?>
<li>
<span class="ethnic-app-maintenance-trust__icon" aria-hidden="true"><?php echo ethnic_app_maintenance_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-maintenance-hero__visual" aria-hidden="true">
<div class="ethnic-app-maintenance-dashboard">
<div class="ethnic-app-maintenance-dashboard__header">
<span>App health</span>
<strong>98.6%</strong>
</div>
<div class="ethnic-app-maintenance-dashboard__chart">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div class="ethnic-app-maintenance-dashboard__cards">
<div>
<p>Open issues</p>
<strong>4</strong>
</div>
<div>
<p>Response time</p>
<strong>1.4s</strong>
</div>
<div>
<p>Release ready</p>
<strong>Yes</strong>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="ethnic-app-maintenance-section" id="maintenance-overview">
<div class="ethnic-app-maintenance-shell">
<?php echo ethnic_app_maintenance_page_heading( 'Service Overview', 'App maintenance and support services that keep mobile, web, and custom software healthy after launch.', 'We provide ongoing support for apps that need stability, updates, and performance improvements long after release.' ); ?>
<div class="ethnic-app-maintenance-overview">
<div class="ethnic-app-maintenance-overview__copy">
<p>Our app maintenance services focus on proactive care rather than reactive fixes. We monitor application health, respond to issues quickly, and improve user experience over time with targeted updates.</p>
<p>We adapt apps to OS changes, evolving user feedback, business priorities, and technical growth so your product stays dependable, secure, and scalable.</p>
<p>Whether you manage mobile apps, web apps, or custom software, we keep the foundation strong and the roadmap moving.</p>
</div>
<div class="ethnic-app-maintenance-feature-grid">
<?php foreach ( $overview_features as $feature ) : ?>
<article class="ethnic-app-maintenance-feature">
<span class="ethnic-app-maintenance-icon" aria-hidden="true"><?php echo ethnic_app_maintenance_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-app-maintenance-section ethnic-app-maintenance-section--soft" id="maintenance-bug-fixing">
<div class="ethnic-app-maintenance-shell">
<?php echo ethnic_app_maintenance_page_heading( 'Bug Fixing', 'Fast, reliable resolution for functional, UI, and backend issues.', 'We prioritize critical issues to reduce downtime and keep users confident in the product.' ); ?>
<div class="ethnic-app-maintenance-bug">
<?php foreach ( $bug_fixes as $bug ) : ?>
<article class="ethnic-app-maintenance-bug__card">
<span class="ethnic-app-maintenance-icon" aria-hidden="true"><?php echo ethnic_app_maintenance_page_icon( $bug['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
<h3><?php echo esc_html( $bug['title'] ); ?></h3>
<p><?php echo esc_html( $bug['text'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="ethnic-app-maintenance-section" id="maintenance-feature-updates">
<div class="ethnic-app-maintenance-shell">
<?php echo ethnic_app_maintenance_page_heading( 'Feature Updates', 'Ongoing app improvements that keep your product relevant and competitive.', 'We help teams release new features, refine workflows, and modernize functionality without full rebuilds.' ); ?>
<div class="ethnic-app-maintenance-updates">
<?php foreach ( $feature_updates as $update ) : ?>
<article class="ethnic-app-maintenance-update">
<span class="ethnic-app-maintenance-icon" aria-hidden="true"><?php echo ethnic_app_maintenance_page_icon( $update['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
<h3><?php echo esc_html( $update['title'] ); ?></h3>
<p><?php echo esc_html( $update['text'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="ethnic-app-maintenance-section ethnic-app-maintenance-section--soft" id="maintenance-performance">
<div class="ethnic-app-maintenance-shell">
<div class="ethnic-app-maintenance-performance">
<div class="ethnic-app-maintenance-performance__copy">
<div class="ethnic-app-maintenance-performance__intro">
<p class="ethnic-app-maintenance-heading__eyebrow">Performance Improvement</p>
<h2 class="ethnic-app-maintenance-performance__title">Performance support that keeps growing apps fast and reliable.</h2>
<p class="ethnic-app-maintenance-performance__lead">We improve load times, reduce crashes, and tune infrastructure so apps stay dependable as usage grows.</p>
</div>
<p>Performance tuning ensures your application remains fast and dependable as traffic grows. We optimize backend response times, database efficiency, and runtime stability while identifying bottlenecks before they become problems.</p>
<p>Our team works closely with your product stakeholders to prioritize performance improvements that support business KPIs.</p>
<div class="ethnic-app-maintenance-performance__highlights">
<?php foreach ( $performance_highlights as $highlight ) : ?>
<article class="ethnic-app-maintenance-performance__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-app-maintenance-performance__list">
<p class="ethnic-app-maintenance-performance__eyebrow">Optimization workflow</p>
<h3>Performance checklist</h3>
<p class="ethnic-app-maintenance-performance__summary">Everything from runtime tuning to scalability planning is structured around clear priorities, measurable fixes, and reliable follow-through.</p>
<ul>
<?php foreach ( $performance_checks as $index => $check ) : ?>
<li>
<span class="ethnic-app-maintenance-performance__step" aria-hidden="true"><?php echo esc_html( sprintf( '%02d', $index + 1 ) ); ?></span>
<div class="ethnic-app-maintenance-performance__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-app-maintenance-performance__footnote">Includes performance review, infrastructure tuning, and post-release monitoring follow-through.</div>
</div>
</div>
</div>
</section>
<section class="ethnic-app-maintenance-section" id="maintenance-monitoring">
<div class="ethnic-app-maintenance-shell">
<?php echo ethnic_app_maintenance_page_heading( 'Analytics and Monitoring', 'Visibility into performance, usage, and release impact.', 'We use monitoring and analytics to uncover bottlenecks, improve decisions, and guide future releases.' ); ?>
<div class="ethnic-app-maintenance-monitoring">
<?php foreach ( $monitoring_items as $item ) : ?>
<article class="ethnic-app-maintenance-monitoring__card">
<span class="ethnic-app-maintenance-icon" aria-hidden="true"><?php echo ethnic_app_maintenance_page_icon( $item['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
<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-app-maintenance-section ethnic-app-maintenance-section--soft" id="maintenance-retainers">
<div class="ethnic-app-maintenance-shell">
<?php echo ethnic_app_maintenance_page_heading( 'Long-Term Support Retainers', 'Flexible maintenance retainers that keep your product moving forward.', 'Choose the support level that matches your roadmap, team maturity, and product complexity.' ); ?>
<div class="ethnic-app-maintenance-retainers">
<?php foreach ( $retainers as $retainer ) : ?>
<article class="ethnic-app-maintenance-retainer">
<h3><?php echo esc_html( $retainer['title'] ); ?></h3>
<ul>
<?php foreach ( $retainer['items'] as $item ) : ?>
<li><?php echo esc_html( $item ); ?></li>
<?php endforeach; ?>
</ul>
</article>
<?php endforeach; ?>
</div>
<p class="ethnic-app-maintenance-note">Plans can be customized based on product complexity, team size, and business goals.</p>
</div>
</section>
<section class="ethnic-app-maintenance-section ethnic-app-maintenance-section--cta" id="maintenance-cta">
<div class="ethnic-app-maintenance-shell">
<div class="ethnic-app-maintenance-cta">
<div class="ethnic-app-maintenance-cta__copy">
<p class="ethnic-app-maintenance-kicker ethnic-app-maintenance-kicker--light">Ready to Talk</p>
<h2>Need Reliable App Maintenance & Support?</h2>
<p>Discuss support retainers, bug fixing needs, app optimization, or long-term product maintenance with our team.</p>
</div>
<div class="ethnic-app-maintenance-actions ethnic-app-maintenance-actions--cta">
<a class="ethnic-app-maintenance-button ethnic-app-maintenance-button--primary" href="<?php echo esc_url( ethnic_app_maintenance_page_contact_url( array( 'intent' => 'consultation', 'service' => 'app-maintenance-support' ) ) ); ?>">Talk to Our Team</a>
<a class="ethnic-app-maintenance-button ethnic-app-maintenance-button--secondary" href="<?php echo esc_url( ethnic_app_maintenance_page_contact_url( array( 'intent' => 'quote', 'service' => 'app-maintenance-support' ) ) ); ?>">Get a Free Quote</a>
</div>
</div>
</div>
</section>
</div>
<?php
return ob_get_clean();
}
}
if ( ! function_exists( 'ethnic_app_maintenance_page_styles' ) ) {
function ethnic_app_maintenance_page_styles() {
return <<<'CSS'
body.ethnic-app-maintenance-target #page-title.page-title-block.custom-page-title {
display: none;
}
body.ethnic-app-maintenance-target .fullwidth-content > .ethnic-app-maintenance-page {
padding-bottom: clamp(72px, 8vw, 120px);
}
.ethnic-app-maintenance-page {
--ethnic-app-maintenance-text: #0f172a;
--ethnic-app-maintenance-muted: #5c6b84;
--ethnic-app-maintenance-border: rgba(15, 23, 42, 0.08);
--ethnic-app-maintenance-accent: #2f6bff;
--ethnic-app-maintenance-lime: #e7ff89;
--ethnic-app-maintenance-shadow: 0 22px 60px rgba(15, 23, 42, 0.08);
--ethnic-app-maintenance-shadow-hover: 0 30px 80px rgba(15, 23, 42, 0.12);
color: var(--ethnic-app-maintenance-text);
}
.ethnic-app-maintenance-page,
.ethnic-app-maintenance-page *,
.ethnic-app-maintenance-page *::before,
.ethnic-app-maintenance-page *::after {
box-sizing: border-box;
}
.ethnic-app-maintenance-shell {
width: min(1240px, calc(100% - (var(--ethnic-page-shell-padding, 36px) * 2)));
margin: 0 auto;
}
.ethnic-app-maintenance-section + .ethnic-app-maintenance-section {
margin-top: clamp(72px, 8vw, 112px);
}
.ethnic-app-maintenance-section--soft {
padding: clamp(28px, 4vw, 36px) 0;
}
.ethnic-app-maintenance-page p,
.ethnic-app-maintenance-page li {
color: var(--ethnic-app-maintenance-muted);
font-size: 16px;
line-height: 1.72;
}
.ethnic-app-maintenance-kicker,
.ethnic-app-maintenance-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-maintenance-kicker--light {
background: rgba(255, 255, 255, 0.1);
border-color: rgba(255, 255, 255, 0.14);
color: #ffffff;
}
.ethnic-app-maintenance-heading {
max-width: 760px;
margin-bottom: clamp(26px, 4vw, 36px);
}
.ethnic-app-maintenance-heading__title,
.ethnic-app-maintenance-hero__title,
.ethnic-app-maintenance-cta h2 {
margin: 0;
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-weight: 700;
letter-spacing: -0.05em;
text-wrap: balance;
}
.ethnic-app-maintenance-heading__title,
.ethnic-app-maintenance-cta h2 {
color: var(--ethnic-app-maintenance-text);
font-size: clamp(30px, 2.5vw, 44px);
line-height: 1.04;
}
.ethnic-app-maintenance-heading__copy {
margin: 18px 0 0;
max-width: 64ch;
}
.ethnic-app-maintenance-actions {
display: flex;
flex-wrap: wrap;
gap: 14px;
margin-top: 28px;
}
.ethnic-app-maintenance-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-maintenance-button:hover,
.ethnic-app-maintenance-button:focus-visible {
transform: translateY(-2px);
outline: none;
}
.ethnic-app-maintenance-button--primary {
background: var(--ethnic-app-maintenance-lime);
border: 1px solid var(--ethnic-app-maintenance-lime);
color: #0b1730 !important;
box-shadow: 0 18px 30px rgba(231, 255, 137, 0.18);
}
.ethnic-app-maintenance-button--secondary {
background: rgba(255, 255, 255, 0.92);
border: 1px solid rgba(15, 23, 42, 0.08);
color: var(--ethnic-app-maintenance-text) !important;
}
.ethnic-app-maintenance-section--hero {
padding-top: clamp(18px, 3vw, 32px);
}
.ethnic-app-maintenance-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-app-maintenance-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-maintenance-hero__content,
.ethnic-app-maintenance-hero__visual {
position: relative;
z-index: 1;
}
.ethnic-app-maintenance-hero__title {
color: #ffffff !important;
-webkit-text-fill-color: #ffffff;
font-size: clamp(42px, 5vw, 72px);
line-height: 0.96;
}
.ethnic-app-maintenance-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-maintenance-trust {
display: flex;
flex-wrap: wrap;
gap: 14px 18px;
margin: 24px 0 0;
padding: 0;
list-style: none;
}
.ethnic-app-maintenance-trust li {
display: inline-flex;
align-items: center;
gap: 10px;
color: #ffffff;
font-size: 14px;
font-weight: 700;
}
.ethnic-app-maintenance-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-app-maintenance-lime);
}
.ethnic-app-maintenance-trust__icon svg {
width: 14px;
height: 14px;
stroke: currentColor;
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
fill: none;
}
.ethnic-app-maintenance-dashboard {
display: grid;
gap: 18px;
padding: 24px;
border-radius: 30px;
background: rgba(255, 255, 255, 0.92);
box-shadow: 0 28px 60px rgba(3, 10, 25, 0.2);
}
.ethnic-app-maintenance-dashboard__header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.ethnic-app-maintenance-dashboard__header span {
color: var(--ethnic-app-maintenance-muted);
font-size: 13px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.ethnic-app-maintenance-dashboard__header strong {
color: var(--ethnic-app-maintenance-text);
font-size: 22px;
}
.ethnic-app-maintenance-dashboard__chart {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 10px;
height: 120px;
align-items: end;
background: rgba(15, 23, 42, 0.04);
border-radius: 22px;
padding: 20px 16px 12px;
}
.ethnic-app-maintenance-dashboard__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-maintenance-dashboard__chart span:nth-child(1) { height: 52px; }
.ethnic-app-maintenance-dashboard__chart span:nth-child(2) { height: 88px; }
.ethnic-app-maintenance-dashboard__chart span:nth-child(3) { height: 70px; }
.ethnic-app-maintenance-dashboard__chart span:nth-child(4) { height: 104px; }
.ethnic-app-maintenance-dashboard__cards {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
}
.ethnic-app-maintenance-dashboard__cards div {
padding: 14px;
border-radius: 18px;
background: rgba(255, 255, 255, 0.94);
border: 1px solid rgba(15, 23, 42, 0.08);
}
.ethnic-app-maintenance-dashboard__cards p {
margin: 0;
font-size: 12px;
font-weight: 700;
color: var(--ethnic-app-maintenance-muted);
}
.ethnic-app-maintenance-dashboard__cards strong {
display: block;
margin-top: 8px;
font-size: 18px;
color: var(--ethnic-app-maintenance-text);
}
.ethnic-app-maintenance-overview {
display: grid;
grid-template-columns: minmax(0, 0.86fr) minmax(0, 1.14fr);
gap: 28px 36px;
align-items: start;
}
.ethnic-app-maintenance-feature-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 20px;
align-content: start;
}
.ethnic-app-maintenance-bug,
.ethnic-app-maintenance-updates,
.ethnic-app-maintenance-monitoring {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 18px;
}
.ethnic-app-maintenance-feature,
.ethnic-app-maintenance-bug__card,
.ethnic-app-maintenance-update,
.ethnic-app-maintenance-monitoring__card,
.ethnic-app-maintenance-retainer {
padding: 24px;
border-radius: 24px;
border: 1px solid var(--ethnic-app-maintenance-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-app-maintenance-shadow);
}
.ethnic-app-maintenance-feature {
min-height: 100%;
}
.ethnic-app-maintenance-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-app-maintenance-accent);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}
.ethnic-app-maintenance-icon svg {
width: 24px;
height: 24px;
stroke: currentColor;
stroke-width: 1.8;
stroke-linecap: round;
stroke-linejoin: round;
fill: none;
}
.ethnic-app-maintenance-feature h3,
.ethnic-app-maintenance-bug__card h3,
.ethnic-app-maintenance-update h3,
.ethnic-app-maintenance-monitoring__card h3,
.ethnic-app-maintenance-retainer h3,
.ethnic-app-maintenance-performance__list h3 {
margin: 16px 0 0;
color: var(--ethnic-app-maintenance-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-app-maintenance-feature p,
.ethnic-app-maintenance-bug__card p,
.ethnic-app-maintenance-update p,
.ethnic-app-maintenance-monitoring__card p {
margin: 10px 0 0;
}
.ethnic-app-maintenance-performance {
display: grid;
grid-template-columns: minmax(0, 0.94fr) minmax(360px, 1.06fr);
gap: 28px 34px;
align-items: start;
}
.ethnic-app-maintenance-performance__copy {
display: grid;
gap: 22px;
align-content: start;
}
.ethnic-app-maintenance-performance__intro {
display: grid;
gap: 0;
}
.ethnic-app-maintenance-performance__intro .ethnic-app-maintenance-heading__eyebrow {
margin-bottom: 16px;
}
.ethnic-app-maintenance-performance__title {
max-width: 12ch;
margin: 0;
color: var(--ethnic-app-maintenance-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-app-maintenance-performance__lead {
max-width: 60ch;
margin: 18px 0 0;
color: var(--ethnic-app-maintenance-muted);
font-size: 16px;
line-height: 1.76;
}
.ethnic-app-maintenance-performance__highlights {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 14px;
}
.ethnic-app-maintenance-performance__highlight {
padding: 18px 18px 16px;
border-radius: 22px;
border: 1px solid var(--ethnic-app-maintenance-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-app-maintenance-performance__highlight strong {
display: block;
color: var(--ethnic-app-maintenance-text);
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-size: 16px;
font-weight: 700;
line-height: 1.35;
}
.ethnic-app-maintenance-performance__highlight p {
margin: 8px 0 0;
color: var(--ethnic-app-maintenance-muted);
font-size: 14px;
line-height: 1.64;
}
.ethnic-app-maintenance-performance__list {
padding: 28px;
border-radius: 30px;
border: 1px solid var(--ethnic-app-maintenance-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-app-maintenance-shadow);
}
.ethnic-app-maintenance-performance__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-app-maintenance-accent);
font-size: 11px;
font-weight: 800;
letter-spacing: 0.14em;
line-height: 1;
text-transform: uppercase;
}
.ethnic-app-maintenance-performance__summary {
margin: 14px 0 0;
color: var(--ethnic-app-maintenance-muted);
font-size: 15px;
line-height: 1.72;
}
.ethnic-app-maintenance-performance__list ul {
margin: 22px 0 0;
padding: 0;
list-style: none;
display: grid;
gap: 12px;
}
.ethnic-app-maintenance-performance__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-app-maintenance-performance__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-app-maintenance-performance__item-copy strong {
display: block;
color: var(--ethnic-app-maintenance-text);
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-size: 16px;
font-weight: 700;
line-height: 1.4;
}
.ethnic-app-maintenance-performance__item-copy p {
margin: 6px 0 0;
color: var(--ethnic-app-maintenance-muted);
font-size: 13px;
line-height: 1.6;
}
.ethnic-app-maintenance-performance__footnote {
margin-top: 12px;
padding: 14px 16px;
border-radius: 16px;
border: 1px solid rgba(47, 107, 255, 0.14);
background: rgba(47, 107, 255, 0.06);
color: var(--ethnic-app-maintenance-text);
font-size: 13px;
font-weight: 600;
line-height: 1.6;
}
.ethnic-app-maintenance-retainers {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 20px;
}
.ethnic-app-maintenance-retainer ul {
margin: 16px 0 0;
padding-left: 18px;
color: var(--ethnic-app-maintenance-muted);
}
.ethnic-app-maintenance-retainer li + li {
margin-top: 10px;
}
.ethnic-app-maintenance-note {
margin: 18px 0 0;
font-size: 14px;
color: var(--ethnic-app-maintenance-muted);
}
.ethnic-app-maintenance-section--cta {
margin-top: clamp(80px, 9vw, 120px);
}
.ethnic-app-maintenance-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-maintenance-cta h2,
.ethnic-app-maintenance-cta p {
color: #ffffff !important;
-webkit-text-fill-color: #ffffff;
}
.ethnic-app-maintenance-cta p {
max-width: 62ch;
margin: 16px 0 0;
}
@media (max-width: 1200px) {
.ethnic-app-maintenance-overview,
.ethnic-app-maintenance-performance {
grid-template-columns: 1fr;
}
.ethnic-app-maintenance-feature-grid,
.ethnic-app-maintenance-bug,
.ethnic-app-maintenance-updates,
.ethnic-app-maintenance-monitoring {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ethnic-app-maintenance-performance__highlights {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.ethnic-app-maintenance-retainers {
grid-template-columns: 1fr;
}
}
@media (max-width: 1100px) {
.ethnic-app-maintenance-hero {
grid-template-columns: 1fr;
}
.ethnic-app-maintenance-hero__visual {
order: -1;
}
}
@media (max-width: 980px) {
.ethnic-app-maintenance-cta {
grid-template-columns: 1fr;
}
.ethnic-app-maintenance-performance__highlights {
grid-template-columns: 1fr;
}
}
@media (max-width: 767px) {
.ethnic-app-maintenance-shell {
width: min(1240px, calc(100% - (var(--ethnic-page-shell-padding, 16px) * 2)));
}
.ethnic-app-maintenance-section + .ethnic-app-maintenance-section {
margin-top: 56px;
}
.ethnic-app-maintenance-hero {
padding: 26px 22px;
border-radius: 28px;
}
.ethnic-app-maintenance-hero__title {
font-size: clamp(34px, 10vw, 48px);
}
.ethnic-app-maintenance-heading__title,
.ethnic-app-maintenance-cta h2 {
font-size: clamp(26px, 7.6vw, 34px);
}
.ethnic-app-maintenance-actions,
.ethnic-app-maintenance-actions--cta {
flex-direction: column;
align-items: stretch;
}
.ethnic-app-maintenance-button {
width: 100%;
}
.ethnic-app-maintenance-trust {
flex-direction: column;
align-items: flex-start;
}
.ethnic-app-maintenance-feature-grid,
.ethnic-app-maintenance-bug,
.ethnic-app-maintenance-updates,
.ethnic-app-maintenance-monitoring {
grid-template-columns: 1fr;
}
.ethnic-app-maintenance-dashboard__cards {
grid-template-columns: 1fr;
}
.ethnic-app-maintenance-feature,
.ethnic-app-maintenance-bug__card,
.ethnic-app-maintenance-update,
.ethnic-app-maintenance-monitoring__card,
.ethnic-app-maintenance-performance__highlight,
.ethnic-app-maintenance-retainer,
.ethnic-app-maintenance-performance__list,
.ethnic-app-maintenance-cta {
padding-left: 22px;
padding-right: 22px;
}
.ethnic-app-maintenance-performance__title {
font-size: clamp(26px, 7.6vw, 34px);
}
.ethnic-app-maintenance-performance__list li {
grid-template-columns: 40px minmax(0, 1fr);
padding: 14px;
}
.ethnic-app-maintenance-performance__step {
width: 40px;
height: 40px;
}
}
CSS;
}
}
if ( ! function_exists( 'ethnic_app_maintenance_page_body_class' ) ) {
function ethnic_app_maintenance_page_body_class( $classes ) {
if ( ethnic_app_maintenance_page_is_target() ) {
$classes[] = 'ethnic-app-maintenance-target';
}
return $classes;
}
add_filter( 'body_class', 'ethnic_app_maintenance_page_body_class' );
}
if ( ! function_exists( 'ethnic_app_maintenance_page_print_head_assets' ) ) {
function ethnic_app_maintenance_page_print_head_assets() {
if ( ! ethnic_app_maintenance_page_is_target() ) {
return;
}
?>
<style id="ethnic-app-maintenance-page-inline-css" type="text/css">
<?php echo ethnic_app_maintenance_page_styles(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</style>
<meta name="description" content="Keep your app stable, fast, and up to date with app maintenance and support services including bug fixing, feature updates, performance improvement, analytics, and long-term support retainers." />
<?php
}
add_action( 'wp_head', 'ethnic_app_maintenance_page_print_head_assets', 120 );
}
if ( ! function_exists( 'ethnic_app_maintenance_page_document_title' ) ) {
function ethnic_app_maintenance_page_document_title( $title ) {
if ( ethnic_app_maintenance_page_is_target() ) {
return 'App Maintenance & Support Services | Bug Fixing, Updates & Performance Optimization';
}
return $title;
}
add_filter( 'pre_get_document_title', 'ethnic_app_maintenance_page_document_title', 50 );
}
if ( ! function_exists( 'ethnic_app_maintenance_page_replace_content' ) ) {
function ethnic_app_maintenance_page_replace_content( $content ) {
if ( ! ethnic_app_maintenance_page_is_target() || ! in_the_loop() || ! is_main_query() ) {
return $content;
}
static $rendered = false;
if ( $rendered ) {
return $content;
}
$rendered = true;
return ethnic_app_maintenance_page_render();
}
add_filter( 'the_content', 'ethnic_app_maintenance_page_replace_content', 1000 );
}