Files
AsterionWP2026/wp-content/themes/asterion-bricks/front-page.php
j.foucher 773f137eb7 feat(home): build complete homepage and global templates
Scaffolds all components needed for the home and ships a working
front-page implementation covering the 9-section wireframe.

Components (assets/css/components.css)
- 13 sections per Design Handoff section 3:
  buttons, links, forms, cards (5 variants), stat callouts, header,
  nav, mega menu, drawer, footer, hero, logo strip, eyebrow,
  section title/lead, conversion banner, scroll reveal.
- All token-driven, prefixed `av-`, BEM-light. Mobile-first with
  768/1024/1280 breakpoints. Respects prefers-reduced-motion.

Global templates
- header.php: sticky header (60px mobile / 72px desktop), 5-item
  nav, language switcher, primary CTA, mobile drawer with hamburger
  toggle. Skip link first focusable element.
- footer.php: 5-column dark footer (Solutions, Industries, Why
  Asterion, Why Asterion, Newsletter), bottom strip with legal
  links + social.
- index.php: archive/search/blog fallback rendering posts in
  card-blog layout.
- front-page.php: full home with 9 sections, EN copy lifted
  verbatim from PDF Strategie D.1:
    1. Hero "Your Last Mistake Should Be in VR." + 2 CTAs
    2. Trust bar (placeholder logos + 4 inline metrics)
    3. Solutions: MY / FLEX / ACADEMY (3 cards)
    4. Industries: Police / SF / Military / Firefighters (2x2)
    5. Feature heroes: UWeD, Instructor Cockpit, AAR (alternating)
    6. Featured case study with 3 stat callouts
    7. Testimonials (3 quote cards)
    8. Latest insights (queries `post`; placeholder when empty)
    9. Conversion banner (Demo / T&E / Quote)

Verified: HTTP 200 on http://localhost:10004/, 73 KB HTML, 418 ms.

Outstanding (deferred)
- Hero video master + photographs (see MISSING-ASSETS.md)
- Mega menu content (links currently flat to section index)
- Form posts (newsletter currently no-op POST)
- Bricks license activation (manual, requires user key)
- WPML setup wizard (manual, requires user key)
- Lighthouse + axe full audit (visual env required)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 12:08:43 +02:00

378 lines
24 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Asterion Bricks — Front page (home)
*
* Implements the 9-section home wireframe from the Design Handoff
* (section 4.1) using the EN copy from Strategy & Content (D.1).
*
* 1. Hero — dark, full-bleed video, signature
* 2. Trust bar — sector marks + 4 inline metrics
* 3. Solutions — 3 cards (MY / FLEX / ACADEMY)
* 4. Industries — 4 cards 2x2 (Police / SF / Military / Firefighters)
* 5. Feature heroes — 3 alternating (UWeD / Instructor Cockpit / AAR)
* 6. Featured case — single highlighted case
* 7. Testimonials — 3 quotes (slider becomes JS-driven later)
* 8. Latest insights — 3 blog cards
* 9. Conversion banner — Demo / T&E / Quote
*
* @package AsterionBricks
*/
defined('ABSPATH') || exit;
get_header();
$home_url = home_url('/');
$theme = get_stylesheet_directory_uri();
?>
<!-- ============================================================== -->
<!-- 1. HERO -->
<!-- ============================================================== -->
<section class="av-hero" aria-labelledby="hero-headline">
<div class="av-hero__media" aria-hidden="true">
<?php /* Hero video placeholder. Replace with a 25-35s loop, MP4 H.264 + WebM, < 2 MB, per Design Handoff 5.4. */ ?>
<div style="width:100%;height:100%;background:
radial-gradient(ellipse at 20% 30%, rgba(201,164,90,0.15), transparent 60%),
radial-gradient(ellipse at 80% 70%, rgba(30,91,168,0.20), transparent 60%),
linear-gradient(135deg, #081427 0%, #0B1F3A 50%, #13294B 100%);"></div>
</div>
<div class="av-container">
<div class="av-hero__inner">
<p class="av-hero__eyebrow"><?php esc_html_e('Modular XR training for security forces', 'asterion-bricks'); ?></p>
<h1 id="hero-headline" class="av-hero__headline">Your Last Mistake Should Be in VR.</h1>
<p class="av-hero__sub">
PROSERVE&trade; is the modular, fully portable XR platform built for police, special forces, military and firefighters. Deploy in five minutes. Train anywhere. Debrief everything.
</p>
<div class="av-hero__ctas">
<a href="<?php echo esc_url($home_url . 'request-demo/'); ?>" class="av-btn av-btn--primary av-btn--xl"><?php esc_html_e('Request a Demo', 'asterion-bricks'); ?></a>
<a href="#feature-heroes" class="av-btn av-btn--on-dark av-btn--secondary av-btn--xl"><?php esc_html_e('Watch the 90-second film', 'asterion-bricks'); ?></a>
</div>
</div>
</div>
</section>
<!-- ============================================================== -->
<!-- 2. TRUST BAR -->
<!-- ============================================================== -->
<section class="av-logo-strip" aria-label="<?php esc_attr_e('Trusted by', 'asterion-bricks'); ?>">
<div class="av-container">
<p class="av-logo-strip__intro"><?php esc_html_e('Trusted by security forces across Europe', 'asterion-bricks'); ?></p>
<div class="av-logo-strip__row">
<?php /* Real client logos pending NDA confirmation — see MISSING-ASSETS.md. */ ?>
<?php for ($i = 1; $i <= 6; $i++) : ?>
<div class="av-logo-strip__logo">Logo <?php echo (int) $i; ?></div>
<?php endfor; ?>
</div>
<div class="av-logo-strip__metrics">
<div class="av-logo-strip__metric"><?php esc_html_e('10 years of XR research for security forces', 'asterion-bricks'); ?></div>
<div class="av-logo-strip__metric"><?php esc_html_e('11 environments · 50+ scenarios · monthly updates', 'asterion-bricks'); ?></div>
<div class="av-logo-strip__metric"><?php esc_html_e('< 5 minutes from case to active training', 'asterion-bricks'); ?></div>
<div class="av-logo-strip__metric"><?php esc_html_e('Made in France · GDPR-native · works fully offline', 'asterion-bricks'); ?></div>
</div>
</div>
</section>
<!-- ============================================================== -->
<!-- 3. SOLUTIONS -->
<!-- ============================================================== -->
<section class="av-section av-section--dark" aria-labelledby="solutions-title" data-av-reveal>
<div class="av-container">
<div class="av-section__head">
<span class="av-eyebrow av-eyebrow--gold"><?php esc_html_e('Solutions', 'asterion-bricks'); ?></span>
<h2 id="solutions-title" class="av-section__title">Three solutions. One platform. Zero compromise.</h2>
<p class="av-section__lead">
From the lone officer rebuilding muscle memory to a 16-trainee unit running a coordinated assault — PROSERVE scales with your mission, not the other way around.
</p>
</div>
<div class="av-grid-3">
<article class="av-card is-on-dark">
<div class="av-card__media" style="background:linear-gradient(135deg,#13294B,#0B1F3A);"></div>
<div class="av-card__body">
<span class="av-card__eyebrow"><?php esc_html_e('Solo training', 'asterion-bricks'); ?></span>
<h3 class="av-card__title">MY PROSERVE</h3>
<p class="av-card__excerpt">
Mini-case. Anywhere, anytime. Built for the officer who needs to train 30 minutes between two shifts. 9 m² of free space, a headset, a real-recoil replica. The legal minimum becomes the daily standard.
</p>
<div class="av-card__cta">
<a href="<?php echo esc_url($home_url . 'solutions/my-proserve/'); ?>" class="av-link av-link--on-dark av-link--with-arrow"><?php esc_html_e('Discover MY PROSERVE', 'asterion-bricks'); ?></a>
</div>
</div>
</article>
<article class="av-card is-on-dark">
<div class="av-card__media" style="background:linear-gradient(135deg,#13294B,#0B1F3A);"></div>
<div class="av-card__body">
<span class="av-card__eyebrow"><?php esc_html_e('Team training · 1 to 5', 'asterion-bricks'); ?></span>
<h3 class="av-card__title">PROSERVE FLEX</h3>
<p class="av-card__excerpt">
One case per operator. Multi-user cooperative scenarios, instructor PC, full AAR. Deploy on any flat surface from 9 to 100 m². For tactical units that move with their training.
</p>
<div class="av-card__cta">
<a href="<?php echo esc_url($home_url . 'solutions/proserve-flex/'); ?>" class="av-link av-link--on-dark av-link--with-arrow"><?php esc_html_e('Discover PROSERVE FLEX', 'asterion-bricks'); ?></a>
</div>
</div>
</article>
<article class="av-card is-on-dark">
<div class="av-card__media" style="background:linear-gradient(135deg,#13294B,#0B1F3A);"></div>
<div class="av-card__body">
<span class="av-card__eyebrow"><?php esc_html_e('Unit training · 1 to 16', 'asterion-bricks'); ?></span>
<h3 class="av-card__title">PROSERVE ACADEMY</h3>
<p class="av-card__excerpt">
The full training centre, in your facility. Up to 900 m² of free-roam space, instructor cockpit, racked compute, parallel sessions. Built for academies and continuous training programs.
</p>
<div class="av-card__cta">
<a href="<?php echo esc_url($home_url . 'solutions/proserve-academy/'); ?>" class="av-link av-link--on-dark av-link--with-arrow"><?php esc_html_e('Discover PROSERVE ACADEMY', 'asterion-bricks'); ?></a>
</div>
</div>
</article>
</div>
</div>
</section>
<!-- ============================================================== -->
<!-- 4. INDUSTRIES -->
<!-- ============================================================== -->
<section class="av-section" aria-labelledby="industries-title" data-av-reveal>
<div class="av-container">
<div class="av-section__head">
<span class="av-eyebrow"><?php esc_html_e('Industries', 'asterion-bricks'); ?></span>
<h2 id="industries-title" class="av-section__title">Built with operators, for operators.</h2>
<p class="av-section__lead">
PROSERVE is not a generic VR platform repackaged for the public sector. Every scenario, every weapon profile, every instructor metric was specified by serving and former operators in close partnership with our engineering team.
</p>
</div>
<div class="av-grid-4" style="grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));">
<article class="av-card">
<div class="av-card__media" style="background:linear-gradient(135deg,#1F3252,#0B1F3A);"></div>
<div class="av-card__body">
<span class="av-card__eyebrow"><?php esc_html_e('National & Municipal', 'asterion-bricks'); ?></span>
<h3 class="av-card__title"><?php esc_html_e('Police', 'asterion-bricks'); ?></h3>
<p class="av-card__excerpt">Vehicle stops, identity checks, urban CQB, de-escalation, riot containment. Built for the realities of contemporary policing.</p>
<div class="av-card__cta"><a href="<?php echo esc_url($home_url . 'industries/police/'); ?>" class="av-link av-link--with-arrow"><?php esc_html_e('Police training', 'asterion-bricks'); ?></a></div>
</div>
</article>
<article class="av-card">
<div class="av-card__media" style="background:linear-gradient(135deg,#1F3252,#0B1F3A);"></div>
<div class="av-card__body">
<span class="av-card__eyebrow"><?php esc_html_e('Tactical Units', 'asterion-bricks'); ?></span>
<h3 class="av-card__title"><?php esc_html_e('Special Forces', 'asterion-bricks'); ?></h3>
<p class="av-card__excerpt">Hostage rescue, dynamic entries, hostile crowd extraction, sniper-spotter coordination. Built for the units where every error has a name.</p>
<div class="av-card__cta"><a href="<?php echo esc_url($home_url . 'industries/special-forces/'); ?>" class="av-link av-link--with-arrow"><?php esc_html_e('Special forces training', 'asterion-bricks'); ?></a></div>
</div>
</article>
<article class="av-card">
<div class="av-card__media" style="background:linear-gradient(135deg,#1F3252,#0B1F3A);"></div>
<div class="av-card__body">
<span class="av-card__eyebrow"><?php esc_html_e('Armed forces', 'asterion-bricks'); ?></span>
<h3 class="av-card__title"><?php esc_html_e('Military', 'asterion-bricks'); ?></h3>
<p class="av-card__excerpt">MOUT, convoy escort, FOB defense, IED awareness, joint operation drills. Built for armed forces that deploy fast and adapt faster.</p>
<div class="av-card__cta"><a href="<?php echo esc_url($home_url . 'industries/military/'); ?>" class="av-link av-link--with-arrow"><?php esc_html_e('Military training', 'asterion-bricks'); ?></a></div>
</div>
</article>
<article class="av-card">
<div class="av-card__media" style="background:linear-gradient(135deg,#1F3252,#0B1F3A);"></div>
<div class="av-card__body">
<span class="av-card__eyebrow"><?php esc_html_e('Emergency services', 'asterion-bricks'); ?></span>
<h3 class="av-card__title"><?php esc_html_e('Firefighters', 'asterion-bricks'); ?></h3>
<p class="av-card__excerpt">Structure fires, hazmat, multi-casualty triage, confined-space rescue, industrial accidents. Built for first responders who can't rehearse the worst day at full scale.</p>
<div class="av-card__cta"><a href="<?php echo esc_url($home_url . 'industries/firefighters/'); ?>" class="av-link av-link--with-arrow"><?php esc_html_e('Firefighter training', 'asterion-bricks'); ?></a></div>
</div>
</article>
</div>
</div>
</section>
<!-- ============================================================== -->
<!-- 5. FEATURE HEROES (3 alternating) -->
<!-- ============================================================== -->
<section id="feature-heroes" class="av-section av-section--dark" data-av-reveal>
<div class="av-container">
<div class="av-section__head">
<span class="av-eyebrow av-eyebrow--gold"><?php esc_html_e('Technology', 'asterion-bricks'); ?></span>
<h2 class="av-section__title">Behavior, not scripts.</h2>
</div>
<?php
$features = [
[
'eyebrow' => 'Real-recoil weapon integration',
'title' => 'The weapon you train with is the weapon you carry.',
'body' => 'Our Universal Weapon Digitizer (UWeD&trade;) attaches to any gas-blowback or CO2 replica — Glock 17, HK416, MP7, M9, and dozens more — or to your real service weapon firing blanks. Bullet trajectory is physically simulated: ricochet, penetration, material density. Recoil-induced tracking loss is corrected by an exclusive IMU compensation system.',
'link' => 'See how UWeD works',
'href' => '/technology/weapons-tracking/',
],
[
'eyebrow' => 'Instructor Cockpit',
'title' => 'You orchestrate. The trainees adapt.',
'body' => "From a dedicated instructor PC, you orchestrate every detail of the scenario in real time. Walk through walls. Switch to any trainee's first-person view. Toggle field of view, shot traces, and threat highlighting. Add or remove civilians, change a hostage's behavior, escalate or de-escalate a contact — without pausing the scenario.",
'link' => 'Inside the Instructor Cockpit',
'href' => '/technology/instructor-cockpit/',
],
[
'eyebrow' => 'After-Action Review',
'title' => 'The session ends; the learning starts.',
'body' => "Every event is logged: shots fired, shots hit, shots missed by target type, reaction time, field-of-view direction, weapon muzzling, position over time. Replay any session from any angle — top-down tactical, free-camera, or in-eye view of any trainee. Speed up, slow down, pause. Compare a recruit's reaction time to the unit's median.",
'link' => 'Explore After-Action Review',
'href' => '/technology/after-action-review/',
],
];
foreach ($features as $i => $f) :
$reverse = ($i % 2 === 1);
?>
<div style="display:grid;grid-template-columns:1fr;gap:var(--space-8);align-items:center;margin-bottom:var(--space-16);<?php echo $reverse ? 'direction:rtl;' : ''; ?>" class="av-feature-row">
<div style="aspect-ratio:16/9;background:linear-gradient(135deg,#13294B,#081427);border-radius:var(--radius-md);direction:ltr;"></div>
<div style="direction:ltr;display:flex;flex-direction:column;gap:var(--space-3);">
<span class="av-eyebrow av-eyebrow--gold"><?php echo esc_html($f['eyebrow']); ?></span>
<h3 style="font-family:var(--font-display);font-size:var(--text-display-md);line-height:var(--leading-display-md);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-tight);color:var(--color-text-on-dark);margin:0;"><?php echo esc_html($f['title']); ?></h3>
<p style="color:var(--color-text-on-dark-muted);font-size:var(--text-body-lg);line-height:var(--leading-body-lg);max-width:60ch;"><?php echo wp_kses_post($f['body']); ?></p>
<div><a href="<?php echo esc_url($home_url . ltrim($f['href'], '/')); ?>" class="av-link av-link--on-dark av-link--with-arrow"><?php echo esc_html($f['link']); ?></a></div>
</div>
</div>
<?php endforeach; ?>
<style>
@media (min-width: 768px) {
.av-feature-row { grid-template-columns: 1fr 1fr !important; }
}
</style>
</div>
</section>
<!-- ============================================================== -->
<!-- 6. FEATURED CASE STUDY -->
<!-- ============================================================== -->
<section class="av-section" aria-labelledby="case-title" data-av-reveal>
<div class="av-container">
<div style="display:grid;grid-template-columns:1fr;gap:var(--space-10);align-items:center;" class="av-case-row">
<div style="aspect-ratio:4/3;background:linear-gradient(135deg,#3E4C5E,#0B1F3A);border-radius:var(--radius-md);"></div>
<div style="display:flex;flex-direction:column;gap:var(--space-4);">
<span class="av-eyebrow"><?php esc_html_e('Case study', 'asterion-bricks'); ?></span>
<h2 id="case-title" class="av-section__title">How a European tactical unit cut tactical errors by 35%.</h2>
<p class="av-section__lead">
In 2025, a European tactical unit deployed PROSERVE FLEX as part of its continuous training program. Six months in, instructor-rated tactical errors dropped 35% across the unit. Reaction time improved 22%. And weekly training volume tripled, without a single live round fired.
</p>
<div style="display:flex;gap:var(--space-8);margin-top:var(--space-2);">
<div class="av-stat av-stat--gold"><div class="av-stat__value">-35%</div><div class="av-stat__label"><?php esc_html_e('Tactical errors', 'asterion-bricks'); ?></div></div>
<div class="av-stat av-stat--gold"><div class="av-stat__value">+22%</div><div class="av-stat__label"><?php esc_html_e('Reaction time', 'asterion-bricks'); ?></div></div>
<div class="av-stat av-stat--gold"><div class="av-stat__value">×3</div><div class="av-stat__label"><?php esc_html_e('Training volume', 'asterion-bricks'); ?></div></div>
</div>
<div style="margin-top:var(--space-2);"><a href="<?php echo esc_url($home_url . 'customers/'); ?>" class="av-btn av-btn--secondary av-btn--md"><?php esc_html_e('Read the case study', 'asterion-bricks'); ?></a></div>
</div>
</div>
<style>
@media (min-width: 1024px) { .av-case-row { grid-template-columns: 1fr 1fr !important; } }
</style>
</div>
</section>
<!-- ============================================================== -->
<!-- 7. TESTIMONIALS -->
<!-- ============================================================== -->
<section class="av-section" style="background-color:var(--color-bg-subtle);" aria-labelledby="testimonials-title" data-av-reveal>
<div class="av-container">
<div class="av-section__head" style="text-align:center;align-items:center;margin-inline:auto;">
<span class="av-eyebrow"><?php esc_html_e('Voices from the field', 'asterion-bricks'); ?></span>
<h2 id="testimonials-title" class="av-section__title" style="text-align:center;margin-inline:auto;">Train how it really feels.</h2>
</div>
<div class="av-grid-3">
<article class="av-card av-card--quote">
<div class="av-card__quote">We've stopped asking how often we train. We've started measuring how well.</div>
<div class="av-card__attribution">— Tactical training officer, European federal police (anonymized)</div>
</article>
<article class="av-card av-card--quote">
<div class="av-card__quote">The first time my recruits saw their own AAR replay, three of them asked to redo the drill. That had never happened before.</div>
<div class="av-card__attribution">— Senior instructor, national police academy</div>
</article>
<article class="av-card av-card--quote">
<div class="av-card__quote">What used to take a half-day live exercise now takes 20 minutes between shifts.</div>
<div class="av-card__attribution">— Captain, urban response unit</div>
</article>
</div>
</div>
</section>
<!-- ============================================================== -->
<!-- 8. LATEST INSIGHTS -->
<!-- ============================================================== -->
<section class="av-section" aria-labelledby="insights-title" data-av-reveal>
<div class="av-container">
<div class="av-section__head">
<span class="av-eyebrow"><?php esc_html_e('Insights', 'asterion-bricks'); ?></span>
<h2 id="insights-title" class="av-section__title">Insights from the front of immersive training.</h2>
</div>
<?php
$insights = get_posts(['numberposts' => 3, 'post_status' => 'publish']);
if (! empty($insights)) :
?>
<div class="av-grid-3">
<?php foreach ($insights as $post) : setup_postdata($post); ?>
<article class="av-card av-card--blog">
<a href="<?php the_permalink(); ?>" class="av-card__media" aria-hidden="true" tabindex="-1" style="background:linear-gradient(135deg,#CCD3DC,#E5E9EE);"></a>
<div class="av-card__body">
<span class="av-card__eyebrow"><?php echo esc_html(get_the_date('M j, Y')); ?></span>
<h3 class="av-card__title"><a href="<?php the_permalink(); ?>" style="color:inherit;text-decoration:none;"><?php the_title(); ?></a></h3>
<p class="av-card__excerpt"><?php echo esc_html(wp_trim_words(get_the_excerpt(), 22)); ?></p>
<div class="av-card__cta"><a href="<?php the_permalink(); ?>" class="av-link av-link--with-arrow"><?php esc_html_e('Read more', 'asterion-bricks'); ?></a></div>
</div>
</article>
<?php endforeach; wp_reset_postdata(); ?>
</div>
<?php else : ?>
<p style="color:var(--color-text-muted);">
<?php esc_html_e('Editorial blog launches with the site go-live. The 12-month content calendar is in the Strategy & Content brief, section B.4.', 'asterion-bricks'); ?>
</p>
<?php endif; ?>
<div style="margin-top:var(--space-8);">
<a href="<?php echo esc_url($home_url . 'insights/'); ?>" class="av-link av-link--with-arrow"><?php esc_html_e('See all articles', 'asterion-bricks'); ?></a>
</div>
</div>
</section>
<!-- ============================================================== -->
<!-- 9. CONVERSION BANNER -->
<!-- ============================================================== -->
<section class="av-conversion-banner" aria-labelledby="conversion-title" data-av-reveal>
<div class="av-container">
<div class="av-conversion-banner__head">
<h2 id="conversion-title" class="av-conversion-banner__title">Train like the threat is now.</h2>
<p class="av-conversion-banner__lead"><?php esc_html_e('Three paths into the platform — pick the one that fits where you are.', 'asterion-bricks'); ?></p>
</div>
<div class="av-conversion-banner__grid">
<div class="av-conversion-banner__card">
<h3 class="av-conversion-banner__card-title"><?php esc_html_e('Request a Demo', 'asterion-bricks'); ?></h3>
<p class="av-conversion-banner__card-desc"><?php esc_html_e('Schedule a 30-minute tailored session with our team. Receive a video demo of the configuration that matches your needs.', 'asterion-bricks'); ?></p>
<a href="<?php echo esc_url($home_url . 'request-demo/'); ?>" class="av-btn av-btn--primary av-btn--md"><?php esc_html_e('Schedule a demo', 'asterion-bricks'); ?></a>
</div>
<div class="av-conversion-banner__card">
<h3 class="av-conversion-banner__card-title"><?php esc_html_e('Request a T&E Kit', 'asterion-bricks'); ?></h3>
<p class="av-conversion-banner__card-desc"><?php esc_html_e('Get a PROSERVE case on loan at your facility for 5 to 10 days, with on-site support from our team.', 'asterion-bricks'); ?></p>
<a href="<?php echo esc_url($home_url . 'request-te-kit/'); ?>" class="av-btn av-btn--on-dark av-btn--secondary av-btn--md"><?php esc_html_e('Request the kit', 'asterion-bricks'); ?></a>
</div>
<div class="av-conversion-banner__card">
<h3 class="av-conversion-banner__card-title"><?php esc_html_e('Request a Quote', 'asterion-bricks'); ?></h3>
<p class="av-conversion-banner__card-desc"><?php esc_html_e('Get a detailed quote and deployment plan within 5 working days.', 'asterion-bricks'); ?></p>
<a href="<?php echo esc_url($home_url . 'request-quote/'); ?>" class="av-btn av-btn--on-dark av-btn--secondary av-btn--md"><?php esc_html_e('Get a quote', 'asterion-bricks'); ?></a>
</div>
</div>
</div>
</section>
<?php get_footer(); ?>