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-devops-services-page.php
<?php
/**
 * Plugin Name: Ethnic DevOps Services Page
 * Description: Creates and renders the DevOps Services pillar page.
 * Version: 1.0.0
 */

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

if ( ! function_exists( 'ethnic_devops_services_page_parent_id' ) ) {
	function ethnic_devops_services_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_devops_services_page_get_target_page' ) ) {
	function ethnic_devops_services_page_get_target_page() {
		static $page = false;

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

		$page = get_page_by_path( 'services/devops-services' );

		if ( ! ( $page instanceof WP_Post ) ) {
			$fallback = get_page_by_path( 'devops-services' );

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

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

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

		if ( $did_run ) {
			return;
		}

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

		if ( ! $parent_id ) {
			return;
		}

		$postarr = array(
			'post_type'      => 'page',
			'post_title'     => 'DevOps Services',
			'post_name'      => 'devops-services',
			'post_parent'    => $parent_id,
			'post_status'    => 'publish',
			'post_content'   => '',
			'comment_status' => 'closed',
			'ping_status'    => 'closed',
		);

		$page = get_page_by_path( 'services/devops-services' );

		if ( $page instanceof WP_Post ) {
			$needs_update = 'DevOps 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( 'devops-services' );

		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_devops_services_page_ensure_page', 5 );
}

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

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

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

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

if ( ! function_exists( 'ethnic_devops_services_page_offering_url' ) ) {
	function ethnic_devops_services_page_offering_url( $slug ) {
		$slug       = trim( (string) $slug, '/' );
		$candidates = array(
			'services/devops-services/' . $slug,
			'devops-services/' . $slug,
			$slug,
		);

		foreach ( $candidates as $candidate ) {
			$page = get_page_by_path( $candidate );

			if ( $page instanceof WP_Post && 'publish' === get_post_status( $page ) ) {
				return get_permalink( $page );
			}
		}

		return ethnic_devops_services_page_contact_url(
			array(
				'intent'   => 'offering',
				'service'  => 'devops-services',
				'offering' => $slug,
			)
		);
	}
}

if ( ! function_exists( 'ethnic_devops_services_page_data' ) ) {
	function ethnic_devops_services_page_data() {
		static $data = null;

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

		$data = array(
			'metaTitle'       => 'DevOps Services | DevOps Consulting Services & Cloud Infrastructure Services',
			'metaDescription' => 'Looking for a DevOps company? We provide DevOps consulting services, cloud infrastructure services, CI/CD automation, monitoring, security-focused delivery, and scalable operational support.',
			'heroTitle'       => 'DevOps Services',
			'heroText'        => 'We help businesses improve infrastructure delivery, automate environments, strengthen reliability, and scale cloud operations with confidence through practical DevOps consulting and implementation support.',
			'heroPoints'      => array(
				'Cloud infrastructure and DevOps consulting',
				'Automation, deployment, and monitoring support',
				'Security, reliability, and long-term operational improvement',
			),
			'overviewParagraphs' => array(
				'Our DevOps consulting services support startups, SMBs, and enterprise teams that need a more dependable way to manage infrastructure, release software, standardize environments, and operate cloud platforms as delivery grows more complex.',
				'That includes infrastructure design, deployment automation, environment management, CI/CD workflow setup, monitoring, observability, and the operational practices that help engineering teams release with more confidence and fewer surprises.',
				'As a DevOps company focused on practical implementation, we do not introduce tooling for its own sake. We help align delivery speed, cloud infrastructure services, automation, and operational stability so the platform supports the business instead of slowing it down.',
			),
			'overviewFeatures' => array(
				array(
					'icon'  => 'compass',
					'title' => 'Practical DevOps Strategy',
					'copy'  => 'We evaluate release friction, infrastructure risk, environment sprawl, and team maturity before recommending the right path forward.',
				),
				array(
					'icon'  => 'cloud',
					'title' => 'Scalable Cloud Infrastructure',
					'copy'  => 'Infrastructure decisions are shaped around uptime needs, growth expectations, hosting realities, and long-term maintainability.',
				),
				array(
					'icon'  => 'workflow',
					'title' => 'Automation-Driven Delivery',
					'copy'  => 'CI/CD, environment standardization, and repeatable automation reduce manual effort while improving release consistency.',
				),
				array(
					'icon'  => 'chart',
					'title' => 'Reliability and Monitoring Focus',
					'copy'  => 'Visibility, alerting, and operational readiness help teams spot issues earlier and operate more confidently after launch.',
				),
			),
			'challenges' => array(
				array(
					'icon'  => 'terminal',
					'title' => 'Manual Deployments',
					'copy'  => 'Release processes that depend on repeated manual steps often slow delivery and increase the chance of avoidable errors.',
				),
				array(
					'icon'  => 'layers',
					'title' => 'Inconsistent Environments',
					'copy'  => 'Differences between local, staging, and production environments create instability and make troubleshooting harder.',
				),
				array(
					'icon'  => 'chart',
					'title' => 'Poor Release Visibility',
					'copy'  => 'Teams struggle to see what changed, what failed, and where delivery risk is building across environments.',
				),
				array(
					'icon'  => 'support',
					'title' => 'Limited Monitoring and Alerting',
					'copy'  => 'Weak operational visibility makes it harder to detect incidents quickly or understand performance and failure patterns.',
				),
				array(
					'icon'  => 'shield',
					'title' => 'Downtime and Reliability Issues',
					'copy'  => 'Unstable infrastructure and release workflows can create recurring outages, regressions, and operational pressure.',
				),
				array(
					'icon'  => 'server',
					'title' => 'Infrastructure That Does Not Scale Cleanly',
					'copy'  => 'Hosting and architecture decisions made early can become bottlenecks as environments, traffic, or team demands grow.',
				),
				array(
					'icon'  => 'cloud',
					'title' => 'Fragmented Cloud Setup',
					'copy'  => 'Disconnected services, ad hoc changes, and unclear ownership make cloud infrastructure harder to manage and evolve.',
				),
				array(
					'icon'  => 'workflow',
					'title' => 'Weak Delivery Automation',
					'copy'  => 'Build, test, provisioning, and release steps stay slow when automation does not cover real workflow needs.',
				),
				array(
					'icon'  => 'lock',
					'title' => 'Security Gaps in Operations',
					'copy'  => 'Access, secrets, and deployment controls often become risk areas when operational processes have not matured with scale.',
				),
				array(
					'icon'  => 'toolbox',
					'title' => 'Growing Complexity Across Teams and Systems',
					'copy'  => 'More services, environments, and stakeholders increase the need for standardized workflows and clearer operational control.',
				),
			),
			'offerings' => array(
				array(
					'icon'  => 'briefcase',
					'title' => 'DevOps Consulting',
					'copy'  => 'Assess current delivery challenges, infrastructure gaps, and team workflows to define a practical improvement roadmap.',
					'url'   => ethnic_devops_services_page_offering_url( 'devops-consulting-services' ),
				),
				array(
					'icon'  => 'cloud',
					'title' => 'Infrastructure Architecture',
					'copy'  => 'Design cloud environments and hosting patterns that support performance, resilience, and cleaner operational scaling.',
					'url'   => ethnic_devops_services_page_offering_url( 'cloud-infrastructure-services' ),
				),
				array(
					'icon'  => 'deploy',
					'title' => 'CI/CD Pipeline Setup',
					'copy'  => 'Automate builds, testing, deployments, and rollback-aware release workflows with environment-aware CI/CD delivery controls.',
					'url'   => ethnic_devops_services_page_offering_url( 'ci-cd-pipeline-setup' ),
				),
				array(
					'icon'  => 'refresh',
					'title' => 'Cloud Migration Services',
					'copy'  => 'Move workloads to the cloud with migration planning, rehosting or refactoring support, downtime control, and post-migration optimization.',
					'url'   => ethnic_devops_services_page_offering_url( 'cloud-migration-services' ),
				),
				array(
					'icon'  => 'workflow',
					'title' => 'Infrastructure as Code',
					'copy'  => 'Standardize provisioning and environment configuration with repeatable, version-aware infrastructure workflows.',
					'url'   => ethnic_devops_services_page_offering_url( 'infrastructure-as-code-services' ),
				),
				array(
					'icon'  => 'chart',
					'title' => 'Monitoring and Observability',
					'copy'  => 'Improve metrics, dashboards, logs, alerting, and operational visibility across applications and infrastructure.',
					'url'   => ethnic_devops_services_page_offering_url( 'monitoring-observability-services' ),
				),
				array(
					'icon'  => 'layers',
					'title' => 'Environment Management',
					'copy'  => 'Create cleaner staging, production, and pre-release environment practices that reduce configuration drift and confusion.',
					'url'   => ethnic_devops_services_page_offering_url( 'environment-management-services' ),
				),
				array(
					'icon'  => 'server',
					'title' => 'Docker Containerization Services',
					'copy'  => 'Package applications with Docker, improve environment consistency, and create cleaner foundations for reliable container-based delivery.',
					'url'   => ethnic_devops_services_page_offering_url( 'docker-containerization-services' ),
				),
				array(
					'icon'  => 'terminal',
					'title' => 'Release Process Optimization',
					'copy'  => 'Tighten release governance, visibility, approvals, and deployment flow so delivery can move faster without losing control.',
					'url'   => ethnic_devops_services_page_offering_url( 'release-process-optimization-services' ),
				),
				array(
					'icon'  => 'support',
					'title' => 'Ongoing DevOps Support',
					'copy'  => 'Provide continued operational improvement, troubleshooting, environment care, and delivery support after setup.',
					'url'   => ethnic_devops_services_page_offering_url( 'ongoing-devops-support' ),
				),
			),
			'stackParagraphs' => array(
				'The right DevOps and cloud stack depends on scale, hosting environment, team maturity, compliance and security expectations, operational goals, and the level of automation the business actually needs. We choose tools based on fit and maintainability rather than assuming every platform needs the same stack.',
				'That may include public cloud platforms, containers, virtual machines, CI/CD tooling, Infrastructure as Code frameworks, observability systems, and environment automation selected around the delivery model and operational complexity of the business.',
			),
			'stackGroups' => array(
				array(
					'icon'        => 'cloud',
					'title'       => 'Cloud Platforms',
					'description' => 'Cloud platform choices depend on workload profile, governance requirements, cost controls, regional needs, and team experience.',
					'items'       => array( 'AWS', 'Azure', 'Google Cloud', 'Other managed cloud environments' ),
				),
				array(
					'icon'        => 'server',
					'title'       => 'Infrastructure / Compute',
					'description' => 'Infrastructure delivery may involve traditional servers, containerized workloads, orchestrated environments, or lighter serverless patterns.',
					'items'       => array( 'Virtual machines', 'Containers', 'Kubernetes-ready environments', 'Serverless options' ),
				),
				array(
					'icon'        => 'deploy',
					'title'       => 'CI/CD / Automation',
					'description' => 'Pipeline tooling is selected around source control, workflow complexity, testing needs, release approvals, and operational control.',
					'items'       => array( 'GitHub Actions', 'GitLab CI', 'Jenkins', 'Pipeline tooling options' ),
				),
				array(
					'icon'        => 'workflow',
					'title'       => 'IaC / Provisioning',
					'description' => 'Provisioning frameworks help standardize infrastructure changes, reduce drift, and create more repeatable environment delivery.',
					'items'       => array( 'Terraform', 'Ansible', 'Infrastructure templates', 'Provisioning automation patterns' ),
				),
				array(
					'icon'        => 'chart',
					'title'       => 'Monitoring / Logging',
					'description' => 'Observability tooling helps teams understand health, performance, errors, resource pressure, and operational risk earlier.',
					'items'       => array( 'Prometheus', 'Grafana', 'ELK / OpenSearch', 'Cloud-native monitoring tools' ),
				),
			),
			'reliabilityParagraphs' => array(
				'Security and reliability matter because infrastructure issues quickly become business issues. Release confidence, environment stability, access control, and operational visibility all influence whether teams can deliver changes without creating avoidable risk.',
				'We help shape secure deployment practices, monitoring and alerting, backup and recovery planning, and access-aware environment setup so operational control improves alongside delivery speed.',
				'The goal is not to make unrealistic promises about uptime or risk elimination. It is to build a more dependable operating model that gives teams earlier visibility, stronger safeguards, and clearer response readiness.',
			),
			'reliabilityChecklist' => array(
				'Secure deployment practices',
				'Monitoring and alerting',
				'Uptime and resilience planning',
				'Access and environment controls',
				'Incident visibility and response readiness',
				'Long-term reliability improvement',
			),
			'reliabilityCards' => array(
				array(
					'icon'  => 'lock',
					'title' => 'Controlled Delivery',
					'copy'  => 'Support secrets handling, access-aware deployment controls, environment safeguards, and cleaner release governance.',
				),
				array(
					'icon'  => 'chart',
					'title' => 'Operational Visibility',
					'copy'  => 'Improve dashboards, alerting, logs, and service health signals so issues are easier to detect and understand.',
				),
				array(
					'icon'  => 'shield',
					'title' => 'Resilience Planning',
					'copy'  => 'Shape backup, rollback, recovery, and service-continuity considerations around operational risk and business impact.',
				),
				array(
					'icon'  => 'support',
					'title' => 'Reliability Improvement',
					'copy'  => 'Support gradual operational hardening through better workflows, cleaner environments, and more dependable release practices.',
				),
			),
			'automationParagraphs' => array(
				'DevOps automation reduces manual effort, improves consistency, and helps teams move through build, test, deployment, and environment changes with fewer repeated tasks and fewer avoidable mistakes.',
				'That may include build automation, testing pipelines, environment provisioning, deployment steps, monitoring hooks, validation checks, and rollback-aware workflows that make releases faster without removing control from the process.',
			),
			'automationSteps' => array(
				array(
					'title' => 'Infrastructure Review',
					'copy'  => 'Assess hosting, environments, delivery friction, operational gaps, and current tooling before redesigning the workflow.',
				),
				array(
					'title' => 'Workflow Design',
					'copy'  => 'Map the release process, approval needs, automation opportunities, and operational guardrails around how the team actually works.',
				),
				array(
					'title' => 'Environment Standardization',
					'copy'  => 'Reduce drift by aligning environment configuration, naming, access, and provisioning practices more consistently.',
				),
				array(
					'title' => 'Automation Setup',
					'copy'  => 'Implement repeatable automation for builds, deployments, provisioning, validation, notifications, or rollback-sensitive steps.',
				),
				array(
					'title' => 'Pipeline Integration',
					'copy'  => 'Connect the workflow to repositories, cloud services, environment controls, and delivery processes already in use.',
				),
				array(
					'title' => 'Monitoring & Validation',
					'copy'  => 'Add health checks, alerts, deployment visibility, and operational validation so releases are easier to trust and review.',
				),
				array(
					'title' => 'Ongoing Improvement',
					'copy'  => 'Refine automation over time as scale, services, teams, release patterns, and operational expectations continue to evolve.',
				),
			),
			'caseStudies' => array(
				array(
					'title'    => 'CI/CD Transformation for SaaS Delivery',
					'industry' => 'SaaS',
					'focus'    => 'CI/CD Automation',
					'stack'    => 'GitHub Actions / Cloud Hosting',
					'challenge'=> 'Release workflows depended on manual coordination and made deployments slower, harder to validate, and more stressful for the team.',
					'solution' => 'We redesigned the build and deployment flow, standardized environment behavior, and introduced clearer automation and release visibility.',
					'outcome'  => 'The team gained faster delivery cycles, fewer repeated release steps, and a more dependable pipeline for ongoing product changes.',
				),
				array(
					'title'    => 'Cloud Infrastructure Modernization for Multi-Environment Product Team',
					'industry' => 'B2B Services',
					'focus'    => 'Cloud Infrastructure',
					'stack'    => 'Terraform / AWS',
					'challenge'=> 'Infrastructure had grown unevenly across environments, making changes harder to manage and increasing operational inconsistency.',
					'solution' => 'We introduced cleaner provisioning patterns, environment structure, and cloud architecture guidance built around repeatable delivery.',
					'outcome'  => 'The business gained more consistent infrastructure behavior, improved change control, and a stronger cloud foundation for growth.',
				),
				array(
					'title'    => 'Observability and Reliability Improvement Program for Transactional Platform',
					'industry' => 'Retail',
					'focus'    => 'Monitoring and Reliability',
					'stack'    => 'Prometheus / Grafana',
					'challenge'=> 'Teams lacked clear alerting, service visibility, and enough operational context to respond quickly when issues appeared.',
					'solution' => 'We improved monitoring coverage, alert structure, and operational visibility around the platform’s most important services and release paths.',
					'outcome'  => 'Stakeholders gained earlier warning signals, stronger incident awareness, and a more confidence-building operational baseline.',
				),
			),
			'faqs' => array(
				array(
					'question' => 'What DevOps consulting services do you offer?',
					'answer'   => 'We support DevOps consulting, infrastructure design, CI/CD setup, monitoring, environment management, Infrastructure as Code, reliability improvements, and ongoing operational support.',
				),
				array(
					'question' => 'Can you help modernize our cloud infrastructure?',
					'answer'   => 'Yes. We help assess current environments, improve architecture, standardize provisioning, and support modernization plans based on scale, operational needs, and reliability goals.',
				),
				array(
					'question' => 'Do you support AWS, Azure, or Google Cloud environments?',
					'answer'   => 'Yes. We can work across major cloud environments and help choose or refine the right setup based on workload profile, governance needs, and team maturity.',
				),
				array(
					'question' => 'Can you build CI/CD pipelines for our team?',
					'answer'   => 'Yes. We design CI/CD workflows around build, test, deployment, validation, approvals, rollback readiness, and the way your team actually releases software.',
				),
				array(
					'question' => 'Do you help with Infrastructure as Code and environment automation?',
					'answer'   => 'Yes. We support Infrastructure as Code, repeatable provisioning, environment consistency, and automation that reduces drift and manual setup work.',
				),
				array(
					'question' => 'How do you approach monitoring and reliability?',
					'answer'   => 'We focus on practical visibility through dashboards, logs, metrics, and alerts while also improving deployment confidence, environment stability, and resilience planning.',
				),
				array(
					'question' => 'Can you improve deployment speed without reducing control?',
					'answer'   => 'Yes. The goal is controlled acceleration: better automation, cleaner validation, clearer release visibility, and workflows that preserve governance where it matters.',
				),
				array(
					'question' => 'Do you provide ongoing DevOps support after setup?',
					'answer'   => 'Yes. We support ongoing improvements, troubleshooting, monitoring refinement, environment care, and operational tuning after the initial setup work is complete.',
				),
				array(
					'question' => 'Can you work with our current tools and cloud stack?',
					'answer'   => 'Yes. We typically work with the existing stack first, then recommend improvements based on operational fit, delivery goals, and maintainability rather than forcing unnecessary change.',
				),
				array(
					'question' => 'Which businesses benefit most from DevOps services?',
					'answer'   => 'Businesses with growing delivery complexity, repeated deployment friction, inconsistent environments, cloud scaling pressure, or reliability concerns often benefit most from DevOps services.',
				),
			),
			'ctaTitle'      => 'Looking for a DevOps Company to Improve Delivery and Reliability?',
			'ctaText'       => 'Discuss DevOps consulting, cloud infrastructure services, CI/CD workflows, automation, monitoring, security, or operational scale challenges with a team focused on practical implementation and dependable operations.',
			'ctaHighlights' => array(
				'DevOps consulting services shaped around real delivery and infrastructure pain points',
				'Cloud infrastructure services, CI/CD automation, and observability support for growing teams',
				'Practical guidance across design, implementation, modernization, monitoring, and ongoing improvement',
			),
			'ctaSteps'      => array(
				array(
					'title' => 'Share the operational bottleneck',
					'copy'  => 'Tell us where deployments, environments, monitoring, or infrastructure complexity are slowing delivery or increasing risk.',
				),
				array(
					'title' => 'Map the right DevOps path',
					'copy'  => 'We help define the infrastructure priorities, automation scope, workflow improvements, and reliability focus areas that fit best.',
				),
				array(
					'title' => 'Move into implementation planning',
					'copy'  => 'Leave with clearer next steps for cloud improvements, CI/CD setup, operational hardening, and long-term delivery support.',
				),
			),
		);

		return $data;
	}
}

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

		return ob_get_clean();
	}
}

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

		switch ( $icon ) {
			case 'server':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="4.2" y="5" width="15.6" height="5.2" rx="1.4" />
					<rect x="4.2" y="13.8" width="15.6" height="5.2" rx="1.4" />
					<path d="M7.4 7.6h.01" />
					<path d="M7.4 16.4h.01" />
					<path d="M11 7.6h5.6" />
					<path d="M11 16.4h5.6" />
				</svg>
				<?php
				break;

			case 'lock':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="5.6" y="10.4" width="12.8" height="9" rx="1.8" />
					<path d="M8.8 10.4V8.2A3.2 3.2 0 0 1 12 5a3.2 3.2 0 0 1 3.2 3.2v2.2" />
					<path d="M12 13.4v2.8" />
				</svg>
				<?php
				break;

			case 'deploy':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M12 4.8v9.7" />
					<path d="m8.4 11 3.6 3.5 3.6-3.5" />
					<rect x="4.4" y="16.1" width="15.2" height="3.8" rx="1.4" />
				</svg>
				<?php
				break;

			case 'terminal':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<rect x="3.8" y="5" width="16.4" height="14" rx="2" />
					<path d="m7.6 10.2 2.4 2.3-2.4 2.3" />
					<path d="M11.8 15h4.6" />
				</svg>
				<?php
				break;

			case 'refresh':
				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<path d="M18.2 9.1A6.6 6.6 0 0 0 6.8 7.8" />
					<path d="M6.8 7.8V4.9" />
					<path d="M6.8 7.8h2.9" />
					<path d="M5.8 14.9a6.6 6.6 0 0 0 11.4 1.3" />
					<path d="M17.2 16.2v2.9" />
					<path d="M17.2 16.2h-2.9" />
				</svg>
				<?php
				break;

			default:
				if ( function_exists( 'ethnic_ai_ml_development_page_icon' ) ) {
					ob_end_clean();
					return ethnic_ai_ml_development_page_icon( $icon );
				}

				if ( function_exists( 'ethnic_ecommerce_development_page_icon' ) ) {
					ob_end_clean();
					return ethnic_ecommerce_development_page_icon( $icon );
				}

				?>
				<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
					<circle cx="12" cy="12" r="8.5" />
					<path d="M8.6 12.3 10.8 14.5 15.4 9.9" />
				</svg>
				<?php
				break;
		}

		return ob_get_clean();
	}
}

if ( ! function_exists( 'ethnic_devops_services_page_render' ) ) {
	function ethnic_devops_services_page_render() {
		$data                = ethnic_devops_services_page_data();
		$consultation_url    = ethnic_devops_services_page_contact_url(
			array(
				'intent'  => 'consultation',
				'service' => 'devops-services',
			)
		);
		$team_url            = ethnic_devops_services_page_contact_url(
			array(
				'intent'  => 'team',
				'service' => 'devops-services',
			)
		);
		$quote_url           = ethnic_devops_services_page_contact_url(
			array(
				'intent'  => 'quote',
				'service' => 'devops-services',
			)
		);
		$case_studies_url    = ethnic_devops_services_page_case_studies_url();
		$case_studies        = function_exists( 'ethnic_case_studies_service_page_cards' )
			? ethnic_case_studies_service_page_cards(
				array(
					'page_id'        => get_queried_object_id(),
					'limit'          => 3,
					'filters'        => array(
						'service' => array( 'devops' ),
					),
					'fallback_items' => $data['caseStudies'],
				)
			)
			: (array) $data['caseStudies'];
		$case_studies_anchor = ! empty( $case_studies ) ? '#case-studies' : $case_studies_url;

		ob_start();
		?>
		<div class="ethnic-devops-page">
			<section class="ethnic-devops-section ethnic-devops-section--hero">
				<div class="ethnic-devops-shell">
					<div class="ethnic-devops-hero">
						<div class="ethnic-devops-hero__copy">
							<p class="ethnic-devops-kicker">Cloud & Delivery Operations</p>
							<h1 class="ethnic-devops-hero__title"><?php echo esc_html( $data['heroTitle'] ); ?></h1>
							<p class="ethnic-devops-hero__lead"><?php echo esc_html( $data['heroText'] ); ?></p>
							<div class="ethnic-devops-actions">
								<a class="ethnic-devops-button ethnic-devops-button--primary" href="<?php echo esc_url( $consultation_url ); ?>">Book a Free Consultation</a>
								<a class="ethnic-devops-button ethnic-devops-button--secondary" href="<?php echo esc_url( $case_studies_anchor ); ?>">View Case Studies</a>
							</div>
							<ul class="ethnic-devops-hero__points" aria-label="DevOps service highlights">
								<?php foreach ( (array) $data['heroPoints'] as $point ) : ?>
									<li><?php echo esc_html( $point ); ?></li>
								<?php endforeach; ?>
							</ul>
						</div>

						<div class="ethnic-devops-hero__visual">
							<div class="ethnic-devops-visual">
								<div class="ethnic-devops-visual__window">
									<div class="ethnic-devops-visual__window-bar">
										<span></span>
										<span></span>
										<span></span>
									</div>
									<div class="ethnic-devops-visual__window-body">
										<div class="ethnic-devops-visual__nav">
											<span>Cloud Map</span>
											<span>Pipeline</span>
											<span>Observability</span>
										</div>
										<div class="ethnic-devops-visual__hero-card">
											<div class="ethnic-devops-visual__product-shot"></div>
											<div class="ethnic-devops-visual__product-copy">
												<span class="ethnic-devops-visual__eyebrow">Infrastructure mockup</span>
												<strong>Cloud delivery, release automation, and operational visibility built for dependable scaling.</strong>
												<p>Environment-aware DevOps delivery that connects infrastructure, pipelines, observability, and release controls into a more stable operating model.</p>
												<div class="ethnic-devops-visual__tags">
													<span>CI/CD-ready</span>
													<span>Cloud-aware</span>
													<span>Monitoring-first</span>
												</div>
											</div>
										</div>
										<div class="ethnic-devops-visual__catalog">
											<div class="ethnic-devops-visual__catalog-item">
												<small>Pipeline view</small>
												<strong>Build, validation, deploy, rollback-aware workflow support</strong>
											</div>
											<div class="ethnic-devops-visual__catalog-item">
												<small>Operations panel</small>
												<strong>Metrics, logs, alerts, and environment health visibility</strong>
											</div>
										</div>
									</div>
								</div>
								<div class="ethnic-devops-visual__floating ethnic-devops-visual__floating--ops">
									<p class="ethnic-devops-visual__floating-label">Delivery lens</p>
									<strong>Improve release confidence without losing operational control</strong>
									<div class="ethnic-devops-visual__metric-row">
										<div>
											<small>Release</small>
											<strong>Clearer</strong>
										</div>
										<div>
											<small>Reliability</small>
											<strong>Stronger</strong>
										</div>
									</div>
									<div class="ethnic-devops-visual__progress">
										<span></span>
										<span></span>
										<span></span>
									</div>
								</div>
								<div class="ethnic-devops-visual__floating ethnic-devops-visual__floating--checkout">
									<p class="ethnic-devops-visual__floating-label">Operations focus</p>
									<strong>Cloud architecture, deployment automation, monitoring, and environment standardization</strong>
									<ul>
										<li>Infrastructure modernization</li>
										<li>CI/CD workflow improvement</li>
										<li>Operational stability support</li>
									</ul>
								</div>
							</div>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-devops-section" id="overview">
				<div class="ethnic-devops-shell">
					<?php echo ethnic_devops_services_page_heading( 'Overview', 'DevOps consulting services and cloud infrastructure support built around real delivery workflows and operational needs.', 'We help teams improve environments, automate release processes, strengthen observability, and create a more dependable operational foundation as complexity grows.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					<div class="ethnic-devops-overview">
						<div class="ethnic-devops-prose">
							<?php foreach ( (array) $data['overviewParagraphs'] as $paragraph ) : ?>
								<p><?php echo esc_html( $paragraph ); ?></p>
							<?php endforeach; ?>
						</div>
						<div class="ethnic-devops-card-grid ethnic-devops-card-grid--overview">
							<?php foreach ( (array) $data['overviewFeatures'] as $feature ) : ?>
								<article class="ethnic-devops-card">
									<div class="ethnic-devops-card__icon">
										<?php echo ethnic_devops_services_page_icon( $feature['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
									</div>
									<h3><?php echo esc_html( $feature['title'] ); ?></h3>
									<p><?php echo esc_html( $feature['copy'] ); ?></p>
								</article>
							<?php endforeach; ?>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-devops-section ethnic-devops-section--soft" id="devops-maturity-challenges">
				<div class="ethnic-devops-shell">
					<?php echo ethnic_devops_services_page_heading( 'DevOps Maturity Challenges', 'Common delivery, infrastructure, and operations problems that often signal the need for stronger DevOps foundations.', 'These challenges show up when release workflows, environments, cloud operations, and monitoring have not kept pace with product complexity, team growth, or reliability expectations.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					<div class="ethnic-devops-card-grid ethnic-devops-card-grid--challenges">
						<?php foreach ( (array) $data['challenges'] as $challenge ) : ?>
							<article class="ethnic-devops-card ethnic-devops-card--challenge">
								<div class="ethnic-devops-card__icon">
									<?php echo ethnic_devops_services_page_icon( $challenge['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
								</div>
								<h3><?php echo esc_html( $challenge['title'] ); ?></h3>
								<p><?php echo esc_html( $challenge['copy'] ); ?></p>
							</article>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-devops-section" id="core-offerings">
				<div class="ethnic-devops-shell">
					<?php echo ethnic_devops_services_page_heading( 'Core Offerings', 'Main DevOps service offerings across infrastructure, automation, observability, and operational improvement.', 'This DevOps services page is structured to support future internal linking into more focused cloud infrastructure, CI/CD, IaC, automation, and monitoring service pages as the branch expands.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					<div class="ethnic-devops-card-grid ethnic-devops-card-grid--offerings">
						<?php foreach ( (array) $data['offerings'] as $offering ) : ?>
							<article class="ethnic-devops-card ethnic-devops-card--offering">
								<div class="ethnic-devops-card__icon">
									<?php echo ethnic_devops_services_page_icon( $offering['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
								</div>
								<h3><?php echo esc_html( $offering['title'] ); ?></h3>
								<p><?php echo esc_html( $offering['copy'] ); ?></p>
								<a class="ethnic-devops-card__link" href="<?php echo esc_url( $offering['url'] ); ?>">Explore Service</a>
							</article>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-devops-section ethnic-devops-section--soft" id="cloud-hosting-stack">
				<div class="ethnic-devops-shell">
					<?php echo ethnic_devops_services_page_heading( 'Cloud / Hosting Stack', 'The cloud and automation ecosystem we use depends on the delivery model, infrastructure complexity, and operational goals of the business.', 'We work across cloud platforms, provisioning tooling, pipeline systems, and monitoring stacks while keeping implementation grounded in maintainability, team fit, and real operational requirements.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					<div class="ethnic-devops-prose ethnic-devops-prose--narrow">
						<?php foreach ( (array) $data['stackParagraphs'] as $paragraph ) : ?>
							<p><?php echo esc_html( $paragraph ); ?></p>
						<?php endforeach; ?>
					</div>
					<div class="ethnic-devops-card-grid ethnic-devops-card-grid--stacks">
						<?php foreach ( (array) $data['stackGroups'] as $group ) : ?>
							<article class="ethnic-devops-card ethnic-devops-card--stack">
								<div class="ethnic-devops-card__icon">
									<?php echo ethnic_devops_services_page_icon( $group['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
								</div>
								<h3><?php echo esc_html( $group['title'] ); ?></h3>
								<p><?php echo esc_html( $group['description'] ); ?></p>
								<ul class="ethnic-devops-badge-list">
									<?php foreach ( (array) $group['items'] as $item ) : ?>
										<li><?php echo esc_html( $item ); ?></li>
									<?php endforeach; ?>
								</ul>
							</article>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-devops-section" id="security-and-reliability">
				<div class="ethnic-devops-shell">
					<div class="ethnic-devops-reliability">
						<div class="ethnic-devops-reliability__copy">
							<?php echo ethnic_devops_services_page_heading( 'Security and Reliability', 'Secure, observable, and dependable DevOps delivery for teams that need more confidence across environments and releases.', 'Operational reliability is a business requirement, not just a technical preference. We help strengthen the controls, visibility, and delivery discipline needed to operate cloud infrastructure more confidently.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
							<?php foreach ( (array) $data['reliabilityParagraphs'] as $paragraph ) : ?>
								<p><?php echo esc_html( $paragraph ); ?></p>
							<?php endforeach; ?>
							<ul class="ethnic-devops-checklist" aria-label="Security and reliability highlights">
								<?php foreach ( (array) $data['reliabilityChecklist'] as $item ) : ?>
									<li><?php echo esc_html( $item ); ?></li>
								<?php endforeach; ?>
							</ul>
						</div>
						<div class="ethnic-devops-card-grid ethnic-devops-card-grid--reliability">
							<?php foreach ( (array) $data['reliabilityCards'] as $card ) : ?>
								<article class="ethnic-devops-card ethnic-devops-card--reliability">
									<div class="ethnic-devops-card__icon">
										<?php echo ethnic_devops_services_page_icon( $card['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
									</div>
									<h3><?php echo esc_html( $card['title'] ); ?></h3>
									<p><?php echo esc_html( $card['copy'] ); ?></p>
								</article>
							<?php endforeach; ?>
						</div>
					</div>
				</div>
			</section>

			<section class="ethnic-devops-section ethnic-devops-section--soft" id="automation-workflow">
				<div class="ethnic-devops-shell">
					<div class="ethnic-devops-workflow">
						<div class="ethnic-devops-workflow__copy">
							<?php echo ethnic_devops_services_page_heading( 'Automation Workflow', 'DevOps automation workflows that reduce manual effort while preserving delivery control and operational visibility.', 'The goal is not just speed. It is repeatable delivery, cleaner environments, and release workflows that reflect how teams actually build, test, approve, deploy, and monitor change.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
							<?php foreach ( (array) $data['automationParagraphs'] as $paragraph ) : ?>
								<p><?php echo esc_html( $paragraph ); ?></p>
							<?php endforeach; ?>
						</div>
						<div class="ethnic-devops-card-grid ethnic-devops-card-grid--workflow">
							<?php foreach ( (array) $data['automationSteps'] as $index => $step ) : ?>
								<article class="ethnic-devops-card ethnic-devops-card--workflow">
									<span class="ethnic-devops-step-number"><?php echo esc_html( sprintf( '%02d', $index + 1 ) ); ?></span>
									<h3><?php echo esc_html( $step['title'] ); ?></h3>
									<p><?php echo esc_html( $step['copy'] ); ?></p>
								</article>
							<?php endforeach; ?>
						</div>
					</div>
				</div>
			</section>

			<?php if ( ! empty( $case_studies ) ) : ?>
			<section class="ethnic-devops-section ethnic-devops-section--contrast" id="case-studies">
				<div class="ethnic-devops-shell">
					<?php echo ethnic_devops_services_page_heading( 'Case Studies', 'Commercial DevOps examples for delivery automation, cloud modernization, observability, and infrastructure improvement.', 'These case study previews reflect the kind of operational work businesses often need when delivery workflows, infrastructure reliability, and monitoring maturity become strategic priorities.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					<?php echo ethnic_shared_case_study_showcase_render( $case_studies, array( 'carousel_label' => 'DevOps case studies showcase' ) ); ?>
				</div>
			</section>
			<?php endif; ?>

			<section class="ethnic-devops-section" id="faq">
				<div class="ethnic-devops-shell ethnic-devops-shell--narrow">
					<?php echo ethnic_devops_services_page_heading( 'FAQs', 'Answers to common questions about DevOps consulting services, cloud infrastructure services, and automation support.', 'These FAQs cover cloud platforms, CI/CD, Infrastructure as Code, reliability, ongoing support, and where DevOps services create the most operational value.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					<div class="ethnic-devops-faq">
						<?php foreach ( (array) $data['faqs'] as $index => $faq ) : ?>
							<details class="ethnic-devops-faq__item" <?php echo 0 === $index ? 'open' : ''; ?>>
								<summary>
									<span><?php echo esc_html( $faq['question'] ); ?></span>
									<span class="ethnic-devops-faq__marker" aria-hidden="true"></span>
								</summary>
								<div class="ethnic-devops-faq__answer">
									<p><?php echo esc_html( $faq['answer'] ); ?></p>
								</div>
							</details>
						<?php endforeach; ?>
					</div>
				</div>
			</section>

			<section class="ethnic-devops-section ethnic-devops-section--cta" id="cta">
				<div class="ethnic-devops-shell">
					<div class="ethnic-devops-cta">
						<div class="ethnic-devops-cta__copy">
							<div class="ethnic-devops-cta__intro">
								<p class="ethnic-devops-kicker ethnic-devops-kicker--light">Ready to Talk</p>
								<p class="ethnic-devops-cta__note">Planning for cloud infrastructure, release automation, monitoring, and more dependable operational delivery.</p>
							</div>
							<h2><?php echo esc_html( $data['ctaTitle'] ); ?></h2>
							<p class="ethnic-devops-cta__lead"><?php echo esc_html( $data['ctaText'] ); ?></p>
							<div class="ethnic-devops-actions">
								<a class="ethnic-devops-button ethnic-devops-button--primary" href="<?php echo esc_url( $team_url ); ?>">Talk to Our Team</a>
								<a class="ethnic-devops-button ethnic-devops-button--secondary" href="<?php echo esc_url( $quote_url ); ?>">Get a Free Quote</a>
							</div>
							<ul class="ethnic-devops-cta__highlights" aria-label="DevOps CTA highlights">
								<?php foreach ( (array) $data['ctaHighlights'] as $highlight ) : ?>
									<li><?php echo esc_html( $highlight ); ?></li>
								<?php endforeach; ?>
							</ul>
						</div>

						<aside class="ethnic-devops-cta__panel" aria-label="What happens next">
							<div class="ethnic-devops-cta__panel-header">
								<p class="ethnic-devops-cta__panel-eyebrow">What Happens Next</p>
								<h3 class="ethnic-devops-cta__panel-title">Turn DevOps into a more dependable delivery system</h3>
							</div>
							<ol class="ethnic-devops-cta__steps">
								<?php foreach ( (array) $data['ctaSteps'] as $index => $step ) : ?>
									<li class="ethnic-devops-cta__step">
										<span class="ethnic-devops-cta__step-number"><?php echo esc_html( sprintf( '%02d', $index + 1 ) ); ?></span>
										<div class="ethnic-devops-cta__step-copy">
											<strong><?php echo esc_html( $step['title'] ); ?></strong>
											<p><?php echo esc_html( $step['copy'] ); ?></p>
										</div>
									</li>
								<?php endforeach; ?>
							</ol>
							<div class="ethnic-devops-cta__panel-note"><strong>Focus:</strong> infrastructure review, workflow design, automation priorities, reliability improvements, and long-term operational support.</div>
						</aside>
					</div>
				</div>
			</section>
		</div>
		<?php

		return ob_get_clean();
	}
}

if ( ! function_exists( 'ethnic_devops_services_page_styles' ) ) {
	function ethnic_devops_services_page_styles() {
		$base_styles = '';

		if ( function_exists( 'ethnic_ecommerce_development_page_styles' ) ) {
			$base_styles = str_replace( 'ethnic-ecommerce', 'ethnic-devops', ethnic_ecommerce_development_page_styles() );
		}

		return $base_styles . <<<'CSS'
.ethnic-devops-page {
	--ethnic-devops-accent: #f59e0b;
	--ethnic-devops-accent-dark: #b45309;
	--ethnic-devops-cyan: #38bdf8;
	--ethnic-devops-lime: #fde68a;
}

.ethnic-devops-section--hero {
	background:
		radial-gradient(circle at 18% 18%, rgba(56, 189, 248, 0.18), transparent 24%),
		radial-gradient(circle at 84% 18%, rgba(245, 158, 11, 0.16), transparent 18%),
		linear-gradient(180deg, #08141d, #0c2130 56%, #13344b);
}

.ethnic-devops-hero__title {
	max-width: 8ch;
}

.ethnic-devops-hero__lead {
	max-width: 59ch;
}

.ethnic-devops-visual__window-body {
	background:
		radial-gradient(circle at top right, rgba(56, 189, 248, 0.16), transparent 28%),
		linear-gradient(180deg, rgba(255, 255, 255, 0.97), rgba(243, 248, 251, 0.97));
}

.ethnic-devops-visual__nav span,
.ethnic-devops-visual__tags span {
	background: rgba(14, 165, 233, 0.08);
	color: #0f4c81;
}

.ethnic-devops-visual__product-shot {
	background:
		radial-gradient(circle at 28% 28%, rgba(255, 255, 255, 0.9), transparent 22%),
		linear-gradient(150deg, rgba(56, 189, 248, 0.16), rgba(245, 158, 11, 0.1)),
		linear-gradient(180deg, #eff6ff, #dbeafe);
}

.ethnic-devops-visual__product-shot::before {
	background:
		linear-gradient(180deg, #ffffff, #eff8ff);
	border: 1px solid rgba(56, 189, 248, 0.14);
}

.ethnic-devops-visual__product-shot::after {
	background: rgba(56, 189, 248, 0.12);
}

.ethnic-devops-visual__eyebrow {
	color: var(--ethnic-devops-accent-dark);
}

.ethnic-devops-visual__floating li::before,
.ethnic-devops-checklist li::before,
.ethnic-devops-cta__highlights li::before {
	background: var(--ethnic-devops-accent);
	box-shadow: 0 0 0 5px rgba(245, 158, 11, 0.14);
}

.ethnic-devops-visual__floating--ops {
	background:
		linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.04)),
		linear-gradient(180deg, #0f3141, #0b1f28);
}

.ethnic-devops-card__icon,
.ethnic-devops-platform-card__icon {
	background: rgba(245, 158, 11, 0.08);
	color: var(--ethnic-devops-accent-dark);
}

.ethnic-devops-dashboard,
.ethnic-devops-faq__marker,
.ethnic-devops-dashboard__journey-step span {
	background-color: rgba(245, 158, 11, 0.08);
	color: var(--ethnic-devops-accent-dark);
}

.ethnic-devops-dashboard {
	background:
		radial-gradient(circle at top right, rgba(56, 189, 248, 0.14), transparent 30%),
		linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(248, 250, 252, 0.96));
}

.ethnic-devops-cta::before {
	background:
		linear-gradient(90deg, rgba(245, 158, 11, 0.05) 1px, transparent 1px),
		linear-gradient(0deg, rgba(245, 158, 11, 0.05) 1px, transparent 1px);
}

.ethnic-devops-cta .ethnic-devops-kicker--light,
.ethnic-devops-heading__eyebrow {
	border-color: rgba(245, 158, 11, 0.18);
	color: var(--ethnic-devops-accent-dark) !important;
	-webkit-text-fill-color: var(--ethnic-devops-accent-dark);
}

.ethnic-devops-cta .ethnic-devops-kicker--light {
	color: #a16207 !important;
	-webkit-text-fill-color: #a16207;
	box-shadow: 0 14px 36px rgba(245, 158, 11, 0.14);
}

.ethnic-devops-card-grid--challenges {
	grid-template-columns: repeat(5, minmax(0, 1fr));
}

.ethnic-devops-card-grid--offerings,
.ethnic-devops-card-grid--stacks {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ethnic-devops-card-grid--workflow,
.ethnic-devops-card-grid--reliability {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.ethnic-devops-reliability,
.ethnic-devops-workflow {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	gap: clamp(28px, 4vw, 48px);
	align-items: start;
}

.ethnic-devops-card--challenge,
.ethnic-devops-card--offering,
.ethnic-devops-card--stack,
.ethnic-devops-card--workflow,
.ethnic-devops-card--reliability {
	height: 100%;
}

.ethnic-devops-card--offering {
	display: flex;
	flex-direction: column;
}

.ethnic-devops-step-number {
	display: inline-grid;
	place-items: center;
	min-width: 46px;
	height: 34px;
	padding: 0 12px;
	border-radius: 999px;
	background: rgba(245, 158, 11, 0.08);
	color: var(--ethnic-devops-accent-dark);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.12em;
	line-height: 1;
	text-transform: uppercase;
}

.ethnic-devops-card--workflow h3 {
	margin-top: 16px;
}

.ethnic-devops-badge-list {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	padding: 0;
	margin: 18px 0 0;
	list-style: none;
}

.ethnic-devops-badge-list li {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	padding: 7px 12px;
	border-radius: 999px;
	background: rgba(245, 158, 11, 0.08);
	color: #8a5b07;
	font-size: 12px;
	font-weight: 700;
	line-height: 1;
}

.ethnic-devops-card__link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: auto;
	padding-top: 18px;
	color: var(--ethnic-devops-accent-dark);
	font-size: 13px;
	font-weight: 700;
	line-height: 1.2;
	text-decoration: none;
}

.ethnic-devops-card__link::after {
	content: "";
	width: 8px;
	height: 8px;
	border-top: 2px solid currentColor;
	border-right: 2px solid currentColor;
	transform: rotate(45deg);
}

.ethnic-devops-card__link:hover,
.ethnic-devops-card__link:focus-visible {
	color: var(--ethnic-devops-accent);
}

.ethnic-devops-card-grid--case-studies .ethnic-devops-case-card {
	padding: 24px;
}

.ethnic-devops-case-card__tags {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.ethnic-devops-case-card__tags span {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	padding: 7px 12px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.08);
	border: 1px solid rgba(255, 255, 255, 0.08);
	color: rgba(255, 255, 255, 0.78);
	font-size: 12px;
	font-weight: 700;
	line-height: 1;
}

.ethnic-devops-case-card__summary {
	display: grid;
	gap: 12px;
	margin-top: 18px;
}

.ethnic-devops-case-card__summary p {
	margin: 0;
}

.ethnic-devops-case-card h3 {
	margin: 18px 0 0;
	font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
	font-size: 22px;
	font-weight: 700;
	line-height: 1.3;
}

.ethnic-devops-section--contrast .ethnic-devops-heading__title,
.ethnic-devops-section--contrast .ethnic-devops-heading__copy,
.ethnic-devops-section--contrast .ethnic-devops-heading__eyebrow,
.ethnic-devops-case-card h3,
.ethnic-devops-case-card p,
.ethnic-devops-case-card strong {
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff;
}

.ethnic-devops-case-card {
	display: flex;
	flex-direction: column;
	gap: 16px;
	height: 100%;
	border-radius: 28px;
	border: 1px solid rgba(255, 255, 255, 0.08);
	background:
		linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.03)),
		rgba(255, 255, 255, 0.02);
	box-shadow: 0 22px 60px rgba(5, 14, 28, 0.2);
}

.ethnic-devops-case-card h3 {
	margin: 0;
	font-size: clamp(24px, 1.9vw, 30px);
	line-height: 1.16;
	letter-spacing: -0.035em;
	text-wrap: balance;
}

.ethnic-devops-case-card__tags span {
	background: rgba(255, 255, 255, 0.1);
	border: 1px solid rgba(255, 255, 255, 0.12);
	color: rgba(255, 255, 255, 0.92);
	letter-spacing: 0.03em;
}

.ethnic-devops-case-card__summary p {
	color: rgba(255, 255, 255, 0.82) !important;
	-webkit-text-fill-color: rgba(255, 255, 255, 0.82);
	font-size: 15px;
	line-height: 1.72;
}

.ethnic-devops-case-card__summary strong {
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff;
}

.ethnic-devops-case-card .ethnic-devops-button--ghost {
	align-self: flex-start;
	margin-top: auto;
}

@media (max-width: 1200px) {
	.ethnic-devops-card-grid--challenges,
	.ethnic-devops-card-grid--offerings,
	.ethnic-devops-card-grid--stacks {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 1024px) {
	.ethnic-devops-reliability,
	.ethnic-devops-workflow {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 767px) {
	.ethnic-devops-card-grid--challenges,
	.ethnic-devops-card-grid--offerings,
	.ethnic-devops-card-grid--stacks,
	.ethnic-devops-card-grid--workflow,
	.ethnic-devops-card-grid--reliability,
	.ethnic-devops-badge-list {
		grid-template-columns: 1fr;
	}

	.ethnic-devops-badge-list {
		display: grid;
	}

	.ethnic-devops-step-number {
		min-width: 42px;
	}
}
CSS;
	}
}

if ( ! function_exists( 'ethnic_devops_services_page_body_class' ) ) {
	function ethnic_devops_services_page_body_class( $classes ) {
		if ( ethnic_devops_services_page_is_target() ) {
			$classes[] = 'ethnic-devops-development-target';
			$classes[] = 'ethnic-devops-services-target';
		}

		return $classes;
	}

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

if ( ! function_exists( 'ethnic_devops_services_page_print_head_assets' ) ) {
	function ethnic_devops_services_page_print_head_assets() {
		if ( ! ethnic_devops_services_page_is_target() ) {
			return;
		}

		$data = ethnic_devops_services_page_data();
		?>
		<style id="ethnic-devops-services-page-inline-css" type="text/css">
			<?php echo ethnic_devops_services_page_styles(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
		</style>
		<meta name="description" content="<?php echo esc_attr( $data['metaDescription'] ); ?>" />
		<?php
	}

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

if ( ! function_exists( 'ethnic_devops_services_page_document_title' ) ) {
	function ethnic_devops_services_page_document_title( $title ) {
		if ( ethnic_devops_services_page_is_target() ) {
			$data = ethnic_devops_services_page_data();
			return $data['metaTitle'];
		}

		return $title;
	}

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

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

		static $rendered = false;

		if ( $rendered ) {
			return $content;
		}

		$rendered = true;

		return ethnic_devops_services_page_render();
	}

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