File: /var/www/html/wp-content/mu-plugins/ethnic-our-process-page.php
<?php
/**
* Plugin Name: Ethnic Our Process Page
* Description: Creates and renders the Our Process page with a structured, conversion-focused workflow layout.
* Version: 1.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! function_exists( 'ethnic_our_process_page_get_target_page' ) ) {
function ethnic_our_process_page_get_target_page() {
return get_page_by_path( 'our-process' );
}
}
if ( ! function_exists( 'ethnic_our_process_page_ensure_page' ) ) {
function ethnic_our_process_page_ensure_page() {
$page = ethnic_our_process_page_get_target_page();
if ( $page instanceof WP_Post ) {
return;
}
$page_id = wp_insert_post(
array(
'post_title' => 'Our Process',
'post_name' => 'our-process',
'post_status' => 'publish',
'post_type' => 'page',
'post_content' => '',
'post_parent' => 0,
'comment_status' => 'closed',
)
);
if ( $page_id && ! is_wp_error( $page_id ) ) {
update_post_meta( $page_id, '_wp_page_template', 'default' );
}
}
add_action( 'init', 'ethnic_our_process_page_ensure_page', 5 );
}
if ( ! function_exists( 'ethnic_our_process_page_is_target' ) ) {
function ethnic_our_process_page_is_target() {
if ( is_admin() ) {
return false;
}
$page = ethnic_our_process_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_our_process_page_url' ) ) {
function ethnic_our_process_page_url( $path ) {
return home_url( '/' . ltrim( (string) $path, '/' ) . '/' );
}
}
if ( ! function_exists( 'ethnic_our_process_page_contact_url' ) ) {
function ethnic_our_process_page_contact_url( $args = array() ) {
return ethnic_consultation_route_contact_url( $args, ethnic_our_process_page_url( 'contact-us' ) );
}
}
if ( ! function_exists( 'ethnic_our_process_page_data' ) ) {
function ethnic_our_process_page_data() {
static $data = null;
if ( null !== $data ) {
return $data;
}
$data = array(
'metaTitle' => 'Our Process | Strategy, Design, Development, QA & Launch Workflow',
'metaDescription' => 'Explore our process for delivering digital projects, from discovery and planning to design, development, QA, launch, and long-term support.',
'heroTitle' => 'Our Process',
'heroSubtitle' => 'Our process is built to keep planning clear, communication transparent, and execution dependable. From discovery and solution planning to design, development, QA, launch, and long-term support, we give clients a structured delivery path that can scale with changing business priorities.',
'heroMicroPoints' => array(
'Clear project planning',
'Transparent communication',
'Delivery-focused execution',
),
'overview' => array(
'Every successful digital project starts with understanding business goals, user expectations, delivery constraints, and the outcomes that matter most. That early clarity helps shape better decisions before design and development work accelerates.',
'Our process gives clients a practical project workflow that reduces risk, improves visibility, and keeps stakeholders aligned from kickoff through release. It combines strategy, UX, UI, engineering, QA, deployment, and support into one connected delivery system.',
'Because each engagement is different, our software delivery approach can adapt to project size, scope, internal team structure, and timeline priorities while still preserving a consistent project execution methodology.',
),
'highlights' => array(
array(
'icon' => 'planning',
'title' => 'Business-First Planning',
'copy' => 'We begin by aligning on goals, requirements, dependencies, priorities, and success metrics before execution starts.',
),
array(
'icon' => 'agile',
'title' => 'Agile Execution',
'copy' => 'Work is delivered in manageable stages so progress remains visible, reviewable, and responsive to change.',
),
array(
'icon' => 'delivery',
'title' => 'Transparent Delivery',
'copy' => 'Milestones, feedback loops, and implementation updates help clients stay informed throughout the project.',
),
array(
'icon' => 'support',
'title' => 'Long-Term Support',
'copy' => 'Launch is treated as a transition point, not the end of the relationship, with room for optimization and ongoing care.',
),
),
'processSteps' => array(
array(
'icon' => 'discovery',
'title' => 'Discovery & Requirement Gathering',
'copy' => 'Understand the business, users, goals, operational challenges, and technical expectations so the solution starts from the right foundation.',
),
array(
'icon' => 'strategy',
'title' => 'Strategy & Solution Planning',
'copy' => 'Define scope, priorities, roadmap, architecture direction, delivery phases, and the most suitable implementation approach.',
),
array(
'icon' => 'wireframe',
'title' => 'Wireframing / UX Direction',
'copy' => 'Map user flows, information structure, and key interactions to improve usability, content clarity, and conversion intent.',
),
array(
'icon' => 'design',
'title' => 'UI Design',
'copy' => 'Create polished, brand-aligned interfaces that balance visual credibility, user experience, and commercial objectives.',
),
array(
'icon' => 'development',
'title' => 'Development',
'copy' => 'Build the agreed solution using the right technologies, integrations, and engineering standards for reliable delivery.',
),
array(
'icon' => 'qa',
'title' => 'QA & Testing',
'copy' => 'Validate functionality, usability, responsiveness, performance, and release readiness before anything moves toward launch.',
),
array(
'icon' => 'launch',
'title' => 'Launch & Deployment',
'copy' => 'Coordinate production rollout, deployment checks, and release support to reduce launch risk and keep handoff controlled.',
),
array(
'icon' => 'optimize',
'title' => 'Support & Optimization',
'copy' => 'Maintain, monitor, improve, and extend the solution after release so the platform can keep evolving with the business.',
),
),
'collaborationItems' => array(
array(
'icon' => 'workshop',
'title' => 'Planning Sessions',
'copy' => 'Discovery workshops and planning conversations help align business context, scope, and delivery expectations early.',
),
array(
'icon' => 'milestone',
'title' => 'Milestone Reviews',
'copy' => 'Key checkpoints make it easier to validate progress, approve direction, and keep execution tied to shared priorities.',
),
array(
'icon' => 'feedback',
'title' => 'Feedback Loops',
'copy' => 'Iterative review cycles allow teams to refine decisions before they become expensive changes later in the process.',
),
array(
'icon' => 'updates',
'title' => 'Transparent Updates',
'copy' => 'Progress visibility is maintained through clear status updates, review points, and action-oriented communication.',
),
array(
'icon' => 'agile',
'title' => 'Agile Iteration',
'copy' => 'Execution can flex around evolving priorities while still preserving structure, momentum, and delivery accountability.',
),
array(
'icon' => 'partnership',
'title' => 'Ongoing Partnership',
'copy' => 'We work as a long-term delivery partner when needed, supporting enhancements, retainers, and post-launch growth plans.',
),
),
'deliverables' => array(
array(
'icon' => 'requirements',
'title' => 'Requirement Summaries',
'copy' => 'Documented business context, project expectations, priorities, and functional requirements for aligned execution.',
),
array(
'icon' => 'recommendation',
'title' => 'Solution Recommendations',
'copy' => 'Suggested technical direction, implementation priorities, and delivery options based on project goals and constraints.',
),
array(
'icon' => 'wireframe',
'title' => 'Wireframes',
'copy' => 'Early structural layouts that define flows, content hierarchy, and user journey direction before visual design begins.',
),
array(
'icon' => 'mockup',
'title' => 'UI Mockups',
'copy' => 'High-fidelity screens that communicate visual direction, interface detail, and brand-aligned user experience.',
),
array(
'icon' => 'sprint',
'title' => 'Development Sprints',
'copy' => 'Planned implementation cycles with visible scope, priorities, and tangible progress throughout build phases.',
),
array(
'icon' => 'report',
'title' => 'QA Reports',
'copy' => 'Testing insights, issue tracking, validation notes, and release checks to support quality-focused delivery decisions.',
),
array(
'icon' => 'deployment',
'title' => 'Deployment Readiness Support',
'copy' => 'Launch preparation, coordination checkpoints, and production rollout support for smoother release management.',
),
array(
'icon' => 'insights',
'title' => 'Post-Launch Recommendations',
'copy' => 'Enhancement ideas, optimization opportunities, and next-step guidance after the initial release is live.',
),
),
'qualityPoints' => array(
array(
'icon' => 'communication',
'title' => 'Clear Communication',
'copy' => 'Expectations, status, and next actions are communicated proactively so stakeholders always understand where the project stands.',
),
array(
'icon' => 'qa',
'title' => 'Quality Assurance',
'copy' => 'Testing and validation are treated as essential delivery stages, not last-minute checks before launch.',
),
array(
'icon' => 'scalability',
'title' => 'Scalable Implementation',
'copy' => 'Solutions are shaped for maintainability, integrations, growth, and realistic long-term operational use.',
),
array(
'icon' => 'business',
'title' => 'Business-Aligned Execution',
'copy' => 'Technical decisions are kept connected to outcomes such as conversion, efficiency, usability, and platform reliability.',
),
array(
'icon' => 'delivery',
'title' => 'Reliable Delivery Approach',
'copy' => 'Structured workflows, milestone checkpoints, and release discipline help reduce surprises and keep delivery dependable.',
),
array(
'icon' => 'support',
'title' => 'Long-Term Support Mindset',
'copy' => 'We plan beyond launch so support, iteration, and future improvements can happen without losing continuity.',
),
),
'faqs' => array(
array(
'question' => 'What does your project process look like from start to finish?',
'answer' => 'Our process typically moves through discovery, planning, UX direction, UI design, development, QA, launch, and post-launch support. The exact shape can vary, but the goal is always clear planning, visible progress, and reliable delivery.',
),
array(
'question' => 'Do you adapt your process based on project size or scope?',
'answer' => 'Yes. We keep the core methodology consistent, but the level of detail, documentation, sprint structure, and review cadence can be adjusted based on project size, complexity, timelines, and stakeholder involvement.',
),
array(
'question' => 'How do you manage communication during the project?',
'answer' => 'Communication is handled through scheduled reviews, milestone discussions, and ongoing status updates. We focus on keeping expectations clear, surfacing blockers early, and making progress easy to understand.',
),
array(
'question' => 'Do clients get to review work during the process?',
'answer' => 'Yes. We build review points into the workflow so clients can validate direction, provide feedback, and stay aligned with progress before major stages are completed.',
),
array(
'question' => 'How do you handle testing and quality assurance?',
'answer' => 'Testing is part of the delivery process, not a final afterthought. We validate functionality, usability, responsiveness, and release readiness before launch so quality issues are identified earlier and handled with structure.',
),
array(
'question' => 'Do you provide support after launch?',
'answer' => 'Yes. We can provide post-launch support, maintenance, optimization, and enhancement planning so the solution can continue improving after the initial release.',
),
array(
'question' => 'Can you work in milestones or ongoing retainers?',
'answer' => 'Yes. We can support milestone-based projects, phased delivery plans, dedicated engagement models, and ongoing retainers depending on the scope and how your team prefers to work.',
),
array(
'question' => 'How do you manage timelines and project visibility?',
'answer' => 'We use structured planning, clearly defined milestones, and transparent progress communication to keep timelines visible. That helps stakeholders understand what is in motion, what is coming next, and where approvals are needed.',
),
),
'ctaTitle' => 'Want a Reliable Team with a Clear Delivery Process?',
'ctaText' => 'Let us discuss your project goals, platform needs, app ideas, redesigns, integrations, or long-term support requirements and shape the right delivery plan for your business.',
'ctaHighlights' => array(
'Strategy-first consultation',
'Clear scope and roadmap guidance',
'Support for builds, redesigns, and long-term delivery',
),
'ctaNextSteps' => array(
array(
'title' => 'Discuss your goals',
'copy' => 'Share business priorities, platform needs, timelines, and delivery expectations with our team.',
),
array(
'title' => 'Review the right approach',
'copy' => 'Get guidance on scope, workflow, milestones, and the most suitable engagement model.',
),
array(
'title' => 'Move into planning',
'copy' => 'Leave with clearer next steps for discovery, execution, and long-term delivery support.',
),
),
);
return $data;
}
}
if ( ! function_exists( 'ethnic_our_process_page_heading' ) ) {
function ethnic_our_process_page_heading( $eyebrow, $title, $copy = '' ) {
ob_start();
?>
<div class="ethnic-process-heading">
<?php if ( $eyebrow ) : ?>
<p class="ethnic-process-heading__eyebrow"><?php echo esc_html( $eyebrow ); ?></p>
<?php endif; ?>
<h2 class="ethnic-process-heading__title"><?php echo esc_html( $title ); ?></h2>
<?php if ( $copy ) : ?>
<p class="ethnic-process-heading__copy"><?php echo esc_html( $copy ); ?></p>
<?php endif; ?>
</div>
<?php
return ob_get_clean();
}
}
if ( ! function_exists( 'ethnic_our_process_page_icon' ) ) {
function ethnic_our_process_page_icon( $icon ) {
ob_start();
switch ( $icon ) {
case 'planning':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<rect x="4" y="5" width="16" height="15" rx="2" />
<path d="M8 3.8v2.4" />
<path d="M16 3.8v2.4" />
<path d="M4 9.5h16" />
<path d="M8 14h3" />
<path d="M8 17h6" />
</svg>
<?php
break;
case 'agile':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M8 7h8l-2.4-2.4" />
<path d="M16 17H8l2.4 2.4" />
<path d="M16 7a5 5 0 0 1 0 10" />
<path d="M8 17a5 5 0 0 1 0-10" />
</svg>
<?php
break;
case 'delivery':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M4 12.5V7a2 2 0 0 1 2-2h7" />
<path d="M20 11.5V17a2 2 0 0 1-2 2h-7" />
<path d="M10 7h8v8" />
<path d="M9 15l2 2 6-6" />
</svg>
<?php
break;
case 'support':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M7.5 18.2a3 3 0 0 1-3-3v-3.4a7.5 7.5 0 1 1 15 0v3.4a3 3 0 0 1-3 3" />
<path d="M7.5 17.8v1.2A2 2 0 0 0 9.5 21h5" />
<rect x="17" y="10.8" width="2.5" height="5.8" rx="1.1" />
<rect x="4.5" y="10.8" width="2.5" height="5.8" rx="1.1" />
</svg>
<?php
break;
case 'discovery':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<circle cx="11" cy="11" r="5.5" />
<path d="M16 16l4 4" />
</svg>
<?php
break;
case 'strategy':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<circle cx="12" cy="12" r="7" />
<circle cx="12" cy="12" r="2.3" />
<path d="M12 5v2" />
<path d="M19 12h-2" />
<path d="M12 19v-2" />
<path d="M5 12h2" />
</svg>
<?php
break;
case 'wireframe':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<rect x="4" y="5" width="16" height="14" rx="2" />
<path d="M4 10h16" />
<path d="M10 10v9" />
<path d="M7 7.5h2" />
</svg>
<?php
break;
case 'design':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M4 17.5L15.5 6 18 8.5 6.5 20H4v-2.5z" />
<path d="M13 8.5l2.5 2.5" />
<path d="M14 4h6v6" />
</svg>
<?php
break;
case 'development':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M9 8l-4 4 4 4" />
<path d="M15 8l4 4-4 4" />
<path d="M13 5l-2 14" />
</svg>
<?php
break;
case 'qa':
?>
<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 12.2l1.8 1.8 3.8-4" />
</svg>
<?php
break;
case 'launch':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M14.5 4.5c2.5 0 4.5 2 4.5 4.5 0 4.8-4.2 8.7-9 9 .3-4.8 4.2-9 9-9z" />
<path d="M10 14l-4 4" />
<path d="M8 10l-3 1 1 3" />
<path d="M14 7l3 3" />
</svg>
<?php
break;
case 'optimize':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M5 16l4-4 3 3 6-6" />
<path d="M14 9h4v4" />
<path d="M5 20h14" />
</svg>
<?php
break;
case 'workshop':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<circle cx="8" cy="9" r="2.3" />
<circle cx="16" cy="9" r="2.3" />
<path d="M4.5 18c.6-2.2 2.2-3.5 4.5-3.5S12.9 15.8 13.5 18" />
<path d="M10.5 18c.5-1.9 1.9-3 4-3s3.5 1.1 4 3" />
</svg>
<?php
break;
case 'milestone':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M7 4v16" />
<path d="M7 5h10l-2.2 3 2.2 3H7" />
</svg>
<?php
break;
case 'feedback':
case 'communication':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M5 6.5h14a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H10l-5 3v-3H5a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2z" />
<path d="M8 10h8" />
<path d="M8 13h5" />
</svg>
<?php
break;
case 'updates':
case 'business':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M5 19V9" />
<path d="M12 19V5" />
<path d="M19 19v-7" />
<path d="M3 19h18" />
</svg>
<?php
break;
case 'partnership':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M8 9.5l2.2 2.2a2.5 2.5 0 0 0 3.5 0L16 9.5" />
<path d="M6 7l3.2 3.2" />
<path d="M18 7l-3.2 3.2" />
<path d="M4.5 9.5l2.7 7h9.6l2.7-7" />
</svg>
<?php
break;
case 'requirements':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M8 4.5h8l3 3v11a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-12a2 2 0 0 1 2-2z" />
<path d="M16 4.5v3h3" />
<path d="M9 11h6" />
<path d="M9 14h6" />
</svg>
<?php
break;
case 'recommendation':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<circle cx="12" cy="12" r="7" />
<path d="M12 8.5v3.8l2.6 1.6" />
<path d="M12 3v2" />
<path d="M21 12h-2" />
</svg>
<?php
break;
case 'mockup':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<rect x="4" y="5" width="16" height="11" rx="2" />
<path d="M10 19h4" />
<path d="M8 16v3" />
<path d="M16 16v3" />
<path d="M7 9h10" />
</svg>
<?php
break;
case 'sprint':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<rect x="4" y="6" width="6" height="5" rx="1.3" />
<rect x="14" y="6" width="6" height="5" rx="1.3" />
<rect x="4" y="14" width="16" height="5" rx="1.3" />
</svg>
<?php
break;
case 'report':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M8 4.5h8l3 3v11a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-12a2 2 0 0 1 2-2z" />
<path d="M16 4.5v3h3" />
<path d="M9 13.2l1.8 1.8 4.2-4.5" />
</svg>
<?php
break;
case 'deployment':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M8.2 17.5h8a3.5 3.5 0 0 0 .5-7 5 5 0 0 0-9.6 1.4A3 3 0 0 0 8.2 17.5z" />
<path d="M12 8.5V14" />
<path d="M10 12l2-2 2 2" />
</svg>
<?php
break;
case 'insights':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M9 17.5h6" />
<path d="M10 20h4" />
<path d="M8.5 13.5A5.5 5.5 0 1 1 17 9c0 1.9-.8 3.1-1.8 4.3-.7.9-1.2 1.6-1.2 2.7h-4c0-1.1-.5-1.8-1.2-2.7C7.8 12.1 7 10.9 7 9" />
</svg>
<?php
break;
case 'scalability':
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<rect x="4" y="4" width="6" height="6" rx="1.2" />
<rect x="14" y="4" width="6" height="6" rx="1.2" />
<rect x="9" y="14" width="6" height="6" rx="1.2" />
<path d="M10 7h4" />
<path d="M12 10v4" />
</svg>
<?php
break;
default:
?>
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<circle cx="12" cy="12" r="9" />
<path d="M8.5 12.2l2.2 2.2 4.8-5" />
</svg>
<?php
break;
}
return ob_get_clean();
}
}
if ( ! function_exists( 'ethnic_our_process_page_workflow_visual' ) ) {
function ethnic_our_process_page_workflow_visual() {
$data = ethnic_our_process_page_data();
$steps = array_slice( (array) $data['processSteps'], 0, 5 );
ob_start();
?>
<div class="ethnic-process-visual" aria-hidden="true">
<div class="ethnic-process-visual__frame">
<div class="ethnic-process-visual__header">
<span class="ethnic-process-visual__pill">Project Workflow</span>
<strong>Structured delivery from kickoff to support</strong>
</div>
<div class="ethnic-process-visual__roadmap">
<?php foreach ( $steps as $index => $step ) : ?>
<div class="ethnic-process-visual__roadmap-step<?php echo 0 === $index ? ' is-active' : ''; ?>">
<span><?php echo esc_html( sprintf( '%02d', $index + 1 ) ); ?></span>
<strong><?php echo esc_html( $step['title'] ); ?></strong>
</div>
<?php endforeach; ?>
</div>
<div class="ethnic-process-visual__panels">
<div class="ethnic-process-visual__panel">
<small>Planning</small>
<strong>Workshops, scope, priorities</strong>
</div>
<div class="ethnic-process-visual__panel">
<small>Execution</small>
<strong>Design, build, QA, release</strong>
</div>
<div class="ethnic-process-visual__panel">
<small>Visibility</small>
<strong>Milestones, feedback, updates</strong>
</div>
</div>
</div>
<div class="ethnic-process-visual__badge ethnic-process-visual__badge--primary">Milestone-based reviews</div>
<div class="ethnic-process-visual__badge ethnic-process-visual__badge--secondary">Launch and long-term support</div>
</div>
<?php
return ob_get_clean();
}
}
if ( ! function_exists( 'ethnic_our_process_page_render' ) ) {
function ethnic_our_process_page_render() {
$data = ethnic_our_process_page_data();
$consultation_url = ethnic_our_process_page_contact_url(
array(
'intent' => 'consultation',
'from' => 'our-process',
)
);
$project_url = ethnic_our_process_page_contact_url(
array(
'intent' => 'project',
'from' => 'our-process',
)
);
$team_url = ethnic_our_process_page_contact_url(
array(
'intent' => 'team',
'from' => 'our-process',
)
);
$quote_url = ethnic_our_process_page_contact_url(
array(
'intent' => 'quote',
'from' => 'our-process',
)
);
ob_start();
?>
<div class="ethnic-our-process-page">
<section class="ethnic-process-section ethnic-process-section--hero">
<div class="ethnic-process-shell ethnic-process-hero">
<div class="ethnic-process-hero__content">
<p class="ethnic-process-kicker">Structured Project Workflow</p>
<h1 class="ethnic-process-hero__title"><?php echo esc_html( $data['heroTitle'] ); ?></h1>
<p class="ethnic-process-hero__lead"><?php echo esc_html( $data['heroSubtitle'] ); ?></p>
<div class="ethnic-process-hero__actions">
<a class="ethnic-process-button ethnic-process-button--primary" href="<?php echo esc_url( $consultation_url ); ?>">Book a Free Consultation</a>
<a class="ethnic-process-button ethnic-process-button--secondary" href="<?php echo esc_url( $project_url ); ?>">Start Your Project</a>
</div>
<ul class="ethnic-process-hero__micro-points" aria-label="Trust-focused delivery highlights">
<?php foreach ( (array) $data['heroMicroPoints'] as $point ) : ?>
<li><?php echo esc_html( $point ); ?></li>
<?php endforeach; ?>
</ul>
</div>
<div class="ethnic-process-hero__visual">
<?php echo ethnic_our_process_page_workflow_visual(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
</div>
</section>
<section class="ethnic-process-section" id="process-overview">
<div class="ethnic-process-shell ethnic-process-shell--narrow">
<?php echo ethnic_our_process_page_heading( 'Process Overview', 'A delivery approach designed for clarity, quality, and lower execution risk.', 'Our process connects business understanding, design direction, technical delivery, and long-term support into one structured workflow.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<div class="ethnic-process-prose">
<?php foreach ( (array) $data['overview'] as $paragraph ) : ?>
<p><?php echo esc_html( $paragraph ); ?></p>
<?php endforeach; ?>
</div>
<div class="ethnic-process-card-grid ethnic-process-card-grid--highlights">
<?php foreach ( (array) $data['highlights'] as $highlight ) : ?>
<article class="ethnic-process-card ethnic-process-card--highlight">
<div class="ethnic-process-card__icon">
<?php echo ethnic_our_process_page_icon( $highlight['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<h3><?php echo esc_html( $highlight['title'] ); ?></h3>
<p><?php echo esc_html( $highlight['copy'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="ethnic-process-section" id="workflow">
<div class="ethnic-process-shell">
<?php echo ethnic_our_process_page_heading( 'Project Workflow', 'A clear design and development process from discovery to launch and beyond.', 'This section outlines our end-to-end software delivery approach so prospects can see how work moves from planning to dependable release support.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<div class="ethnic-process-workflow">
<div class="ethnic-process-workflow__summary">
<div class="ethnic-process-workflow__summary-card">
<p class="ethnic-process-workflow__label">Execution methodology</p>
<h3>Each stage builds confidence before the next one begins.</h3>
<p>We use a structured project execution methodology so strategy, design, engineering, QA, and launch decisions stay connected instead of happening in isolation.</p>
<ul class="ethnic-process-workflow__summary-points">
<li>Clear scope and priority alignment</li>
<li>Review checkpoints before major handoffs</li>
<li>Post-launch continuity for support and optimization</li>
</ul>
</div>
</div>
<ol class="ethnic-process-timeline">
<?php foreach ( (array) $data['processSteps'] as $index => $step ) : ?>
<li class="ethnic-process-step">
<span class="ethnic-process-step__node"><?php echo esc_html( sprintf( '%02d', $index + 1 ) ); ?></span>
<article class="ethnic-process-step__card">
<div class="ethnic-process-step__icon">
<?php echo ethnic_our_process_page_icon( $step['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<div class="ethnic-process-step__body">
<p class="ethnic-process-step__eyebrow">Step <?php echo esc_html( sprintf( '%02d', $index + 1 ) ); ?></p>
<h3><?php echo esc_html( $step['title'] ); ?></h3>
<p><?php echo esc_html( $step['copy'] ); ?></p>
</div>
</article>
</li>
<?php endforeach; ?>
</ol>
</div>
</div>
</section>
<section class="ethnic-process-section ethnic-process-section--contrast" id="collaboration">
<div class="ethnic-process-shell">
<?php echo ethnic_our_process_page_heading( 'Collaboration Model', 'A working style built around visibility, review, and shared momentum.', 'We stay closely aligned with clients through planning discussions, milestone reviews, iterative feedback, and communication rhythms that fit the project scope.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<div class="ethnic-process-two-column">
<div class="ethnic-process-two-column__content">
<h3>Clients stay involved without being buried in delivery noise.</h3>
<p>Our collaboration model is designed to keep decisions moving and stakeholders informed. That means planning sessions when context matters, milestone-based execution when approvals are needed, and flexible communication when scope evolves.</p>
<p>Whether the engagement is a fixed-scope build, phased rollout, team extension, or ongoing partnership, the goal is the same: clear progress, useful reviews, and a dependable client experience.</p>
<div class="ethnic-process-note">
<strong>Designed for clarity:</strong>
<span>reviewable milestones, visible execution, and communication that supports decisions instead of creating friction.</span>
</div>
</div>
<div class="ethnic-process-card-grid ethnic-process-card-grid--collaboration">
<?php foreach ( (array) $data['collaborationItems'] as $item ) : ?>
<article class="ethnic-process-card">
<div class="ethnic-process-card__icon">
<?php echo ethnic_our_process_page_icon( $item['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<h3><?php echo esc_html( $item['title'] ); ?></h3>
<p><?php echo esc_html( $item['copy'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
</div>
</div>
</section>
<section class="ethnic-process-section" id="deliverables">
<div class="ethnic-process-shell">
<?php echo ethnic_our_process_page_heading( 'Deliverables And Outputs', 'Tangible outputs that keep the project understandable at every stage.', 'Clients should know what they are receiving throughout the process. These deliverables help turn strategy, design, engineering, and QA work into visible business value.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<div class="ethnic-process-card-grid ethnic-process-card-grid--deliverables">
<?php foreach ( (array) $data['deliverables'] as $deliverable ) : ?>
<article class="ethnic-process-card ethnic-process-card--deliverable">
<div class="ethnic-process-card__icon">
<?php echo ethnic_our_process_page_icon( $deliverable['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<h3><?php echo esc_html( $deliverable['title'] ); ?></h3>
<p><?php echo esc_html( $deliverable['copy'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="ethnic-process-section" id="quality">
<div class="ethnic-process-shell">
<?php echo ethnic_our_process_page_heading( 'Quality And Communication', 'Trust is built through structured execution, testing discipline, and proactive communication.', 'Our delivery approach is shaped around clean implementation, validation before release, and long-term thinking beyond the initial launch.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<div class="ethnic-process-two-column ethnic-process-two-column--quality">
<div class="ethnic-process-two-column__content ethnic-process-two-column__content--quality">
<h3>We focus on delivery quality that holds up after launch, not just during demos.</h3>
<p>That means keeping workflows organized, validating functionality before release, and setting expectations clearly throughout the engagement. We try to remove ambiguity early so teams can make better decisions with less friction.</p>
<p>Whether the project is a fresh build, redesign, integration effort, or support engagement, we aim for maintainability, scalability, and business relevance rather than one-time output alone.</p>
<ul class="ethnic-process-checklist">
<li>Structured workflows and review checkpoints</li>
<li>Testing and validation before production release</li>
<li>Clear communication around scope, progress, and next steps</li>
<li>Long-term thinking for support, scalability, and improvement</li>
</ul>
</div>
<div class="ethnic-process-card-grid ethnic-process-card-grid--quality">
<?php foreach ( (array) $data['qualityPoints'] as $point ) : ?>
<article class="ethnic-process-card ethnic-process-card--quality">
<div class="ethnic-process-card__icon">
<?php echo ethnic_our_process_page_icon( $point['icon'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<h3><?php echo esc_html( $point['title'] ); ?></h3>
<p><?php echo esc_html( $point['copy'] ); ?></p>
</article>
<?php endforeach; ?>
</div>
</div>
</div>
</section>
<section class="ethnic-process-section ethnic-process-section--faq" id="faq">
<div class="ethnic-process-shell ethnic-process-shell--narrow">
<?php echo ethnic_our_process_page_heading( 'FAQs', 'Answers to common questions about our process and delivery model.', 'These FAQs help clarify what it is like to work with us, how reviews happen, and how our team supports projects after launch.' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<div class="ethnic-process-faq">
<?php foreach ( (array) $data['faqs'] as $index => $faq ) : ?>
<details class="ethnic-process-faq__item" <?php echo 0 === $index ? 'open' : ''; ?>>
<summary>
<span><?php echo esc_html( $faq['question'] ); ?></span>
<span class="ethnic-process-faq__marker" aria-hidden="true"></span>
</summary>
<div class="ethnic-process-faq__answer">
<p><?php echo esc_html( $faq['answer'] ); ?></p>
</div>
</details>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="ethnic-process-section ethnic-process-section--cta">
<div class="ethnic-process-shell">
<div class="ethnic-process-cta">
<div class="ethnic-process-cta__copy">
<div class="ethnic-process-cta__intro">
<p class="ethnic-process-kicker ethnic-process-kicker--light">Ready To Talk</p>
<p class="ethnic-process-cta__intro-note">Structured planning for new builds, redesigns, integrations, and long-term delivery support.</p>
</div>
<h2><?php echo esc_html( $data['ctaTitle'] ); ?></h2>
<p class="ethnic-process-cta__lead"><?php echo esc_html( $data['ctaText'] ); ?></p>
<div class="ethnic-process-hero__actions">
<a class="ethnic-process-button ethnic-process-button--primary" href="<?php echo esc_url( $team_url ); ?>">Talk to Our Team</a>
<a class="ethnic-process-button ethnic-process-button--secondary" href="<?php echo esc_url( $quote_url ); ?>">Get a Free Quote</a>
</div>
<div class="ethnic-process-cta__supporting">
<p class="ethnic-process-cta__supporting-label">You will get clarity on:</p>
<ul class="ethnic-process-cta__highlights" aria-label="CTA trust highlights">
<?php foreach ( (array) $data['ctaHighlights'] as $highlight ) : ?>
<li><?php echo esc_html( $highlight ); ?></li>
<?php endforeach; ?>
</ul>
</div>
</div>
<aside class="ethnic-process-cta__panel" aria-label="What happens next">
<div class="ethnic-process-cta__panel-header">
<p class="ethnic-process-cta__panel-eyebrow">What Happens Next</p>
<h3 class="ethnic-process-cta__panel-title">A clear first step into planning</h3>
</div>
<ol class="ethnic-process-cta__steps">
<?php foreach ( (array) $data['ctaNextSteps'] as $index => $step ) : ?>
<li class="ethnic-process-cta__step">
<span class="ethnic-process-cta__step-number"><?php echo esc_html( sprintf( '%02d', $index + 1 ) ); ?></span>
<div class="ethnic-process-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-process-cta__panel-note"><strong>Outcome:</strong> Milestone-ready planning, transparent delivery, and long-term support thinking.</div>
</aside>
</div>
</div>
</section>
</div>
<?php
return ob_get_clean();
}
}
if ( ! function_exists( 'ethnic_our_process_page_styles' ) ) {
function ethnic_our_process_page_styles() {
$page = ethnic_our_process_page_get_target_page();
$page_id = $page instanceof WP_Post ? (int) $page->ID : 0;
$selector = $page_id ? '.page-id-' . $page_id : 'body';
$selectors = $selector . ' #page-title.page-title-block.custom-page-title { display: none; }' . "\n";
$selectors .= $selector . ' .fullwidth-content > .ethnic-our-process-page { padding-bottom: clamp(72px, 8vw, 120px); }' . "\n";
$selectors .= $selector . ' .block-content > .container { width: 100%; max-width: none; padding-left: 0; padding-right: 0; }' . "\n";
$selectors .= $selector . ' .block-content > .container > .panel.row { margin-left: 0; margin-right: 0; }' . "\n";
$selectors .= $selector . ' .block-content > .container > .panel > .panel-center { width: 100%; padding-left: 0; padding-right: 0; }' . "\n";
$selectors .= $selector . ' .entry-content.post-content { margin-bottom: 0; }' . "\n";
return $selectors . <<<'CSS'
.ethnic-our-process-page {
--ethnic-process-text: #0f172a;
--ethnic-process-muted: #5d6d83;
--ethnic-process-border: rgba(15, 23, 42, 0.1);
--ethnic-process-surface: rgba(255, 255, 255, 0.94);
--ethnic-process-surface-strong: #ffffff;
--ethnic-process-surface-soft: rgba(246, 249, 255, 0.96);
--ethnic-process-surface-contrast: #0b1730;
--ethnic-process-shadow: 0 22px 55px rgba(15, 23, 42, 0.08);
--ethnic-process-shadow-hover: 0 28px 70px rgba(15, 23, 42, 0.12);
--ethnic-process-accent: #2f6bff;
--ethnic-process-accent-soft: rgba(47, 107, 255, 0.12);
--ethnic-process-lime: #e7ff89;
color: var(--ethnic-process-text);
overflow-x: clip;
}
.ethnic-our-process-page,
.ethnic-our-process-page *,
.ethnic-our-process-page *::before,
.ethnic-our-process-page *::after {
box-sizing: border-box;
}
.ethnic-process-shell {
width: min(1240px, calc(100% - (var(--ethnic-process-shell-padding, 36px) * 2)));
margin: 0 auto;
}
.ethnic-process-shell--narrow {
width: min(980px, calc(100% - (var(--ethnic-process-shell-padding, 36px) * 2)));
}
.ethnic-process-section {
position: relative;
scroll-margin-top: 110px;
}
.ethnic-process-section + .ethnic-process-section {
margin-top: clamp(64px, 8vw, 108px);
}
.ethnic-process-section--hero {
overflow: hidden;
background:
linear-gradient(180deg, rgba(8, 20, 39, 0.82) 0%, rgba(10, 22, 44, 0.8) 55%, rgba(11, 23, 48, 0.92) 100%);
}
.ethnic-process-section--hero::before {
content: "";
position: absolute;
inset: 0;
background:
radial-gradient(circle at 14% 20%, rgba(47, 107, 255, 0.24), transparent 30%),
radial-gradient(circle at 82% 18%, rgba(231, 255, 137, 0.16), transparent 20%),
linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px),
linear-gradient(0deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
background-size: auto, auto, 44px 44px, 44px 44px;
mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.9), transparent 92%);
pointer-events: none;
}
.ethnic-process-hero {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(360px, 460px);
gap: clamp(32px, 4vw, 64px);
align-items: center;
min-height: clamp(560px, 68vw, 760px);
padding: clamp(78px, 8vw, 130px) 0;
}
.ethnic-process-kicker,
.ethnic-process-heading__eyebrow {
display: inline-flex;
align-items: center;
gap: 10px;
width: fit-content;
min-height: 32px;
margin: 0 0 16px;
padding: 8px 16px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.12);
border: 1px solid rgba(255, 255, 255, 0.16);
color: #ffffff;
font-size: 12px;
font-weight: 700;
letter-spacing: 0.14em;
line-height: 1;
text-transform: uppercase;
backdrop-filter: blur(10px);
}
.ethnic-process-kicker::before,
.ethnic-process-heading__eyebrow::before {
content: "";
flex: 0 0 auto;
width: 8px;
height: 8px;
border-radius: 50%;
background: currentColor;
box-shadow: 0 0 0 4px color-mix(in srgb, currentColor 18%, transparent);
}
.ethnic-process-kicker {
padding: 10px 18px;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.08));
border-color: rgba(255, 255, 255, 0.22);
box-shadow: 0 16px 34px rgba(5, 14, 28, 0.18);
color: rgba(255, 255, 255, 0.94) !important;
-webkit-text-fill-color: rgba(255, 255, 255, 0.94);
text-shadow: 0 1px 10px rgba(5, 14, 28, 0.18);
}
.ethnic-process-kicker--light,
.ethnic-process-heading__eyebrow {
background: var(--ethnic-process-accent-soft);
border-color: rgba(47, 107, 255, 0.16);
color: var(--ethnic-process-accent) !important;
-webkit-text-fill-color: var(--ethnic-process-accent);
text-shadow: none;
}
.ethnic-process-heading {
max-width: 760px;
margin-bottom: clamp(26px, 4vw, 38px);
}
.ethnic-process-heading__title,
.ethnic-process-hero__title,
.ethnic-process-cta h2 {
margin: 0;
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-weight: 700;
letter-spacing: -0.05em;
text-wrap: balance;
}
.ethnic-process-hero__title {
max-width: 9ch;
color: #ffffff !important;
-webkit-text-fill-color: #ffffff;
font-size: clamp(40px, 5vw, 70px);
line-height: 0.98;
}
.ethnic-process-heading__title,
.ethnic-process-cta h2 {
color: var(--ethnic-process-text);
font-size: clamp(30px, 2.8vw, 42px);
line-height: 1.06;
}
.ethnic-process-heading__copy,
.ethnic-process-prose p,
.ethnic-process-card p,
.ethnic-process-step__body p,
.ethnic-process-two-column__content p,
.ethnic-process-faq__answer p,
.ethnic-process-cta p {
color: var(--ethnic-process-muted);
font-size: 16px;
line-height: 1.75;
}
.ethnic-process-hero__lead {
max-width: 60ch;
margin: 18px 0 0;
color: rgba(255, 255, 255, 0.9);
font-size: clamp(17px, 1.4vw, 20px);
line-height: 1.78;
}
.ethnic-process-hero__actions {
display: flex;
flex-wrap: wrap;
gap: 14px;
margin-top: 28px;
}
.ethnic-process-button {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 52px;
padding: 14px 24px;
border-radius: 999px;
border: 1px solid transparent;
font-size: 15px;
font-weight: 700;
line-height: 1;
text-decoration: none;
transition: transform 0.25s ease, box-shadow 0.25s ease, background-color 0.25s ease, border-color 0.25s ease, color 0.25s ease;
}
.ethnic-process-button:hover,
.ethnic-process-button:focus-visible {
transform: translateY(-1px);
text-decoration: none;
}
.ethnic-process-button--primary {
background: var(--ethnic-process-lime);
color: #0b1730 !important;
box-shadow: 0 18px 38px rgba(5, 14, 28, 0.24);
}
.ethnic-process-button--primary:hover,
.ethnic-process-button--primary:focus-visible {
background: #f1ffb7;
color: #0b1730 !important;
box-shadow: 0 22px 44px rgba(5, 14, 28, 0.28);
}
.ethnic-process-button--secondary {
background: rgba(255, 255, 255, 0.08);
border-color: rgba(255, 255, 255, 0.18);
color: #ffffff !important;
}
.ethnic-process-section--cta .ethnic-process-button--secondary {
background: rgba(15, 23, 42, 0.04);
border-color: rgba(15, 23, 42, 0.14);
color: var(--ethnic-process-text) !important;
}
.ethnic-process-hero__micro-points,
.ethnic-process-workflow__summary-points,
.ethnic-process-checklist,
.ethnic-process-cta__highlights {
display: grid;
gap: 12px;
padding: 0;
margin: 26px 0 0;
list-style: none;
}
.ethnic-process-hero__micro-points {
grid-template-columns: repeat(3, minmax(0, 1fr));
max-width: 780px;
}
.ethnic-process-hero__micro-points li,
.ethnic-process-workflow__summary-points li,
.ethnic-process-checklist li,
.ethnic-process-cta__highlights li {
position: relative;
padding-left: 22px;
}
.ethnic-process-hero__micro-points li {
padding: 16px 18px 16px 42px;
border-radius: 22px;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.12);
color: rgba(255, 255, 255, 0.86);
font-size: 15px;
font-weight: 600;
line-height: 1.45;
}
.ethnic-process-hero__micro-points li::before,
.ethnic-process-workflow__summary-points li::before,
.ethnic-process-checklist li::before,
.ethnic-process-cta__highlights li::before {
content: "";
position: absolute;
left: 0;
top: 0.4em;
width: 10px;
height: 10px;
border-radius: 50%;
background: var(--ethnic-process-lime);
box-shadow: 0 0 0 5px rgba(231, 255, 137, 0.16);
}
.ethnic-process-hero__micro-points li::before {
left: 20px;
top: 20px;
}
.ethnic-process-hero__visual {
position: relative;
}
.ethnic-process-visual {
position: relative;
}
.ethnic-process-visual__frame {
position: relative;
padding: 26px;
border-radius: 34px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.08)),
rgba(12, 23, 40, 0.72);
border: 1px solid rgba(255, 255, 255, 0.12);
box-shadow: 0 26px 70px rgba(5, 14, 28, 0.3);
backdrop-filter: blur(18px);
}
.ethnic-process-visual__header {
display: grid;
gap: 10px;
margin-bottom: 22px;
}
.ethnic-process-visual__pill {
display: inline-flex;
width: fit-content;
padding: 6px 12px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.08);
color: rgba(255, 255, 255, 0.8);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
}
.ethnic-process-visual__header strong {
color: #ffffff;
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-size: 24px;
font-weight: 700;
line-height: 1.2;
}
.ethnic-process-visual__roadmap {
display: grid;
gap: 14px;
}
.ethnic-process-visual__roadmap-step {
position: relative;
display: grid;
grid-template-columns: 44px 1fr;
gap: 14px;
align-items: center;
padding: 14px 16px;
border-radius: 22px;
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.08);
}
.ethnic-process-visual__roadmap-step.is-active {
background: rgba(47, 107, 255, 0.16);
border-color: rgba(47, 107, 255, 0.3);
}
.ethnic-process-visual__roadmap-step span {
display: inline-grid;
place-items: center;
width: 44px;
height: 44px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.14);
color: #ffffff;
font-size: 13px;
font-weight: 700;
}
.ethnic-process-visual__roadmap-step strong {
color: rgba(255, 255, 255, 0.92);
font-size: 14px;
font-weight: 600;
line-height: 1.45;
}
.ethnic-process-visual__panels {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
margin-top: 18px;
}
.ethnic-process-visual__panel {
padding: 14px;
border-radius: 18px;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.08);
}
.ethnic-process-visual__panel small {
display: block;
margin-bottom: 8px;
color: rgba(255, 255, 255, 0.62);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
}
.ethnic-process-visual__panel strong {
color: rgba(255, 255, 255, 0.88);
font-size: 13px;
font-weight: 600;
line-height: 1.5;
}
.ethnic-process-visual__badge {
position: absolute;
display: inline-flex;
align-items: center;
min-height: 44px;
padding: 10px 16px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.96);
box-shadow: 0 18px 45px rgba(5, 14, 28, 0.2);
color: var(--ethnic-process-text);
font-size: 13px;
font-weight: 700;
}
.ethnic-process-visual__badge--primary {
left: -18px;
bottom: 86px;
}
.ethnic-process-visual__badge--secondary {
right: -10px;
bottom: -18px;
background: var(--ethnic-process-lime);
}
.ethnic-process-prose {
display: grid;
gap: 18px;
}
.ethnic-process-card-grid {
display: grid;
gap: 22px;
}
.ethnic-process-card-grid--highlights,
.ethnic-process-card-grid--deliverables {
grid-template-columns: repeat(4, minmax(0, 1fr));
margin-top: clamp(30px, 4vw, 42px);
}
.ethnic-process-card-grid--collaboration,
.ethnic-process-card-grid--quality {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ethnic-process-card {
position: relative;
padding: 24px;
border-radius: 28px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.88), rgba(248, 250, 255, 0.96)),
var(--ethnic-process-surface);
border: 1px solid var(--ethnic-process-border);
box-shadow: var(--ethnic-process-shadow);
transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.ethnic-process-card:hover {
transform: translateY(-3px);
box-shadow: var(--ethnic-process-shadow-hover);
}
.ethnic-process-card__icon,
.ethnic-process-step__icon {
display: inline-grid;
place-items: center;
width: 54px;
height: 54px;
margin-bottom: 18px;
border-radius: 18px;
background: var(--ethnic-process-accent-soft);
color: var(--ethnic-process-accent);
}
.ethnic-process-step__icon {
margin-bottom: 0;
}
.ethnic-process-card__icon svg,
.ethnic-process-step__icon svg {
width: 26px;
height: 26px;
fill: none;
stroke: currentColor;
stroke-width: 1.8;
stroke-linecap: round;
stroke-linejoin: round;
}
.ethnic-process-card h3,
.ethnic-process-step__body h3,
.ethnic-process-two-column__content h3 {
margin: 0;
color: var(--ethnic-process-text);
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-size: 22px;
font-weight: 700;
line-height: 1.25;
}
.ethnic-process-card h3 {
font-size: 20px;
}
.ethnic-process-card p,
.ethnic-process-step__body p {
margin: 12px 0 0;
}
.ethnic-process-workflow {
display: grid;
grid-template-columns: minmax(0, 0.76fr) minmax(0, 1.24fr);
gap: clamp(24px, 4vw, 56px);
align-items: start;
}
.ethnic-process-workflow__summary {
position: relative;
}
.ethnic-process-workflow__summary-card {
position: sticky;
top: 120px;
padding: 28px;
border-radius: 30px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(245, 248, 255, 0.98)),
var(--ethnic-process-surface-strong);
border: 1px solid var(--ethnic-process-border);
box-shadow: var(--ethnic-process-shadow);
}
.ethnic-process-workflow__label {
margin: 0 0 14px;
color: var(--ethnic-process-accent);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
}
.ethnic-process-workflow__summary-card p {
margin: 14px 0 0;
}
.ethnic-process-timeline {
position: relative;
padding: 0 0 0 34px;
margin: 0;
list-style: none;
}
.ethnic-process-timeline::before {
content: "";
position: absolute;
left: 16px;
top: 18px;
bottom: 18px;
width: 2px;
background: linear-gradient(180deg, rgba(47, 107, 255, 0.34), rgba(47, 107, 255, 0.04));
}
.ethnic-process-step {
position: relative;
}
.ethnic-process-step + .ethnic-process-step {
margin-top: 22px;
}
.ethnic-process-step__node {
position: absolute;
left: -34px;
top: 24px;
display: inline-grid;
place-items: center;
width: 34px;
height: 34px;
border-radius: 50%;
background: var(--ethnic-process-surface-strong);
border: 1px solid rgba(47, 107, 255, 0.18);
box-shadow: 0 12px 28px rgba(47, 107, 255, 0.12);
color: var(--ethnic-process-accent);
font-size: 12px;
font-weight: 700;
}
.ethnic-process-step__card {
display: grid;
grid-template-columns: auto 1fr;
gap: 20px;
padding: 24px;
border-radius: 28px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(248, 251, 255, 0.98)),
var(--ethnic-process-surface-strong);
border: 1px solid var(--ethnic-process-border);
box-shadow: var(--ethnic-process-shadow);
}
.ethnic-process-step__eyebrow {
margin: 0 0 8px;
color: var(--ethnic-process-accent);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.1em;
line-height: 1;
text-transform: uppercase;
}
.ethnic-process-section--contrast {
padding: clamp(56px, 6vw, 82px) 0;
border-radius: 40px;
background:
linear-gradient(180deg, rgba(244, 248, 255, 0.96), rgba(249, 251, 255, 0.98)),
var(--ethnic-process-surface-soft);
}
.ethnic-process-two-column {
display: grid;
grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
gap: clamp(24px, 4vw, 56px);
align-items: start;
}
.ethnic-process-two-column__content p {
margin: 16px 0 0;
}
.ethnic-process-note {
display: grid;
gap: 10px;
margin-top: 24px;
padding: 22px;
border-radius: 26px;
background: rgba(47, 107, 255, 0.08);
border: 1px solid rgba(47, 107, 255, 0.12);
}
.ethnic-process-note strong,
.ethnic-process-note span {
color: var(--ethnic-process-text);
font-size: 15px;
line-height: 1.65;
}
.ethnic-process-card-grid--quality .ethnic-process-card,
.ethnic-process-card-grid--collaboration .ethnic-process-card {
min-height: 100%;
}
.ethnic-process-checklist {
margin-top: 24px;
}
.ethnic-process-checklist li,
.ethnic-process-workflow__summary-points li {
color: var(--ethnic-process-text);
font-size: 15px;
line-height: 1.65;
}
.ethnic-process-faq {
display: grid;
gap: 16px;
}
.ethnic-process-faq__item,
.ethnic-process-cta {
border-radius: 30px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(247, 250, 255, 0.98)),
var(--ethnic-process-surface-strong);
border: 1px solid var(--ethnic-process-border);
box-shadow: var(--ethnic-process-shadow);
}
.ethnic-process-faq__item summary {
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
padding: 24px 28px;
cursor: pointer;
list-style: none;
color: var(--ethnic-process-text);
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-size: 19px;
font-weight: 700;
line-height: 1.4;
}
.ethnic-process-faq__item summary::-webkit-details-marker {
display: none;
}
.ethnic-process-faq__item[open] summary {
padding-bottom: 14px;
}
.ethnic-process-faq__marker {
position: relative;
flex: 0 0 auto;
width: 34px;
height: 34px;
border-radius: 50%;
background: rgba(47, 107, 255, 0.08);
color: var(--ethnic-process-accent);
}
.ethnic-process-faq__marker::before,
.ethnic-process-faq__marker::after {
content: "";
position: absolute;
left: 50%;
top: 50%;
width: 14px;
height: 2px;
background: currentColor;
transform: translate(-50%, -50%);
transition: transform 0.2s ease;
}
.ethnic-process-faq__marker::after {
transform: translate(-50%, -50%) rotate(90deg);
}
.ethnic-process-faq__item[open] .ethnic-process-faq__marker::after {
transform: translate(-50%, -50%) rotate(0deg);
}
.ethnic-process-faq__answer {
padding: 0 28px 24px;
}
.ethnic-process-faq__answer p {
margin: 0;
}
.ethnic-process-section--cta {
padding-top: clamp(16px, 2vw, 24px);
}
.ethnic-process-cta {
position: relative;
display: grid;
grid-template-columns: minmax(0, 1.08fr) minmax(340px, 0.92fr);
gap: clamp(26px, 4vw, 54px);
align-items: stretch;
padding: clamp(34px, 4vw, 52px);
text-align: left;
overflow: hidden;
isolation: isolate;
background:
radial-gradient(circle at 12% 18%, rgba(47, 107, 255, 0.2), transparent 25%),
radial-gradient(circle at 84% 12%, rgba(231, 255, 137, 0.34), transparent 20%),
radial-gradient(circle at 78% 72%, rgba(47, 107, 255, 0.08), transparent 24%),
linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(246, 249, 255, 1) 50%, rgba(238, 245, 255, 0.98));
border: 1px solid rgba(117, 144, 190, 0.2);
box-shadow:
0 26px 80px rgba(15, 23, 42, 0.1),
inset 0 1px 0 rgba(255, 255, 255, 0.75);
}
.ethnic-process-cta::before {
content: "";
position: absolute;
inset: 0;
background:
linear-gradient(90deg, rgba(47, 107, 255, 0.05) 1px, transparent 1px),
linear-gradient(0deg, rgba(47, 107, 255, 0.05) 1px, transparent 1px);
background-size: 28px 28px;
mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.32), transparent 76%);
pointer-events: none;
z-index: -1;
}
.ethnic-process-cta::after {
content: "";
position: absolute;
inset: 20px;
border-radius: 28px;
border: 1px solid rgba(255, 255, 255, 0.58);
opacity: 0.7;
pointer-events: none;
z-index: -1;
}
.ethnic-process-cta__copy {
max-width: 100%;
position: relative;
display: grid;
align-content: center;
}
.ethnic-process-cta__intro {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 12px 14px;
margin-bottom: 4px;
}
.ethnic-process-cta .ethnic-process-kicker--light {
margin-bottom: 0;
background: rgba(255, 255, 255, 0.9);
border-color: rgba(47, 107, 255, 0.18);
color: #2558dc !important;
-webkit-text-fill-color: #2558dc;
box-shadow: 0 14px 36px rgba(47, 107, 255, 0.14);
backdrop-filter: blur(14px);
}
.ethnic-process-cta__intro-note {
max-width: 38ch;
margin: 0;
color: rgba(15, 23, 42, 0.7);
font-size: 14px;
font-weight: 600;
line-height: 1.55;
}
.ethnic-process-cta h2 {
max-width: 10ch;
margin-right: 0;
font-size: clamp(36px, 4.6vw, 62px);
line-height: 0.98;
letter-spacing: -0.06em;
}
.ethnic-process-cta__lead,
.ethnic-process-cta__step-copy p {
max-width: 58ch;
margin: 18px 0 0;
}
.ethnic-process-cta__lead {
color: rgba(15, 23, 42, 0.72);
font-size: clamp(16px, 1.35vw, 18px);
line-height: 1.82;
}
.ethnic-process-cta .ethnic-process-hero__actions {
position: relative;
gap: 16px;
margin-top: 30px;
justify-content: flex-start;
}
.ethnic-process-section--cta .ethnic-process-button {
min-height: 56px;
padding-inline: 26px;
}
.ethnic-process-section--cta .ethnic-process-button--primary {
box-shadow:
0 22px 42px rgba(163, 193, 34, 0.28),
0 16px 32px rgba(5, 14, 28, 0.16);
}
.ethnic-process-section--cta .ethnic-process-button--secondary {
background: rgba(255, 255, 255, 0.7);
border-color: rgba(15, 23, 42, 0.12);
color: var(--ethnic-process-text) !important;
box-shadow: 0 14px 32px rgba(15, 23, 42, 0.08);
backdrop-filter: blur(14px);
}
.ethnic-process-section--cta .ethnic-process-button--secondary:hover,
.ethnic-process-section--cta .ethnic-process-button--secondary:focus-visible {
background: rgba(255, 255, 255, 0.88);
border-color: rgba(15, 23, 42, 0.18);
box-shadow: 0 18px 40px rgba(15, 23, 42, 0.12);
}
.ethnic-process-cta__supporting {
margin-top: 28px;
}
.ethnic-process-cta__supporting-label {
margin: 0 0 14px;
color: rgba(15, 23, 42, 0.58);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.14em;
line-height: 1;
text-transform: uppercase;
}
.ethnic-process-cta__highlights {
grid-template-columns: repeat(3, minmax(0, 1fr));
margin-top: 0;
gap: 14px;
}
.ethnic-process-cta__highlights li {
display: flex;
align-items: flex-start;
min-height: 100%;
padding: 16px 18px 16px 40px;
border-radius: 24px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(248, 251, 255, 0.76)),
rgba(255, 255, 255, 0.74);
border: 1px solid rgba(255, 255, 255, 0.72);
color: var(--ethnic-process-text);
font-size: 14px;
font-weight: 600;
line-height: 1.55;
box-shadow: 0 16px 34px rgba(15, 23, 42, 0.07);
backdrop-filter: blur(16px);
}
.ethnic-process-cta__highlights li::before {
left: 18px;
top: 20px;
background: var(--ethnic-process-accent);
box-shadow: 0 0 0 5px rgba(47, 107, 255, 0.14);
}
.ethnic-process-cta__panel {
position: relative;
display: flex;
flex-direction: column;
justify-content: space-between;
padding: 28px;
border-radius: 30px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.03)),
linear-gradient(180deg, #102240, #0f1d37 58%, #0b172e);
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow:
0 30px 70px rgba(15, 23, 42, 0.2),
inset 0 1px 0 rgba(255, 255, 255, 0.08);
}
.ethnic-process-cta__panel::before {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
background:
radial-gradient(circle at top right, rgba(47, 107, 255, 0.24), transparent 34%),
radial-gradient(circle at bottom left, rgba(231, 255, 137, 0.14), transparent 26%);
pointer-events: none;
}
.ethnic-process-cta__panel-header {
position: relative;
z-index: 1;
display: grid;
gap: 10px;
margin-bottom: 10px;
}
.ethnic-process-cta__panel-eyebrow {
display: inline-flex;
align-items: center;
gap: 10px;
width: fit-content;
margin: 0;
padding: 8px 14px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.12);
border: 1px solid rgba(255, 255, 255, 0.14);
color: rgba(255, 255, 255, 0.92) !important;
-webkit-text-fill-color: rgba(255, 255, 255, 0.92);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.14em;
line-height: 1;
text-transform: uppercase;
text-shadow: none;
}
.ethnic-process-cta__panel-eyebrow::before {
content: "";
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--ethnic-process-lime);
box-shadow: 0 0 0 5px rgba(231, 255, 137, 0.12);
}
.ethnic-process-cta__panel-title {
margin: 0;
color: #f8fbff !important;
-webkit-text-fill-color: #f8fbff;
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-size: clamp(22px, 2.3vw, 28px);
font-weight: 700;
letter-spacing: -0.04em;
line-height: 1.1;
text-shadow: 0 1px 18px rgba(5, 14, 28, 0.28);
}
.ethnic-process-cta__steps {
position: relative;
z-index: 1;
display: grid;
gap: 0;
padding: 0;
margin: 0;
list-style: none;
}
.ethnic-process-cta__step {
display: grid;
grid-template-columns: 52px 1fr;
gap: 16px;
padding: 18px 0;
align-items: start;
}
.ethnic-process-cta__step + .ethnic-process-cta__step {
border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.ethnic-process-cta__step-number {
display: inline-grid;
place-items: center;
width: 52px;
height: 52px;
border-radius: 18px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.06)),
rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.08);
color: #ffffff;
font-size: 13px;
font-weight: 700;
box-shadow: 0 16px 28px rgba(5, 14, 28, 0.18);
}
.ethnic-process-cta__step-copy strong {
display: block;
margin: 0;
color: #ffffff;
font-family: "Plus Jakarta Sans", "Figtree", sans-serif;
font-size: 18px;
font-weight: 700;
line-height: 1.35;
}
.ethnic-process-cta__step-copy p {
max-width: none;
margin: 8px 0 0;
color: rgba(255, 255, 255, 0.72);
font-size: 14px;
line-height: 1.7;
}
.ethnic-process-cta__panel-note {
position: relative;
z-index: 1;
margin-top: 20px;
padding: 16px 18px;
border-radius: 18px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.03)),
rgba(255, 255, 255, 0.04);
border: 1px solid rgba(255, 255, 255, 0.08);
color: rgba(255, 255, 255, 0.82);
font-size: 14px;
font-weight: 600;
line-height: 1.6;
}
.ethnic-process-cta__panel-note strong {
color: #ffffff;
}
@media (max-width: 1200px) {
.ethnic-process-card-grid--highlights,
.ethnic-process-card-grid--deliverables {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ethnic-process-hero {
grid-template-columns: minmax(0, 1fr);
}
.ethnic-process-hero__visual {
max-width: 560px;
}
.ethnic-process-cta__highlights {
grid-template-columns: 1fr;
}
}
@media (max-width: 1024px) {
.ethnic-process-workflow,
.ethnic-process-two-column,
.ethnic-process-two-column--quality,
.ethnic-process-cta {
grid-template-columns: 1fr;
}
.ethnic-process-workflow__summary-card {
position: relative;
top: auto;
}
.ethnic-process-hero__micro-points {
grid-template-columns: 1fr;
max-width: 520px;
}
.ethnic-process-card-grid--collaboration,
.ethnic-process-card-grid--quality {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ethnic-process-cta h2 {
max-width: 11ch;
}
.ethnic-process-cta__panel {
max-width: 720px;
}
}
@media (max-width: 767px) {
.ethnic-our-process-page {
--ethnic-process-shell-padding: 20px;
}
.ethnic-process-section + .ethnic-process-section {
margin-top: 58px;
}
.ethnic-process-hero {
min-height: auto;
padding: 72px 0 68px;
}
.ethnic-process-hero__title {
max-width: 100%;
font-size: clamp(34px, 10vw, 48px);
}
.ethnic-process-heading__title,
.ethnic-process-cta h2 {
font-size: clamp(28px, 8vw, 36px);
}
.ethnic-process-cta__intro {
gap: 10px;
}
.ethnic-process-cta__intro-note {
font-size: 13px;
}
.ethnic-process-button {
width: 100%;
}
.ethnic-process-visual__badge {
position: static;
margin-top: 14px;
}
.ethnic-process-visual__panels,
.ethnic-process-card-grid--highlights,
.ethnic-process-card-grid--deliverables,
.ethnic-process-card-grid--collaboration,
.ethnic-process-card-grid--quality,
.ethnic-process-cta__highlights {
grid-template-columns: 1fr;
}
.ethnic-process-workflow__summary-card,
.ethnic-process-step__card,
.ethnic-process-card,
.ethnic-process-faq__item,
.ethnic-process-cta,
.ethnic-process-note,
.ethnic-process-cta__panel {
border-radius: 24px;
}
.ethnic-process-step__card {
grid-template-columns: 1fr;
}
.ethnic-process-faq__item summary {
padding: 20px 22px;
font-size: 17px;
}
.ethnic-process-faq__answer {
padding: 0 22px 20px;
}
.ethnic-process-cta__supporting {
margin-top: 24px;
}
.ethnic-process-cta__panel {
padding: 24px 22px;
}
.ethnic-process-cta__step {
grid-template-columns: 44px 1fr;
gap: 14px;
}
.ethnic-process-cta__step-number {
width: 44px;
height: 44px;
border-radius: 15px;
}
.ethnic-process-section--contrast {
padding: 44px 0;
border-radius: 28px;
}
.ethnic-process-kicker,
.ethnic-process-heading__eyebrow {
gap: 8px;
padding: 8px 14px;
font-size: 11px;
letter-spacing: 0.12em;
}
}
CSS;
}
}
if ( ! function_exists( 'ethnic_our_process_page_enqueue_assets' ) ) {
function ethnic_our_process_page_enqueue_assets() {
if ( ! ethnic_our_process_page_is_target() ) {
return;
}
$page = ethnic_our_process_page_get_target_page();
if ( $page instanceof WP_Post ) {
$handle = 'elementor-post-' . (int) $page->ID;
wp_dequeue_style( $handle );
wp_deregister_style( $handle );
}
}
add_action( 'wp_enqueue_scripts', 'ethnic_our_process_page_enqueue_assets', 120 );
}
if ( ! function_exists( 'ethnic_our_process_page_print_head_assets' ) ) {
function ethnic_our_process_page_print_head_assets() {
if ( ! ethnic_our_process_page_is_target() ) {
return;
}
$data = ethnic_our_process_page_data();
$faq = array();
foreach ( (array) $data['faqs'] as $item ) {
$faq[] = array(
'@type' => 'Question',
'name' => $item['question'],
'acceptedAnswer' => array(
'@type' => 'Answer',
'text' => $item['answer'],
),
);
}
$schema = array(
'@context' => 'https://schema.org',
'@graph' => array(
array(
'@type' => 'WebPage',
'name' => $data['metaTitle'],
'description' => $data['metaDescription'],
'url' => ethnic_our_process_page_url( 'our-process' ),
),
array(
'@type' => 'FAQPage',
'mainEntity' => $faq,
),
),
);
?>
<style id="ethnic-our-process-page-inline-css" type="text/css">
<?php echo ethnic_our_process_page_styles(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</style>
<meta name="description" content="<?php echo esc_attr( $data['metaDescription'] ); ?>" />
<script id="ethnic-our-process-page-schema" type="application/ld+json"><?php echo wp_json_encode( $schema, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE ); ?></script>
<?php
}
add_action( 'wp_head', 'ethnic_our_process_page_print_head_assets', 120 );
}
if ( ! function_exists( 'ethnic_our_process_page_document_title' ) ) {
function ethnic_our_process_page_document_title( $title ) {
if ( ethnic_our_process_page_is_target() ) {
$data = ethnic_our_process_page_data();
return $data['metaTitle'];
}
return $title;
}
add_filter( 'pre_get_document_title', 'ethnic_our_process_page_document_title', 50 );
}
if ( ! function_exists( 'ethnic_our_process_page_replace_content' ) ) {
function ethnic_our_process_page_replace_content( $content ) {
if ( ! ethnic_our_process_page_is_target() || ! in_the_loop() || ! is_main_query() ) {
return $content;
}
static $rendered = false;
if ( $rendered ) {
return $content;
}
$rendered = true;
return ethnic_our_process_page_render();
}
add_filter( 'the_content', 'ethnic_our_process_page_replace_content', 1000 );
}