<style>
/* =============================================
DESIGN SYSTEM
============================================= */
:root {
–green-deep: #566C2F;
–green-mid: #546B2D;
–green-light: #99BF64;
–green-pale: #D5E3BF;
–brown: #634E42;
–cream: #f8f5ef;
–cream-dark: #ede8df;
–text-dark: #1a1a1a;
–text-mid: #3d3d3d;
–text-light: #6b7280;
–white: #ffffff;
–gold: #634E42;
–radius-sm: 6px;
–radius-md: 14px;
–radius-lg: 24px;
–shadow-sm: 0 2px 8px rgba(0,0,0,.07);
–shadow-md: 0 8px 32px rgba(0,0,0,.10);
–shadow-lg: 0 20px 60px rgba(0,0,0,.14);
–transition: .25s cubic-bezier(.4,0,.2,1);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* Force visibility – override theme rules that may hide content on desktop */
#hero, #process, #services, #documents, #pricing, #appointment, #about,
nav, footer,
.hero-content, .hero-content-full, .container, section {
visibility: visible !important;
opacity: 1 !important;
overflow: visible !important;
}

/* Force Elementor/theme wrappers to not clip or collapse our content */
.elementor-widget-html,
.elementor-widget-container,
.elementor-element,
.elementor-section,
.elementor-container,
.elementor-column,
.elementor-column-wrap {
overflow: visible !important;
height: auto !important;
min-height: 0 !important;
max-width: none !important;
contain: none !important;
}

html {
scroll-behavior: smooth;
overflow-x: hidden !important;
max-width: 100% !important;
}

body {
font-family: ‘DM Sans’, sans-serif;
background: var(–cream);
color: var(–text-dark);
line-height: 1.6;
overflow-x: hidden !important;
max-width: 100% !important;
}

/* Typography */
h1, h2, h3 { font-family: ‘DM Serif Display’, serif; line-height: 1.15; }
h1 { font-size: clamp(2.4rem, 5vw, 4rem); }
h2 { font-size: clamp(1.8rem, 3.5vw, 2.8rem); }
h3 { font-size: clamp(1.2rem, 2vw, 1.6rem); }
p { color: var(–text-mid); }

a { text-decoration: none; color: inherit; }

.container {
max-width: 1160px;
margin: 0 auto;
padding: 0 24px;
width: 100%;
box-sizing: border-box;
}

/* =============================================
NAV
============================================= */
nav {
position: fixed;
top: 0; left: 0; right: 0;
z-index: 100;
padding: 0 24px;
height: 68px;
display: flex;
align-items: center;
justify-content: space-between;
background: rgba(26,58,42,.96);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(255,255,255,.08);
transition: var(–transition);
}

.nav-logo {
display: flex;
align-items: center;
gap: 10px;
}

.nav-logo-mark {
width: 42px; height: 42px;
display: flex;
align-items: center;
justify-content: center;
}

.nav-logo-mark svg { width: 100%; height: 100%; }

.nav-logo-text {
font-family: ‘DM Serif Display’, serif;
font-size: 1.3rem;
color: var(–white);
letter-spacing: .01em;
}

.nav-logo-text span { color: var(–green-light); }

.nav-links {
display: flex;
align-items: center;
gap: 32px;
list-style: none;
}

.nav-links a {
color: rgba(255,255,255,.75);
font-size: .9rem;
font-weight: 500;
letter-spacing: .02em;
transition: color var(–transition);
}

.nav-links a:hover { color: var(–white); }

.nav-right {
display: flex;
align-items: center;
gap: 16px;
}

.nav-phone {
display: flex;
align-items: center;
gap: 6px;
color: var(–white);
font-weight: 600;
font-size: .9rem;
padding: 6px 14px;
border: 1px solid rgba(255,255,255,.18);
border-radius: 99px;
transition: var(–transition);
white-space: nowrap;
}

.nav-phone:hover {
border-color: var(–green-light);
color: var(–green-light);
}
.btn-nav {
background: var(–green-light);
color: var(–green-deep);
padding: 10px 20px;
border-radius: 99px;
font-weight: 600;
font-size: .85rem;
transition: var(–transition);
}

.btn-nav:hover {
background: var(–white);
transform: translateY(-1px);
}

.hamburger {
display: none;
background: none;
border: none;
cursor: pointer;
padding: 6px;
flex-direction: column;
gap: 5px;
}

.hamburger span {
display: block;
width: 22px;
height: 2px;
background: var(–white);
border-radius: 2px;
transition: var(–transition);
}

/* =============================================
HERO
============================================= */
#hero {
display: block;
position: relative;
overflow: hidden;
padding-top: 68px;
}

.hero-bg {
position: absolute;
inset: 0;
background:
radial-gradient(ellipse 80% 70% at 65% 40%, rgba(153,191,100,.18) 0%, transparent 60%),
linear-gradient(160deg, var(–green-deep) 0%, #2A3318 100%);
z-index: 0;
}

.hero-pattern {
position: absolute;
inset: 0;
background-image: radial-gradient(circle, rgba(153,191,100,.1) 1px, transparent 1px);
background-size: 40px 40px;
z-index: 0;
}

.hero-content {
position: relative;
z-index: 1;
max-width: 660px;
padding: 80px 24px;
}

.hero-content-full {
max-width: 980px;
padding: 90px 24px 70px;
}

/* Hero 7-step timeline */
.hero-timeline {
display: flex;
gap: 8px;
margin-top: 48px;
overflow-x: auto;
padding-bottom: 8px;
}

.hero-tl-step {
flex: 1;
min-width: 110px;
background: rgba(255,255,255,.05);
border: 1px solid rgba(255,255,255,.1);
border-radius: var(–radius-md);
padding: 16px 12px;
text-align: center;
position: relative;
transition: var(–transition);
}

.hero-tl-step:hover {
background: rgba(153,191,100,.1);
border-color: rgba(153,191,100,.35);
transform: translateY(-2px);
}

.hero-tl-step:not(:last-child)::after {
content: ‘→’;
position: absolute;
right: -14px;
top: 50%;
transform: translateY(-50%);
color: rgba(255,255,255,.25);
font-size: .9rem;
z-index: 2;
}

.hero-tl-icon {
font-size: 1.5rem;
margin-bottom: 8px;
}

.hero-tl-label {
color: var(–white);
font-size: .8rem;
font-weight: 600;
line-height: 1.4;
}

.hero-tl-label span {
display: block;
color: var(–green-light);
font-size: .7rem;
font-weight: 500;
margin-top: 2px;
}

.trust-card-inline {
margin-top: 32px;
display: inline-flex;
max-width: 320px;
}

@media (max-width: 900px) {
.hero-timeline {
flex-direction: column;
overflow-x: visible;
gap: 10px;
}
.hero-tl-step {
min-width: 0;
width: 100%;
display: flex;
align-items: center;
gap: 14px;
text-align: left;
padding: 12px 16px;
}
.hero-tl-icon { margin-bottom: 0; flex-shrink: 0; }
.hero-tl-label { line-height: 1.3; }
.hero-tl-label span { display: inline; margin-top: 0; margin-left: 6px; }
.hero-tl-step:not(:last-child) {
margin-bottom: 18px;
}
.hero-tl-step:not(:last-child)::after {
content: ‘↓’;
position: absolute;
left: 50%;
right: auto;
top: 100%;
bottom: auto;
transform: translateX(-50%);
margin-top: 4px;
color: rgba(255,255,255,.25);
font-size: 1rem;
}
}

.hero-badge {
display: inline-flex;
align-items: center;
gap: 8px;
background: rgba(153,191,100,.15);
border: 1px solid rgba(153,191,100,.3);
color: var(–green-light);
padding: 8px 16px;
border-radius: 99px;
font-size: .82rem;
font-weight: 500;
letter-spacing: .04em;
text-transform: uppercase;
margin-bottom: 28px;
max-width: 100%;
white-space: normal;
text-align: center;
}

.hero-badge::before {
content:  »;
width: 6px; height: 6px;
background: var(–green-light);
border-radius: 50%;
animation: pulse-dot 2s ease-in-out infinite;
}

@keyframes pulse-dot {
0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: .4; transform: scale(.7); }
}

.hero-title {
color: var(–white);
margin-bottom: 24px;
}

.hero-title em {
font-style: italic;
color: var(–green-light);
}

.hero-sub {
color: rgba(255,255,255,.7);
font-size: 1.1rem;
max-width: 520px;
margin-bottom: 40px;
line-height: 1.7;
}

.hero-cta {
display: flex;
gap: 14px;
flex-wrap: wrap;
margin-bottom: 56px;
}

.btn-primary {
background: var(–green-light);
color: var(–green-deep);
padding: 16px 32px;
border-radius: 99px;
font-weight: 700;
font-size: 1rem;
transition: var(–transition);
display: inline-flex;
align-items: center;
gap: 8px;
}

.btn-primary:hover {
background: var(–white);
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(0,0,0,.2);
}

.btn-outline {
background: transparent;
color: var(–white);
padding: 16px 32px;
border-radius: 99px;
font-weight: 600;
font-size: 1rem;
border: 1.5px solid rgba(255,255,255,.35);
transition: var(–transition);
display: inline-flex;
align-items: center;
gap: 8px;
}

.btn-outline:hover {
border-color: var(–white);
background: rgba(255,255,255,.08);
}

.hero-stats {
display: flex;
gap: 40px;
flex-wrap: wrap;
}

.hero-stat strong {
display: block;
font-family: ‘DM Serif Display’, serif;
font-size: 2.2rem;
color: var(–white);
line-height: 1;
margin-bottom: 4px;
}

.hero-stat span {
font-size: .82rem;
color: rgba(255,255,255,.55);
text-transform: uppercase;
letter-spacing: .05em;
}

.hero-float {
position: absolute;
right: 80px;
top: 50%;
transform: translateY(-50%);
z-index: 1;
display: flex;
flex-direction: column;
gap: 16px;
}

.peb-scale {
background: rgba(255,255,255,.05);
border: 1px solid rgba(255,255,255,.1);
backdrop-filter: blur(12px);
border-radius: var(–radius-lg);
padding: 28px 24px;
min-width: 200px;
}

.peb-scale-title {
color: rgba(255,255,255,.5);
font-size: .75rem;
text-transform: uppercase;
letter-spacing: .1em;
margin-bottom: 14px;
}

.peb-bar {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 7px;
}

.peb-bar-label {
font-weight: 700;
font-size: .85rem;
width: 18px;
color: var(–white);
}

.peb-bar-fill {
height: 22px;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: flex-end;
padding-right: 8px;
font-size: .7rem;
font-weight: 600;
color: rgba(0,0,0,.7);
}

.trust-card {
background: rgba(255,255,255,.06);
border: 1px solid rgba(255,255,255,.1);
backdrop-filter: blur(12px);
border-radius: var(–radius-md);
padding: 20px;
display: flex;
align-items: center;
gap: 14px;
}

.trust-icon {
width: 44px; height: 44px;
background: rgba(153,191,100,.2);
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
font-size: 1.3rem;
}

.trust-card strong {
display: block;
color: var(–white);
font-size: .9rem;
margin-bottom: 2px;
}

.trust-card span {
color: rgba(255,255,255,.5);
font-size: .78rem;
}

/* =============================================
SECTIONS COMMONS
============================================= */
section { padding: 96px 0; }

.section-label {
display: inline-block;
font-size: .75rem;
font-weight: 600;
letter-spacing: .12em;
text-transform: uppercase;
color: var(–green-mid);
margin-bottom: 14px;
}

.section-title { margin-bottom: 16px; color: var(–green-deep); }
.section-sub { font-size: 1.05rem; color: var(–text-light); max-width: 580px; }

.section-header { margin-bottom: 56px; }
.section-header.centered { text-align: center; }
.section-header.centered .section-sub { margin: 0 auto; }

/* =============================================
HOW IT WORKS (STEPS)
============================================= */
#process { background: var(–white); }

.steps-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 2px;
background: var(–cream-dark);
border-radius: var(–radius-lg);
overflow: hidden;
}

.step-card {
background: var(–white);
padding: 40px 32px;
position: relative;
transition: var(–transition);
}

.step-card:hover { background: var(–green-deep); }
.step-card:hover .step-num { color: var(–green-light); }
.step-card:hover .step-title { color: var(–white); }
.step-card:hover p { color: rgba(255,255,255,.65); }

.step-num {
font-family: ‘DM Serif Display’, serif;
font-size: 3.5rem;
color: var(–green-pale);
line-height: 1;
margin-bottom: 20px;
transition: var(–transition);
}

.step-icon {
width: 48px; height: 48px;
background: var(–green-pale);
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.4rem;
margin-bottom: 16px;
}

.step-title {
font-size: 1.1rem;
font-weight: 600;
margin-bottom: 10px;
color: var(–green-deep);
transition: var(–transition);
}

.step-card p { font-size: .9rem; transition: var(–transition); }

/* =============================================
SERVICES
============================================= */
#services { background: var(–cream); }

.services-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
}

.service-card {
background: var(–white);
border-radius: var(–radius-lg);
padding: 40px;
border: 1.5px solid transparent;
transition: var(–transition);
position: relative;
overflow: hidden;
}

.service-card::before {
content:  »;
position: absolute;
top: 0; left: 0; right: 0;
height: 3px;
background: linear-gradient(90deg, var(–green-light), var(–green-mid));
opacity: 0;
transition: var(–transition);
}

.service-card:hover { border-color: var(–green-pale); transform: translateY(-4px); box-shadow: var(–shadow-md); }
.service-card:hover::before { opacity: 1; }

.service-card.featured {
background: var(–green-deep);
border-color: transparent;
grid-column: 1 / -1;
}

.service-card.featured::before { opacity: 1; }
.service-card.featured h3 { color: var(–white); }
.service-card.featured p { color: rgba(255,255,255,.65); }
.service-card.featured .svc-icon { background: rgba(153,191,100,.2); }
.service-card.featured .svc-list li { color: rgba(255,255,255,.75); }
.service-card.featured .svc-list li::before { color: var(–green-light); }

.svc-icon {
width: 56px; height: 56px;
background: var(–green-pale);
border-radius: 14px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.6rem;
margin-bottom: 22px;
}

.svc-icon-peb {
width: 76px;
height: 56px;
padding: 8px 10px;
background: rgba(255,255,255,.08);
}

.mini-peb-scale {
width: 100%;
height: 100%;
}

.service-card h3 { margin-bottom: 12px; color: var(–green-deep); }

.svc-list {
list-style: none;
margin-top: 20px;
display: flex;
flex-direction: column;
gap: 8px;
}

.svc-list li {
font-size: .9rem;
color: var(–text-mid);
padding-left: 20px;
position: relative;
}

.svc-list li::before {
content: ‘✓’;
position: absolute;
left: 0;
color: var(–green-mid);
font-weight: 700;
}

/* =============================================
DOCUMENTS / CHECKLIST
============================================= */
#documents { background: var(–green-deep); }
#documents .section-label { color: var(–green-light); }
#documents .section-title { color: var(–white); }
#documents .section-sub { color: rgba(255,255,255,.6); }

.docs-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 16px;
}

.doc-card {
background: rgba(255,255,255,.05);
border: 1px solid rgba(255,255,255,.1);
border-radius: var(–radius-md);
padding: 24px;
transition: var(–transition);
}

.doc-card:hover { background: rgba(255,255,255,.09); border-color: rgba(153,191,100,.4); }

.doc-card-icon { font-size: 1.6rem; margin-bottom: 12px; }
.doc-card h4 { color: var(–white); font-size: 1rem; margin-bottom: 8px; }
.doc-card p { color: rgba(255,255,255,.5); font-size: .85rem; }

.doc-download {
margin-top: 40px;
text-align: center;
}

.doc-download p {
color: rgba(255,255,255,.55);
margin-bottom: 16px;
}

.btn-light {
background: rgba(255,255,255,.1);
color: var(–white);
border: 1.5px solid rgba(255,255,255,.25);
padding: 14px 28px;
border-radius: 99px;
font-weight: 600;
font-size: .9rem;
display: inline-flex;
align-items: center;
gap: 8px;
transition: var(–transition);
}

.btn-light:hover { background: rgba(255,255,255,.18); }

/* =============================================
TIMELINE / REGULATION
============================================= */
#regulation { background: var(–white); }

.timeline {
position: relative;
display: flex;
flex-direction: column;
gap: 0;
}

.timeline::before {
content:  »;
position: absolute;
left: 70px;
top: 0; bottom: 0;
width: 2px;
background: linear-gradient(to bottom, var(–green-pale), var(–green-light), var(–green-pale));
}

.tl-item {
display: flex;
gap: 32px;
padding: 28px 0;
align-items: flex-start;
position: relative;
}

.tl-year {
width: 140px;
flex-shrink: 0;
text-align: right;
font-family: ‘DM Serif Display’, serif;
font-size: 1.5rem;
color: var(–green-mid);
padding-right: 24px;
position: relative;
}

.tl-year::after {
content:  »;
position: absolute;
right: -7px;
top: 8px;
width: 12px; height: 12px;
background: var(–green-light);
border-radius: 50%;
border: 3px solid var(–white);
box-shadow: 0 0 0 2px var(–green-light);
}

.tl-content { flex: 1; padding-top: 4px; }
.tl-content h4 { font-size: 1rem; font-weight: 600; color: var(–text-dark); margin-bottom: 4px; }
.tl-content p { font-size: .88rem; }

/* =============================================
PRICING
============================================= */
#pricing { background: var(–cream); }

.pricing-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 20px;
margin-bottom: 40px;
}

.price-card {
background: var(–white);
border-radius: var(–radius-lg);
padding: 36px 28px;
border: 1.5px solid var(–cream-dark);
transition: var(–transition);
text-align: center;
}

.price-card:hover { box-shadow: var(–shadow-md); border-color: var(–green-light); }

.price-card.popular {
background: var(–green-deep);
border-color: transparent;
position: relative;
}

.popular-badge {
position: absolute;
top: -12px;
left: 50%;
transform: translateX(-50%);
background: var(–green-light);
color: var(–green-deep);
font-size: .72rem;
font-weight: 700;
letter-spacing: .06em;
text-transform: uppercase;
padding: 4px 14px;
border-radius: 99px;
}

.price-card.popular h3 { color: var(–white); }
.price-card.popular p { color: rgba(255,255,255,.55); }
.price-card.popular .price-tag { color: var(–green-light); }

.price-tag {
font-family: ‘DM Serif Display’, serif;
font-size: 2.8rem;
color: var(–green-deep);
line-height: 1;
margin: 20px 0 6px;
}

.price-tag span { font-size: 1rem; font-family: ‘DM Sans’, sans-serif; font-weight: 400; }

.price-note { font-size: .8rem; margin-bottom: 24px; }

.price-features { list-style: none; text-align: left; }
.price-features li {
font-size: .88rem;
padding: 8px 0;
border-top: 1px solid var(–cream-dark);
display: flex;
gap: 8px;
align-items: flex-start;
}
.price-card.popular .price-features li { border-color: rgba(255,255,255,.1); color: rgba(255,255,255,.7); }
.price-features li::before { content: ‘✓’; color: var(–green-mid); font-weight: 700; flex-shrink: 0; margin-top: 1px; }
.price-card.popular .price-features li::before { color: var(–green-light); }

.price-promos {
display: flex;
gap: 12px;
flex-wrap: wrap;
justify-content: center;
margin-top: 24px;
}

.promo-tag {
background: var(–green-pale);
color: var(–green-deep);
padding: 8px 18px;
border-radius: 99px;
font-size: .85rem;
font-weight: 600;
}

/* =============================================
APPOINTMENT FORM
============================================= */
#appointment {
background: linear-gradient(160deg, var(–green-deep) 0%, #2F3A1C 100%);
position: relative;
overflow: hidden;
}

#appointment::before {
content:  »;
position: absolute;
inset: 0;
background-image: radial-gradient(circle, rgba(153,191,100,.07) 1px, transparent 1px);
background-size: 40px 40px;
}

#appointment .section-label { color: var(–green-light); }
#appointment .section-title { color: var(–white); }
#appointment .section-sub { color: rgba(255,255,255,.6); }

.form-wrapper {
position: relative;
z-index: 1;
background: rgba(255,255,255,.04);
border: 1px solid rgba(255,255,255,.1);
border-radius: var(–radius-lg);
padding: 52px 48px;
backdrop-filter: blur(8px);
}

.form-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-bottom: 20px;
}

.form-full { grid-column: 1 / -1; }

.form-group {
display: flex;
flex-direction: column;
gap: 6px;
}

.form-group label {
font-size: .82rem;
font-weight: 600;
color: rgba(255,255,255,.7);
letter-spacing: .04em;
text-transform: uppercase;
}

.form-group label em {
color: var(–green-light);
font-style: normal;
}

.form-group input,
.form-group select,
.form-group textarea {
background: rgba(255,255,255,.07);
border: 1.5px solid rgba(255,255,255,.12);
border-radius: var(–radius-sm);
padding: 12px 16px;
color: var(–white);
font-family: ‘DM Sans’, sans-serif;
font-size: .95rem;
transition: var(–transition);
width: 100%;
outline: none;
}

.form-group input::placeholder,
.form-group textarea::placeholder {
color: rgba(255,255,255,.25);
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
border-color: var(–green-light);
background: rgba(255,255,255,.1);
}

.form-group select option {
background: var(–green-deep);
color: var(–white);
}

.form-group textarea { resize: vertical; min-height: 100px; }

.form-divider {
border: none;
border-top: 1px solid rgba(255,255,255,.1);
margin: 32px 0;
}

.form-section-title {
font-size: .75rem;
font-weight: 700;
letter-spacing: .14em;
text-transform: uppercase;
color: var(–green-light);
margin-bottom: 20px;
}

/* Upload zones */
.upload-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 14px;
margin-bottom: 20px;
}

.upload-zone {
border: 2px dashed rgba(255,255,255,.18);
border-radius: var(–radius-md);
padding: 24px 16px;
text-align: center;
cursor: pointer;
transition: var(–transition);
position: relative;
}

.upload-zone:hover { border-color: var(–green-light); background: rgba(153,191,100,.06); }
.upload-zone.has-files { border-color: var(–green-light); background: rgba(153,191,100,.08); }

.upload-zone input[type= »file »] {
position: absolute;
inset: 0;
opacity: 0;
cursor: pointer;
width: 100%;
height: 100%;
}

.upload-icon { font-size: 1.8rem; margin-bottom: 8px; }
.upload-zone h5 { color: var(–white); font-size: .9rem; margin-bottom: 4px; }
.upload-zone p { font-size: .75rem; color: rgba(255,255,255,.4); }
.upload-zone .file-count { font-size: .75rem; color: var(–green-light); font-weight: 600; margin-top: 6px; display: none; }
.upload-zone.has-files .file-count { display: block; }

.form-consent {
display: flex;
gap: 12px;
align-items: flex-start;
margin-bottom: 28px;
}

.form-consent input[type= »checkbox »] {
width: 18px; height: 18px;
accent-color: var(–green-light);
flex-shrink: 0;
margin-top: 2px;
cursor: pointer;
}

.form-consent label {
font-size: .85rem;
color: rgba(255,255,255,.55);
cursor: pointer;
}

.form-consent a { color: var(–green-light); text-decoration: underline; }

.btn-submit {
width: 100%;
background: var(–green-light);
color: var(–green-deep);
border: none;
padding: 18px 32px;
border-radius: 99px;
font-family: ‘DM Sans’, sans-serif;
font-weight: 700;
font-size: 1.05rem;
cursor: pointer;
transition: var(–transition);
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
}

.btn-submit:hover { background: var(–white); transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,.3); }

.form-success {
display: none;
text-align: center;
padding: 40px;
color: var(–white);
}

.form-success .success-icon { font-size: 3rem; margin-bottom: 16px; }
.form-success h3 { color: var(–white); margin-bottom: 10px; }
.form-success p { color: rgba(255,255,255,.6); }

/* =============================================
ABOUT
============================================= */
#about { background: var(–white); }

.about-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 80px;
align-items: center;
}

.about-img-wrap {
position: relative;
}

.about-img-block {
background: linear-gradient(135deg, var(–green-deep), var(–green-mid));
border-radius: var(–radius-lg);
aspect-ratio: 4/5;
display: flex;
align-items: center;
justify-content: center;
font-size: 6rem;
position: relative;
overflow: hidden;
}

.about-img-block::after {
content:  »;
position: absolute;
inset: 0;
background: radial-gradient(ellipse at 30% 70%, rgba(153,191,100,.3), transparent 60%);
}

.about-cert-badge {
position: absolute;
bottom: -20px;
right: -20px;
background: var(–white);
border-radius: var(–radius-md);
padding: 18px 22px;
box-shadow: var(–shadow-lg);
text-align: center;
}

.about-cert-badge strong {
display: block;
font-size: 1.3rem;
color: var(–green-deep);
font-family: ‘DM Serif Display’, serif;
}

.about-cert-badge span {
font-size: .72rem;
color: var(–text-light);
text-transform: uppercase;
letter-spacing: .07em;
}

.about-content .section-sub { max-width: 100%; margin-bottom: 28px; }

.about-creds {
display: flex;
flex-direction: column;
gap: 14px;
margin-top: 32px;
}

.cred-item {
display: flex;
align-items: flex-start;
gap: 14px;
padding: 16px;
background: var(–cream);
border-radius: var(–radius-sm);
}

.cred-item-icon {
width: 38px; height: 38px;
background: var(–green-pale);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1rem;
flex-shrink: 0;
}

.cred-item strong { display: block; font-size: .92rem; color: var(–text-dark); margin-bottom: 2px; }
.cred-item span { font-size: .8rem; color: var(–text-light); }

/* =============================================
FOOTER
============================================= */
footer {
background: var(–green-deep);
color: rgba(255,255,255,.6);
padding: 64px 0 32px;
}

.footer-grid {
display: grid;
grid-template-columns: 1.8fr 1fr 1fr 1.2fr;
gap: 48px;
padding-bottom: 48px;
border-bottom: 1px solid rgba(255,255,255,.1);
margin-bottom: 32px;
}

.footer-brand p { font-size: .88rem; margin: 16px 0; line-height: 1.7; }

.footer-socials { display: flex; gap: 10px; }
.social-btn {
width: 36px; height: 36px;
background: rgba(255,255,255,.08);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1rem;
transition: var(–transition);
}
.social-btn:hover { background: var(–green-light); }

.footer-col h5 {
color: var(–white);
font-size: .82rem;
font-weight: 700;
letter-spacing: .1em;
text-transform: uppercase;
margin-bottom: 20px;
}

.footer-col ul { list-style: none; display: flex; flex-direction: column; gap: 10px; }
.footer-col ul li a { font-size: .88rem; transition: color var(–transition); }
.footer-col ul li a:hover { color: var(–white); }

.footer-contact-item {
display: flex;
gap: 10px;
align-items: flex-start;
font-size: .88rem;
margin-bottom: 10px;
}

.footer-contact-item a { color: rgba(255,255,255,.6); transition: color var(–transition); }
.footer-contact-item a:hover { color: var(–white); }

.footer-bottom {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 12px;
font-size: .8rem;
}

.footer-bottom a { color: rgba(255,255,255,.4); transition: color var(–transition); }
.footer-bottom a:hover { color: var(–white); }

/* =============================================
MOBILE NAV
============================================= */
.mobile-menu {
display: none;
position: fixed;
top: 68px; left: 0; right: 0;
background: var(–green-deep);
border-top: 1px solid rgba(255,255,255,.08);
z-index: 99;
padding: 20px 24px;
flex-direction: column;
gap: 4px;
}

.mobile-menu.open { display: flex; }
.mobile-menu a { color: rgba(255,255,255,.8); padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,.06); font-size: 1rem; }
.mobile-menu a:last-child { border-bottom: none; }

/* =============================================
RESPONSIVE
============================================= */
@media (max-width: 1024px) {
.hero-float { display: none; }
.footer-grid { grid-template-columns: 1fr 1fr; }
.about-grid { gap: 48px; }
}

@media (max-width: 768px) {
.nav-links { display: none; }
.hamburger { display: flex; }
.btn-nav { display: none; }
.nav-phone-num { display: none; }
.nav-phone { padding: 6px 10px; }

section { padding: 64px 0; }

.services-grid { grid-template-columns: 1fr; }
.service-card.featured { grid-column: auto; }
.form-grid { grid-template-columns: 1fr; }
.about-grid { grid-template-columns: 1fr; }
.about-img-wrap { display: none; }
.footer-grid { grid-template-columns: 1fr; gap: 32px; }
.form-wrapper { padding: 32px 24px; }
.hero-cta { flex-direction: column; }
.btn-primary, .btn-outline { text-align: center; justify-content: center; }
.timeline::before { left: 60px; }
.tl-year { width: 120px; font-size: 1.2rem; }
}
/* =============================================
WHY CARDS
============================================= */
.why-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 20px;
}

.why-card {
background: var(–white);
border-radius: var(–radius-lg);
padding: 36px 28px;
border: 1.5px solid var(–cream-dark);
transition: var(–transition);
text-align: center;
}

.why-card:hover {
transform: translateY(-6px);
box-shadow: var(–shadow-md);
border-color: var(–green-light);
}

.why-num {
font-size: 2.4rem;
margin-bottom: 16px;
}

.why-card h4 {
font-size: 1rem;
font-weight: 700;
color: var(–green-deep);
margin-bottom: 10px;
}

.why-card p { font-size: .88rem; }

@media (max-width: 900px) {
.why-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 500px) {
.why-grid { grid-template-columns: 1fr; }
}
</style>

<!– ===================== NAV ===================== –>
<nav>
<a href= »# » class= »nav-logo »>
<div class= »nav-logo-mark »>
<svg viewBox= »20 12 110 130″ xmlns= »http://www.w3.org/2000/svg »><path fill= »#566C2F » d= »M27.9,100.2c-0.7-11.5,1.9-23.6,7-35c-3.9,5.8-7,12.1-9.4,18.6c-13.5,38.7,6,65.2,45.7,44.4c0.1-0.1,0.2-0.1,0.3-0.1c0.5-0.3,1-0.6,1.5-0.8c2.7-1.5,5.3-3.2,7.8-5.1c0.4-0.3,0.7-0.5,1.1-0.8c0.1-0.1,0.2-0.2,0.3-0.2c2.5-1.9,5-4,7.3-6.2c-3.9,3.4-8.1,6.4-12.5,8.9C50.5,138.9,29.5,128.8,27.9,100.2z »/><path fill= »#99BF64″ d= »M123.1,47.8c-1.6-28.8-22.6-39.2-49-24.3c-0.9,0.5-1.7,1-2.6,1.5c26.8-8.1,52.5-0.7,50.4,34.9c-0.2,3.4-0.7,6.7-1.3,10.1C122.6,62.7,123.5,55.1,123.1,47.8L123.1,47.8z »/><path fill= »#99BF64″ d= »M66.6,34.9c-12.8,7.3-23.8,17.8-31.8,30.2c-5,11.4-7.6,23.6-7,35c1.6,28.5,22.6,38.7,49.1,23.6c4.4-2.5,8.6-5.5,12.5-8.9c0.7-0.6,1.3-1.2,1.9-1.9c14.2-14.1,24.4-33,25.9-53.2C119,25.8,92.6,20.1,66.6,34.9L66.6,34.9z M67.5,97.4H51.1V81h16.4V97.4z M67.5,75.4H51.1V59h16.4V75.4z M89.5,97.4H73.1V81h16.4V97.4z M89.5,75.4H73.1V59h16.4V75.4z »/><rect x= »51.1″ y= »81″ fill= »#FFFFFF » width= »16.4″ height= »16.4″/><rect x= »73.1″ y= »81″ fill= »#FFFFFF » width= »16.4″ height= »16.4″/><rect x= »51.1″ y= »59″ fill= »#FFFFFF » width= »16.4″ height= »16.4″/><rect x= »73.1″ y= »59″ fill= »#FFFFFF » width= »16.4″ height= »16.4″/></svg>
</div>
<span class= »nav-logo-text »>Oval<span>Energy</span></span>
</a>

<ul class= »nav-links »>
<li><a href= »#process » >Comment ça marche</a></li>
<li><a href= »#services » >Services</a></li>
<li><a href= »#pricing » >Tarifs</a></li>
<li><a href= »#about » >À propos</a></li>
</ul>

<div class= »nav-right »>
<a href= »tel:+32477681147″ class= »nav-phone »>📞 <span class= »nav-phone-num »>+32 477 68 11 47</span></a> <a href= »#appointment » class= »btn-nav »>Prendre RDV</a>

<button class= »hamburger » onclick= »toggleMenu() » aria-label= »Menu »>
<span></span><span></span><span></span>
</button>
</div>
</nav>

<div class= »mobile-menu » id= »mobile-menu »>
<a href= »#process » onclick= »toggleMenu() » >Comment ça marche</a>

<a href= »#services » onclick= »toggleMenu() » >Services</a>

<a href= »#pricing » onclick= »toggleMenu() » >Tarifs</a>

<a href= »#about » onclick= »toggleMenu() » >À propos</a>

<a href= »#appointment » onclick= »toggleMenu() » >📅 Prendre rendez-vous</a>

</div>

<!– ===================== HERO ===================== –>
<section id= »hero »>
<div class= »hero-bg »></div>
<div class= »hero-pattern »></div>

<div class= »container »>
<div class= »hero-content hero-content-full »>
<div class= »hero-badge »>⚡ Réponse rapide · Certificateur agréé Bruxelles</div>

<h1 class= »hero-title »>
Votre certificat PEB<br><em>sans attendre</em>
</h1>

<p class= »hero-sub »>
Olivier vous recontacte <strong style= »color:var(–green-light) »>sous 24h</strong> et organise la visite dans les 5 jours. Certificateur agréé (CREPP 1813534) — <strong style= »color:var(–green-light) »>aucun acompte</strong> demandé, vous ne payez qu’après accord.
</p>

<div class= »hero-cta »>
<a href= »#appointment » class= »btn-primary »>📅 Demander un rendez-vous</a>

<a href= »tel:+32477681147″ class= »btn-outline »>📞 Appeler Olivier</a>

</div>

<!– Hero timeline: 7 steps –>
<div class= »hero-timeline »>
<div class= »hero-tl-step »>
<div class= »hero-tl-icon »>€</div>
<div class= »hero-tl-label »>Commande<br><span>Pas d’acompte</span></div>

</div>
<div class= »hero-tl-step »>
<div class= »hero-tl-icon »>📅</div>
<div class= »hero-tl-label »>RDV<br><span>Sous 24h</span></div>

</div>
<div class= »hero-tl-step »>
<div class= »hero-tl-icon »>🏠</div>
<div class= »hero-tl-label »>Visite<br><span>Sous 5 jours</span></div>

</div>
<div class= »hero-tl-step »>
<div class= »hero-tl-icon »>🔍</div>
<div class= »hero-tl-label »>Recherche<br><span>Preuves & infos</span></div>

</div>
<div class= »hero-tl-step »>
<div class= »hero-tl-icon »>📄</div>
<div class= »hero-tl-label »>Projet PEB<br><span>Sous 3 jours</span></div>

</div>
<div class= »hero-tl-step »>
<div class= »hero-tl-icon »>💡</div>
<div class= »hero-tl-label »>Debriefing<br><span>Conseils</span></div>

</div>
<div class= »hero-tl-step »>
<div class= »hero-tl-icon »>✅</div>
<div class= »hero-tl-label »>PEB définitif<br><span>10 ans valable</span></div>

</div>
</div>

<div class= »trust-card trust-card-inline »>
<div class= »trust-icon »>🛡️</div>
<div>
<strong>RC Professionnelle</strong>

<span>AXA Belgium n° 730.654.767</span>
</div>
</div>
</div>
</div>
</section>

<!– ===================== PROCESS ===================== –>
<section id= »process »>
<div class= »container »>
<div class= »section-header centered »>
<span class= »section-label »>Processus</span>

<h2 class= »section-title »>Comment ça se passe ?</h2>

<p class= »section-sub »>De la demande à la remise du certificat, voici les 4 étapes clés.</p>

</div>

<div class= »steps-grid » style= »grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); »>
<div class= »step-card »>
<div class= »step-num »>01</div>
<div class= »step-icon »>€</div>
<div class= »step-title »>Commande — pas d’acompte</div>

<p>Envoyez votre demande en ligne. Aucun acompte n’est demandé. Vous ne payez qu’après la visite.</p>

</div>

<div class= »step-card »>
<div class= »step-num »>02</div>
<div class= »step-icon »>📅</div>
<div class= »step-title »>RDV sous 24h</div>

<p>Olivier vous recontacte dans les 24 heures pour fixer la date et vous communiquer la liste des documents à préparer.</p>

</div>

<div class= »step-card »>
<div class= »step-num »>03</div>
<div class= »step-icon »>🏠</div>
<div class= »step-title »>Visite dans les 5 jours</div>

<p>Visite complète du bien. Relevé volumétrique, analyse des installations, vérification de tous les documents disponibles.</p>

</div>

<div class= »step-card »>
<div class= »step-num »>04</div>
<div class= »step-icon »>🔍</div>
<div class= »step-title »>Recherche technique</div>

<p>Recherche approfondie des preuves et informations techniques permettant d’atteindre le meilleur score PEB possible.</p>

</div>

<div class= »step-card »>
<div class= »step-num »>05</div>
<div class= »step-icon »>📄</div>
<div class= »step-title »>Projet PEB sous 3 jours</div>

<p>Remise du projet de certificat PEB + envoi de la facture dans les 3 jours suivant la visite.</p>

</div>

<div class= »step-card »>
<div class= »step-num »>06</div>
<div class= »step-icon »>💡</div>
<div class= »step-title »>Debriefing & solutions</div>

<p>Debriefing complet avec conseils personnalisés pour améliorer votre score PEB et guider vos futures rénovations.</p>

</div>

<div class= »step-card »>
<div class= »step-num »>07</div>
<div class= »step-icon »>✅</div>
<div class= »step-title »>Accord + paiement = PEB définitif</div>

<p>Après accord et paiement des honoraires, publication et remise du certificat PEB définitif. Valable 10 ans.</p>

</div>
</div>

<!– Process diagram from original site –>
</div>
</section>

<!– ===================== SERVICES ===================== –>
<section id= »services »>
<div class= »container »>
<div class= »section-header »>
<span class= »section-label »>Services</span>

<h2 class= »section-title »>Notre expertise à votre service</h2>

<p class= »section-sub »>Au-delà du simple certificat, nous vous accompagnons dans votre démarche énergétique complète.</p>

</div>

<div class= »services-grid »>
<div class= »service-card featured »>
<div class= »svc-icon svc-icon-peb »>
<svg viewBox= »0 0 100 70″ class= »mini-peb-scale »>
<rect x= »0″ y= »0″ width= »34″ height= »8″ rx= »2″ fill= »#1a9e3f »/>
<rect x= »0″ y= »10″ width= »44″ height= »8″ rx= »2″ fill= »#5bc43c »/>
<rect x= »0″ y= »20″ width= »54″ height= »8″ rx= »2″ fill= »#a8d63a »/>
<rect x= »0″ y= »30″ width= »64″ height= »8″ rx= »2″ fill= »#f0e93c »/>
<rect x= »0″ y= »40″ width= »74″ height= »8″ rx= »2″ fill= »#f5a623″/>
<rect x= »0″ y= »50″ width= »84″ height= »8″ rx= »2″ fill= »#e8622a »/>
<rect x= »0″ y= »60″ width= »94″ height= »8″ rx= »2″ fill= »#cc1a1a »/>
</svg>
</div>
<h3>Certificat PEB — Vente & Location</h3>

<p>Notre service phare. Obligatoire avant toute mise en vente ou location, le certificat PEB est établi par notre certificateur agréé (CREPP 1813534) selon le protocole Bruxelles Environnement.</p>

<ul class= »svc-list »>
<li>Visite et analyse détaillée de l’habitation</li>

<li>Plan volumétrique complet avec surfaces de déperdition</li>

<li>Vérification et prise en compte de toutes les preuves documentaires</li>

<li>Certificat provisoire en 5 jours ouvrables + publication du définitif</li>

<li>Debriefing, réponses à vos questions et conseils</li>

</ul>
</div>

<div class= »service-card »>
<div class= »svc-icon »>🔍</div>
<h3>Audit & Conseil énergétique</h3>

<p>Simulation PEB avant/après travaux. Rapport chiffré et réaliste sur les rénovations à réaliser. Accompagnement pour les primes Rénolution.</p>

<ul class= »svc-list »>
<li>Simulation avant/après travaux</li>

<li>Accompagnement primes Rénolution</li>

<li>Suivi de chantier</li>

</ul>
</div>

<div class= »service-card »>
<div class= »svc-icon »>🏢</div>
<h3>Copropriétés & Syndics</h3>

<p>Accompagnement des syndics et copropriétés vers la transition énergétique. Gestion des parties communes et chaudières collectives.</p>

<ul class= »svc-list »>
<li>PEB parties communes</li>

<li>Coordination avec le syndic</li>

<li>Plan de rénovation collectif</li>

</ul>
</div>
</div>
</div>
</section>

<!– ===================== DOCUMENTS ===================== –>
<section id= »documents »>
<div class= »container »>
<div class= »section-header »>
<span class= »section-label »>Maximisez votre score</span>

<h2 class= »section-title »>Mettez toutes les chances de votre côté</h2>

<p class= »section-sub »>Vous n’avez pas besoin de tout réunir avant la visite — mais chaque document que vous nous transmettez est une preuve de plus en faveur de votre bien. Plus nous avons d’éléments, meilleure est la précision (et souvent le score) de votre certificat PEB.</p>

</div>

<div class= »docs-grid »>
<div class= »doc-card »>
<div class= »doc-card-icon »>📐</div>
<h4>Plans du bien</h4>

<p>Un plan d’exécution ou as-built nous évite de tout remesurer et accélère la visite — et des plans conformes PEB donnent même droit à une réduction.</p>

</div>
<div class= »doc-card »>
<div class= »doc-card-icon »>📜</div>
<h4>Historique du bien</h4>

<p>Permis d’urbanisme, acte de base ou acte notarié : autant d’indices qui aident à dater les éléments du bâtiment en votre faveur.</p>

</div>
<div class= »doc-card »>
<div class= »doc-card-icon »>🔧</div>
<h4>Chauffage & équipements</h4>

<p>Un carnet d’entretien de chaudière ou une fiche technique récente peut faire pencher la balance vers un meilleur score.</p>

</div>
<div class= »doc-card »>
<div class= »doc-card-icon »>🧾</div>
<h4>Travaux de rénovation</h4>

<p>Isolation, châssis, toiture : une facture ou un devis de travaux déjà réalisés permet de les valoriser directement dans le certificat.</p>

</div>
<div class= »doc-card »>
<div class= »doc-card-icon »>📷</div>
<h4>Photos utiles</h4>

<p>Une photo d’un isolant posé ou d’un châssis remplacé peut suffire à prouver un élément qu’on ne voit plus une fois fini.</p>

</div>
<div class= »doc-card »>
<div class= »doc-card-icon »>💰</div>
<h4>Primes & audits existants</h4>

<p>Une demande de prime ou un audit énergétique déjà réalisé nous donne des données précieuses pour affiner votre certificat.</p>

</div>
</div>

<div class= »doc-download »>
<p>Téléchargez les fiches officielles de Bruxelles Environnement</p>

<div style= »display:flex;gap:12px;justify-content:center;flex-wrap:wrap; »>
<a href= »https://www.ovalenergy.be/wp-content/uploads/2024/01/La-visite-du-certificateur-Info-fiche_BE.pdf » target= »_blank » class= »btn-light »>
📥 <span>La visite du certificateur</span>
</a>
<a href= »https://www.ovalenergy.be/wp-content/uploads/2024/01/Coproprietaire-PEB-Info-Fiche-BE.pdf » target= »_blank » class= »btn-light »>
📥 <span>Copropriétaires & PEB</span>
</a>
</div>
</div>
</div>
</section>

<!– ===================== REGULATION ===================== –>
<section id= »regulation »>
<div class= »container »>
<!– Top: intro + pie chart side by side –>
<div class= »reg-intro-grid »>
<div class= »reg-intro-text »>
<span class= »section-label »>Réglementation</span>

<h2 class= »section-title »>Pourquoi rénover maintenant ?</h2>

<p class= »section-sub »>Bruxelles a un Plan Climat ambitieux. Les dates butoirs se rapprochent — anticiper, c’est économiser.</p>

<div class= »reg-scale-wrap »>
<img src= »data:image/svg+xml;utf8,<svg xmlns= »http://www.w3.org/2000/svg » width= »600″ height= »300″><rect width= »600″ height= »300″ fill= »%23D5E3BF »/><text x= »50% » y= »50% » font-family= »sans-serif » font-size= »20″ fill= »%23566C2F » text-anchor= »middle » dominant-baseline= »middle »>IMAGE+%3A+Echelle+PEB+A-G</text></svg> » alt= »Échelle des classes énergétiques PEB A à G — kWh/m²/an » class= »reg-scale-img » />
</div>
</div>
<div class= »reg-pie-wrap »>
<img src= »data:image/svg+xml;utf8,<svg xmlns= »http://www.w3.org/2000/svg » width= »600″ height= »300″><rect width= »600″ height= »300″ fill= »%23D5E3BF »/><text x= »50% » y= »50% » font-family= »sans-serif » font-size= »20″ fill= »%23566C2F » text-anchor= »middle » dominant-baseline= »middle »>IMAGE+%3A+Camembert+PEB</text></svg> » alt= »Répartition des classes énergétiques des certificats PEB à Bruxelles » class= »reg-pie-img » />
<p class= »reg-pie-caption »>Répartition des classes PEB à Bruxelles — 30% des logements sont en classe G</p>

</div>
</div>

<div class= »timeline »>
<div class= »tl-item »><div class= »tl-year »>2025</div><div class= »tl-content »><h4>PEB obligatoire pour les copropriétés</h4><p>Tous les immeubles en copropriété doivent posséder un certificat PEB pour leurs parties communes.</p></div></div>
<div class= »tl-item »><div class= »tl-year »>2030</div><div class= »tl-content »><h4>Certification universelle</h4><p>Chaque logement, même occupé par son propriétaire, devra disposer d’un certificat PEB valide.</p></div></div>
<div class= »tl-item »><div class= »tl-year »>2031</div><div class= »tl-content »><h4>Fin des combustibles fossiles (rénov. lourde)</h4><p>Fin du chauffage aux combustibles fossiles pour les bâtiments faisant l’objet d’une rénovation lourde.</p></div></div>
<div class= »tl-item »><div class= »tl-year »>2033</div><div class= »tl-content »><h4>Fin des passoires énergétiques F & G</h4><p>Objectif 275 kWh/m²/an maximum. Interdiction de louer les logements classés F et G.</p></div></div>
<div class= »tl-item »><div class= »tl-year »>2040</div><div class= »tl-content »><h4>Sortie complète du mazout</h4><p>Interdiction totale des chaudières au mazout. Transition obligatoire vers les énergies renouvelables.</p></div></div>
<div class= »tl-item »><div class= »tl-year »>2045</div><div class= »tl-content »><h4>Fin des classes D & E</h4><p>Neutralité carbone visée pour l’ensemble du parc immobilier bruxellois d’ici 2050.</p></div></div>
</div>
</div>
</section>

<!– ===================== PRICING ===================== –>
<section id= »pricing »>
<div class= »container »>
<div class= »section-header centered »>
<span class= »section-label »>Tarifs</span>

<h2 class= »section-title »>Honoraires clairs, sans surprise</h2>

<p class= »section-sub »>Tarifs HTVA 21%. Surfaces mesurées selon le protocole PEB. Aucun acompte demandé — vous payez après accord.</p>

</div>

<!– Tariff tables –>
<div class= »tariff-wrap »>

<!– Appartement / Studio –>
<div class= »tariff-block »>
<div class= »tariff-header »>
<span class= »tariff-icon »>🏢</span>
<div>
<h3>Appartement / Studio</h3>

</div>
</div>
<table class= »tariff-table »>
<thead>
<tr>
<th>Surface PEB</th>

<th>Tarif HTVA</th>

<th>Duplex / Triplex / Mansarde</th>

</tr>
</thead>
<tbody>
<tr><td>&lt; 50 m²</td><td>170 €</td><td>190 €</td></tr>
<tr><td>51 – 75 m²</td><td>190 €</td><td>210 €</td></tr>
<tr><td>76 – 100 m²</td><td>210 €</td><td>230 €</td></tr>
<tr><td>101 – 125 m²</td><td>250 €</td><td>275 €</td></tr>
<tr><td>126 – 150 m²</td><td>295 €</td><td>325 €</td></tr>
<tr><td>151 – 175 m²</td><td>360 €</td><td>395 €</td></tr>
<tr><td>176 – 200 m²</td><td>385 €</td><td>425 €</td></tr>
<tr><td>&gt; 201 m²</td><td>+ 1,40 € / m²</td><td>+ 1,40 € / m²</td></tr>
<tr><td>Immeuble &gt; 300 m²</td><td>+ 0,70 € / m²</td><td>+ 0,70 € / m²</td></tr>
</tbody>
</table>
</div>

<!– Maison unifamiliale –>
<div class= »tariff-block »>
<div class= »tariff-header »>
<span class= »tariff-icon »>🏡</span>
<div>
<h3>Maison unifamiliale</h3>

</div>
</div>
<table class= »tariff-table »>
<thead>
<tr>
<th>Surface PEB</th>

<th>Tarif HTVA</th>

</tr>
</thead>
<tbody>
<tr><td>&lt; 150 m²</td><td>295 €</td></tr>
<tr><td>151 – 200 m²</td><td>395 €</td></tr>
<tr><td>201 – 250 m²</td><td>495 €</td></tr>
<tr><td>251 – 350 m²</td><td>585 €</td></tr>
<tr><td>351 – 400 m²</td><td>640 €</td></tr>
<tr><td>&gt; 401 m²</td><td>+ 0,70 € / m²</td></tr>
</tbody>
</table>
</div>

</div><!– /tariff-wrap –>

<!– Reductions & extras –>
<div class= »tariff-extras »>
<div class= »tariff-extra green »>
<div class= »te-icon »>🏢</div>
<div>
<strong>Immeuble / visites groupées</strong>

<span>–10%</span>
</div>
</div>
<div class= »tariff-extra green »>
<div class= »te-icon »>📐</div>
<div>
<strong>Plans conformes remis avant visite</strong>

<span>–10%</span>
</div>
</div>
<div class= »tariff-extra neutral »>
<div class= »te-icon »>🚗</div>
<div>
<strong>Déplacement clé / supplémentaire</strong>

<span>80 € / h</span>
</div>
</div>
<div class= »tariff-extra neutral »>
<div class= »te-icon »>🗺️</div>
<div>
<strong>Plan d’action rénovation</strong>

<span>60 € / lot</span>
</div>
</div>
<div class= »tariff-note »>
<span>⚠️ Réductions non cumulables</span>

</div>
</div>

<!– Audit ACP –>
<div class= »audit-block »>
<div class= »audit-left »>
<span class= »section-label »>Service spécialisé</span>

<h3>Audit énergétique pour ACP <span style= »font-size:.9rem;font-weight:400;font-family:’DM Sans’,sans-serif;color:var(–green-light); »>(sur devis)</span></h3>

<p>Feuille de route pragmatique et économiquement réaliste. Oriente les copropriétaires pour prendre les bonnes décisions en AG.</p>

<ul class= »audit-list »>
<li>Situation PEB actuelle + après travaux par appartement</li>

<li>Gains énergétiques chiffrés par poste de travaux</li>

<li>Estimation des coûts de travaux par poste</li>

<li>Retour sur investissement avec ou sans primes</li>

<li>Recommandations de techniques de rénovation & isolants</li>

<li>Débriefing collectif en AG</li>

</ul>
</div>
<div class= »audit-right »>
<a href= »#appointment » class= »btn-primary » style= »display:inline-flex; »>Demander un devis →</a>

</div>
</div>

<div style= »text-align:center;margin-top:40px; »>
<a href= »https://www.ovalenergy.be/wp-content/uploads/2026/04/OVAL-ENERGY-tarifs-PEB-260401.pdf » target= »_blank » class= »btn-primary » style= »display:inline-flex;background:var(–green-deep);color:var(–white); »>
📥 <span>Télécharger la grille tarifaire complète (PDF)</span>
</a>
</div>
</div>
</section>

<!– ===================== WHY US ===================== –>
<section id= »why » style= »background:var(–cream);padding:80px 0; »>
<div class= »container »>
<div class= »section-header centered »>
<span class= »section-label »>Nos engagements</span>

<h2 class= »section-title »>Pourquoi choisir Ovalenergy ?</h2>

</div>
<div class= »why-grid »>
<div class= »why-card »>
<div class= »why-num »>⚡</div>
<h4>Rapidité d’exécution</h4>

<p>RDV sous 24h, visite dans les 5 jours, projet PEB remis sous 3 jours. Aucun acompte demandé.</p>

</div>
<div class= »why-card »>
<div class= »why-num »>🔎</div>
<h4>Le devoir d’enquête, notre priorité</h4>

<p>Recherche approfondie de toutes les preuves documentaires pour atteindre le meilleur score PEB possible.</p>

</div>
<div class= »why-card »>
<div class= »why-num »>📈</div>
<h4>Vendre & louer plus facilement</h4>

<p>Conseils concrets pour améliorer votre score PEB et ainsi vendre ou louer votre bien plus rapidement et à meilleur prix.</p>

</div>
<div class= »why-card »>
<div class= »why-num »>💡</div>
<h4>Solutions concrètes</h4>

<p>Nous ne nous arrêtons pas au certificat. Nous proposons des solutions énergétiques adaptées à votre situation et votre budget.</p>

</div>
</div>
</div>
</section>

<!– ===================== APPOINTMENT FORM ===================== –>
<section id= »appointment »>
<div class= »container »>
<div class= »section-header » style= »max-width:600px; »>
<span class= »section-label »>Rendez-vous</span>

<h2 class= »section-title »>Demander votre certificat PEB</h2>

<p class= »section-sub »>Remplissez ce formulaire. Olivier vous recontacte sous 24h pour fixer la date de visite.</p>

</div>

<div class= »form-wrapper »>
<div id= »form-success » class= »form-success »>
<div class= »success-icon »>✅</div>
<h3>Demande reçue !</h3>

<p>Merci pour votre demande. Olivier vous contacte dans les 24 heures pour confirmer le rendez-vous.</p>

</div>

<!– IMPORTANT: Replace YOUR_FORM_ID with your Formspree form ID after creating it at formspree.io –>
<form id= »peb-form » action= »https://formspree.io/f/YOUR_FORM_ID » method= »POST » enctype= »multipart/form-data »>

<!– Section 1: Demandeur –>
<div class= »form-section-title »>👤 Informations du demandeur</div>

<div class= »form-grid »>
<div class= »form-group »>
<label for= »f-name »><span>Nom & Prénom</span> <em>*</em></label>
<input type= »text » id= »f-name » name= »Nom_Prénom » placeholder= »Ex: Peters Olivier » required />
</div>
<div class= »form-group »>
<label for= »f-phone »><span>Téléphone</span> <em>*</em></label>
<input type= »tel » id= »f-phone » name= »Téléphone » placeholder= »+32 4XX XX XX XX » required />
</div>
<div class= »form-group »>
<label for= »f-email »><span>Email</span> <em>*</em></label>
<input type= »email » id= »f-email » name= »Email » placeholder= »email@exemple.be » required />
</div>
<div class= »form-group »>
<label for= »f-role »><span>Vous êtes</span> <em>*</em></label>
<select id= »f-role » name= »Qualité_demandeur » required>
<option value= » » disabled selected>Choisir…</option>
<option value= »Propriétaire occupant »>Propriétaire occupant</option>
<option value= »Propriétaire bailleur »>Propriétaire bailleur</option>
<option value= »Agent immobilier »>Agent immobilier</option>
<option value= »Notaire »>Notaire</option>
<option value= »Syndic »>Syndic</option>
<option value= »Autre »>Autre</option> </select>
</div>
</div>

<hr class= »form-divider » />

<!– Section 2: Bien immobilier –>
<div class= »form-section-title »>🏠 Le bien immobilier</div>

<div class= »form-grid »>
<div class= »form-group form-full »>
<label for= »f-address »><span>Adresse complète du bien</span> <em>*</em></label>
<input type= »text » id= »f-address » name= »Adresse_bien » placeholder= »Ex: Rue de la Loi 1, 1000 Bruxelles » required />
</div>
<div class= »form-group »>
<label for= »f-type »><span>Type de bien</span> <em>*</em></label>
<select id= »f-type » name= »Type_bien » required>
<option value= » » disabled selected>Choisir…</option>
<option value= »Appartement »>Appartement</option>
<option value= »Maison unifamiliale »>Maison unifamiliale</option>
<option value= »Duplex »>Duplex</option>
<option value= »Penthouse »>Penthouse</option>
<option value= »Maison de rapport »>Maison de rapport</option>
<option value= »Copropriété »>Copropriété / Immeuble</option> </select>
</div>
<div class= »form-group »>
<label for= »f-surface »><span>Surface approximative</span></label>
<input type= »text » id= »f-surface » name= »Surface_m2″ placeholder= »Ex: 85 m² » />
</div>
<div class= »form-group »>
<label for= »f-purpose »><span>Objet de la demande</span> <em>*</em></label>
<select id= »f-purpose » name= »Objet » required>
<option value= » » disabled selected>Choisir…</option>
<option value= »Vente »>Vente</option>
<option value= »Location »>Location</option>
<option value= »Vente et location »>Vente et location</option>
<option value= »Audit conseil »>Audit / Conseil énergétique</option> </select>
</div>
<div class= »form-group »>
<label for= »f-urgency »><span>Délai souhaité</span></label>
<select id= »f-urgency » name= »Délai »>
<option value= »Flexible »>Flexible</option>
<option value= »Sous 2 semaines »>Sous 2 semaines</option>
<option value= »Sous 1 semaine »>Sous 1 semaine (urgent)</option> </select>
</div>
</div>

<hr class= »form-divider » />

<!– Section 3: Propriétaire & locataire –>
<div class= »form-section-title »>👥 Parties prenantes (si différent du demandeur)</div>

<div class= »form-grid »>
<div class= »form-group »>
<label for= »f-owner »><span>Nom du propriétaire</span></label>
<input type= »text » id= »f-owner » name= »Propriétaire_nom » placeholder= »Si différent du demandeur » />
</div>
<div class= »form-group »>
<label for= »f-owner-tel »><span>Tél. propriétaire</span></label>
<input type= »tel » id= »f-owner-tel » name= »Propriétaire_tel » placeholder= »+32 4XX XX XX XX » />
</div>
<div class= »form-group »>
<label for= »f-tenant »><span>Nom du locataire / occupant</span></label>
<input type= »text » id= »f-tenant » name= »Locataire_nom » placeholder= »Si le bien est occupé » />
</div>
<div class= »form-group »>
<label for= »f-tenant-tel »><span>Tél. locataire / occupant</span></label>
<input type= »tel » id= »f-tenant-tel » name= »Locataire_tel » placeholder= »+32 4XX XX XX XX » />
</div>
<div class= »form-group »>
<label for= »f-syndic »><span>Syndic (copropriété)</span></label>
<input type= »text » id= »f-syndic » name= »Syndic » placeholder= »Nom & contact si applicable » />
</div>
<div class= »form-group »>
<label for= »f-access »><span>Accès au bien</span></label>
<select id= »f-access » name= »Accès »>
<option value= »Clé disponible »>Clé disponible</option>
<option value= »Présence occupant »>Présence de l’occupant</option>
<option value= »Digicode / Badge »>Digicode / Badge</option>
<option value= »À organiser »>À organiser</option> </select>
</div>
</div>

<hr class= »form-divider » />

<!– Section 4: Upload documents –>
<div class= »form-section-title »>📎 Envoyez vos documents (optionnel mais recommandé)</div>

<p style= »font-size:.82rem;color:rgba(255,255,255,.45);margin-bottom:20px; » >Plus vous envoyez de documents, plus le certificat sera précis. Formats acceptés : PDF, JPG, PNG, DWG. Max 10 Mo par fichier.</p>

<div class= »upload-grid »>
<div class= »upload-zone » id= »zone-plans »>
<input type= »file » name= »plans » multiple accept= ».pdf,.jpg,.jpeg,.png,.dwg » onchange= »updateZone(this,’zone-plans’) » />
<div class= »upload-icon »>📐</div>
<h5>Plans du bien</h5>

<p>PDF, DWG, JPG</p>

<div class= »file-count » id= »count-plans »></div>
</div>

<div class= »upload-zone » id= »zone-propri »>
<input type= »file » name= »documents_propriete » multiple accept= ».pdf,.jpg,.jpeg,.png » onchange= »updateZone(this,’zone-propri’) » />
<div class= »upload-icon »>📜</div>
<h5>Docs de propriété</h5>

<p>Permis, actes, PU</p>

<div class= »file-count » id= »count-propri »></div>
</div>

<div class= »upload-zone » id= »zone-install »>
<input type= »file » name= »installations » multiple accept= ».pdf,.jpg,.jpeg,.png » onchange= »updateZone(this,’zone-install’) » />
<div class= »upload-icon »>🔧</div>
<h5>Chaudière & installations</h5>

<p>Entretien, diagnostics</p>

<div class= »file-count » id= »count-install »></div>
</div>

<div class= »upload-zone » id= »zone-travaux »>
<input type= »file » name= »travaux_factures » multiple accept= ».pdf,.jpg,.jpeg,.png » onchange= »updateZone(this,’zone-travaux’) » />
<div class= »upload-icon »>🧾</div>
<h5>Factures & travaux</h5>

<p>Factures, devis, attestations</p>

<div class= »file-count » id= »count-travaux »></div>
</div>

<div class= »upload-zone » id= »zone-photos »>
<input type= »file » name= »photos » multiple accept= ».jpg,.jpeg,.png » onchange= »updateZone(this,’zone-photos’) » />
<div class= »upload-icon »>📷</div>
<h5>Photos du bien</h5>

<p>JPG, PNG</p>

<div class= »file-count » id= »count-photos »></div>
</div>

<div class= »upload-zone » id= »zone-other »>
<input type= »file » name= »autres_documents » multiple accept= ».pdf,.jpg,.jpeg,.png,.dwg » onchange= »updateZone(this,’zone-other’) » />
<div class= »upload-icon »>📁</div>
<h5>Autres documents</h5>

<p>Tout autre document utile</p>

<div class= »file-count » id= »count-other »></div>
</div>
</div>

<hr class= »form-divider » />

<!– Notes –>
<div class= »form-group form-full » style= »margin-bottom:24px; »>
<label for= »f-notes »><span>Remarques ou informations complémentaires</span></label>
<textarea id= »f-notes » name= »Remarques » placeholder= »… »></textarea>
</div>

<!– Consent –>
<div class= »form-consent »>
<input type= »checkbox » id= »f-consent » name= »_consent » required />
<label for= »f-consent » >
J’accepte que mes données soient traitées par Ovalenergy pour le traitement de ma demande, conformément à la <a href= »https://www.ovalenergy.be/mentions-legales/ »>politique de confidentialité</a> et au RGPD. <em>*</em>
</label>

</div>

<!– Hidden fields for Formspree –>
<input type= »hidden » name= »_subject » value= »Nouvelle demande PEB – Ovalenergy » />
<input type= »hidden » name= »_replyto » id= »reply-to » />

<button type= »submit » class= »btn-submit »>
<span>Envoyer ma demande de rendez-vous →</span>

</button>
</form>
</div>
</div>
</section>

<!– ===================== ABOUT ===================== –>
<section id= »about »>
<div class= »container »>
<div class= »about-grid »>
<div class= »about-img-wrap »>
<div class= »about-img-block »>🏗️</div>
<div class= »about-cert-badge »>
<strong>CREPP</strong>
<span>1813534</span>
</div>
</div>

<div class= »about-content »>
<span class= »section-label »>À propos</span>

<h2 class= »section-title »>Olivier Peters, votre certificateur</h2>

<p class= »section-sub »>
Fondateur d’Ovalenergy, Olivier Peters est certificateur PEB agréé par Bruxelles Environnement. Il met son expertise au service des propriétaires, agents immobiliers et syndics de la Région bruxelloise pour des certifications fiables, précises et expliquées.
</p>

<div class= »about-creds »>
<div class= »cred-item »>
<div class= »cred-item-icon »>🛡️</div>
<div>
<strong>Agrément CREPP 1813534</strong>
<span>Agréé par Bruxelles Environnement (IBGE/BIM)</span>

</div>
</div>
<div class= »cred-item »>
<div class= »cred-item-icon »>🏛️</div>
<div>
<strong>TVA BE0647.775.106</strong>
<span>IBAN : BE48 0018 3084 8627</span>

</div>
</div>
<div class= »cred-item »>
<div class= »cred-item-icon »>📋</div>
<div>
<strong>RC Professionnelle</strong>

<span>AXA Belgium n° 730.654.767</span>
</div>
</div>
<div class= »cred-item »>
<div class= »cred-item-icon »>📍</div>
<div>
<strong>Deux adresses à Bruxelles</strong>

<span>Rixensart : Rue du Réservoir 59 · Uccle : Rue J. Hazard 35</span>

</div>
</div>
</div>
</div>
</div>
</div>
</section>

<!– ===================== FOOTER ===================== –>
<footer>
<div class= »container »>
<div class= »footer-grid »>
<div class= »footer-brand »>
<div class= »nav-logo »>
<div class= »nav-logo-mark »>
<svg viewBox= »20 12 110 130″ xmlns= »http://www.w3.org/2000/svg »><path fill= »#566C2F » d= »M27.9,100.2c-0.7-11.5,1.9-23.6,7-35c-3.9,5.8-7,12.1-9.4,18.6c-13.5,38.7,6,65.2,45.7,44.4c0.1-0.1,0.2-0.1,0.3-0.1c0.5-0.3,1-0.6,1.5-0.8c2.7-1.5,5.3-3.2,7.8-5.1c0.4-0.3,0.7-0.5,1.1-0.8c0.1-0.1,0.2-0.2,0.3-0.2c2.5-1.9,5-4,7.3-6.2c-3.9,3.4-8.1,6.4-12.5,8.9C50.5,138.9,29.5,128.8,27.9,100.2z »/><path fill= »#99BF64″ d= »M123.1,47.8c-1.6-28.8-22.6-39.2-49-24.3c-0.9,0.5-1.7,1-2.6,1.5c26.8-8.1,52.5-0.7,50.4,34.9c-0.2,3.4-0.7,6.7-1.3,10.1C122.6,62.7,123.5,55.1,123.1,47.8L123.1,47.8z »/><path fill= »#99BF64″ d= »M66.6,34.9c-12.8,7.3-23.8,17.8-31.8,30.2c-5,11.4-7.6,23.6-7,35c1.6,28.5,22.6,38.7,49.1,23.6c4.4-2.5,8.6-5.5,12.5-8.9c0.7-0.6,1.3-1.2,1.9-1.9c14.2-14.1,24.4-33,25.9-53.2C119,25.8,92.6,20.1,66.6,34.9L66.6,34.9z M67.5,97.4H51.1V81h16.4V97.4z M67.5,75.4H51.1V59h16.4V75.4z M89.5,97.4H73.1V81h16.4V97.4z M89.5,75.4H73.1V59h16.4V75.4z »/><rect x= »51.1″ y= »81″ fill= »#FFFFFF » width= »16.4″ height= »16.4″/><rect x= »73.1″ y= »81″ fill= »#FFFFFF » width= »16.4″ height= »16.4″/><rect x= »51.1″ y= »59″ fill= »#FFFFFF » width= »16.4″ height= »16.4″/><rect x= »73.1″ y= »59″ fill= »#FFFFFF » width= »16.4″ height= »16.4″/></svg>
</div>
<span class= »nav-logo-text »>Oval<span>Energy</span></span>
</div>
<p>Certificateur PEB agréé en Région bruxelloise. Expertise énergétique au service des propriétaires, agents et syndics.</p>

<div class= »footer-socials »>
<a href= »http://linkedin.com/in/olivier-peters-504570aa » target= »_blank » class= »social-btn » title= »LinkedIn »>💼</a>
<a href= »https://www.facebook.com/energy.oval » target= »_blank » class= »social-btn » title= »Facebook »>📘</a>
</div>
</div>

<div class= »footer-col »>
<h5>Navigation</h5>

<ul>
<li><a href= »#process » >Comment ça marche</a></li>
<li><a href= »#services »>Services / Diensten</a></li>
<li><a href= »#documents » >Documents à préparer</a></li>
<li><a href= »#pricing » >Tarifs</a></li>
<li><a href= »#about » >À propos</a></li>
</ul>
</div>

<div class= »footer-col »>
<h5>Légal</h5>

<ul>
<li><a href= »https://www.ovalenergy.be/mentions-legales/ » >Mentions légales & RGPD</a></li>
<li><a href= »https://www.ovalenergy.be/cgv » >Conditions générales</a></li>
<li><a href= »https://www.ovalenergy.be/wp-content/uploads/2026/04/OVAL-ENERGY-tarifs-PEB-260401.pdf » >Grille tarifaire</a></li>
</ul>
</div>

<div class= »footer-col »>
<h5>Contact</h5>
<div class= »footer-contact-item »>
<span>👤</span>
<span>Olivier PETERS</span>
</div>
<div class= »footer-contact-item »>
<span>📞</span>
<a href= »tel:+32477681147″>+32 477 68 11 47</a>
</div>
<div class= »footer-contact-item »>
<span>📧</span>
<a href= »mailto:opeters@ovalenergy.be »>opeters@ovalenergy.be</a>
</div>
<div class= »footer-contact-item »>
<span>📧</span>
<a href= »mailto:info@ovalenergy.be »>info@ovalenergy.be</a>
</div>
<div class= »footer-contact-item »>
<span>📍</span>
<div>
<div>Rixensart : Rue du Réservoir 59, 1330</div>

<div style= »margin-top:4px; »>Bruxelles : Rue Joseph Hazard 35, 1180 Uccle</div>

</div>
</div>
</div>
</div>

<div class= »footer-bottom »>
<span>© 2026 Ovalenergy — CREPP 1813534 — TVA BE0647.775.106</span>
<div style= »display:flex;gap:16px; »>
<a href= »https://www.ovalenergy.be/mentions-legales/ » >Mentions légales</a>

<a href= »https://www.ovalenergy.be/cgv » >CGV</a>

</div>
</div>
</div>
</footer>

<!– ===================== JS ===================== –>
<script>
// Mobile menu
function toggleMenu() {
const m = document.getElementById(‘mobile-menu’);
m.classList.toggle(‘open’);
}

// Close menu on outside click
document.addEventListener(‘click’, function(e) {
const menu = document.getElementById(‘mobile-menu’);
if (menu.classList.contains(‘open’) && !e.target.closest(‘nav’) && !e.target.closest(‘#mobile-menu’)) {
menu.classList.remove(‘open’);
}
});

// Fix anchor link scrolling
document.querySelectorAll(‘a[href^= »# »]’).forEach(anchor => {
anchor.addEventListener(‘click’, function(e) {
const target = document.querySelector(this.getAttribute(‘href’));
if (target) {
e.preventDefault();
const offset = 68; // nav height
const top = target.getBoundingClientRect().top + window.pageYOffset – offset;
window.scrollTo({ top, behavior: ‘smooth’ });
}
});
});

// Smooth nav background on scroll
window.addEventListener(‘scroll’, function() {
document.querySelector(‘nav’).style.background =
window.scrollY > 20
? ‘rgba(26,58,42,.98)’
: ‘rgba(26,58,42,.96)’;
});

// Upload zones feedback
function updateZone(input, zoneId) {
const zone = document.getElementById(zoneId);
const count = document.getElementById(‘count-‘ + zoneId.replace(‘zone-‘,  »));
const n = input.files.length;
if (n > 0) {
zone.classList.add(‘has-files’);
count.textContent = n + (n === 1 ? ‘ fichier’ : ‘ fichiers’);
} else {
zone.classList.remove(‘has-files’);
}
}

// Reply-to field
document.getElementById(‘f-email’).addEventListener(‘input’, function() {
document.getElementById(‘reply-to’).value = this.value;
});

// Form submission with Formspree
const form = document.getElementById(‘peb-form’);
form.addEventListener(‘submit’, async function(e) {
e.preventDefault();
const btn = form.querySelector(‘.btn-submit’);
btn.textContent = ‘Envoi en cours…’;
btn.disabled = true;

try {
const data = new FormData(form);
const resp = await fetch(form.action, {
method: ‘POST’,
body: data,
headers: { ‘Accept’: ‘application/json’ }
});

if (resp.ok) {
form.style.display = ‘none’;
document.getElementById(‘form-success’).style.display = ‘block’;
} else {
throw new Error(‘Server error’);
}
} catch(err) {
btn.textContent = ‘❌ Erreur — réessayez’;
btn.disabled = false;
}
});
</script>