<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Imago Relationship Therapy South Africa</title>
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=DM+Serif+Display&display=swap" rel="stylesheet">
<!-- Lucide Icons -->
<script src="https://unpkg.com/lucide@latest"></script>
<style>
/* ============================================
CSS CUSTOM PROPERTIES
============================================ */
:root {
--teal-50: #f0fdfa;
--teal-100: #ccfbf1;
--teal-200: #99f6e4;
--teal-300: #5eead4;
--teal-400: #2dd4bf;
--teal-500: #14b8a6;
--teal-600: #0d9488;
--teal-700: #0f766e;
--teal-800: #115e59;
--teal-900: #134e4a;
--teal-950: #042f2e;
--slate-50: #f8fafc;
--slate-100: #f1f5f9;
--slate-200: #e2e8f0;
--slate-300: #cbd5e1;
--slate-400: #94a3b8;
--slate-500: #64748b;
--slate-600: #475569;
--slate-700: #334155;
--slate-800: #1e293b;
--slate-900: #0f172a;
--red-50: #fef2f2;
--red-100: #fee2e2;
--red-600: #dc2626;
--red-800: #991b1b;
--blue-300: #93c5fd;
--blue-400: #60a5fa;
--blue-500: #3b82f6;
--blue-600: #2563eb;
--purple-400: #c084fc;
--purple-500: #a855f7;
--purple-600: #9333ea;
--yellow-300: #fde047;
--yellow-400: #facc15;
--font-sans: 'DM Sans', system-ui, sans-serif;
--font-serif: 'DM Serif Display', Georgia, serif;
}
/* ============================================
RESET & BASE STYLES
============================================ */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth;
}
body {
font-family: var(--font-sans);
color: var(--slate-800);
background-color: var(--slate-50);
line-height: 1.6;
min-height: 100vh;
}
a {
text-decoration: none;
color: inherit;
}
button {
font-family: inherit;
cursor: pointer;
border: none;
background: none;
}
img {
max-width: 100%;
height: auto;
}
/* ============================================
UTILITY CLASSES
============================================ */
.container {
max-width: 1280px;
margin: 0 auto;
padding: 0 1rem;
}
@media (min-width: 640px) {
.container { padding: 0 1.5rem; }
}
@media (min-width: 1024px) {
.container { padding: 0 2rem; }
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0;
}
/* ============================================
ANIMATIONS
============================================ */
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
@keyframes ping {
75%, 100% {
transform: scale(2);
opacity: 0;
}
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-pulse {
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
.animate-ping {
animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
}
.animate-fade-in {
animation: fadeIn 0.4s ease-out forwards;
}
/* ============================================
NAVIGATION
============================================ */
.navbar {
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(8px);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
position: sticky;
top: 0;
z-index: 50;
border-bottom: 1px solid var(--slate-100);
}
.navbar-inner {
display: flex;
justify-content: space-between;
align-items: center;
height: 5rem;
}
.logo {
display: flex;
align-items: center;
gap: 0.5rem;
}
.logo-icon {
width: 2.5rem;
height: 2.5rem;
background: var(--teal-600);
border-radius: 0.5rem;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: bold;
font-size: 1.25rem;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}
.logo-text {
display: flex;
flex-direction: column;
}
.logo-text span:first-child {
font-weight: bold;
font-size: 1.125rem;
line-height: 1;
color: var(--slate-900);
}
.logo-text span:last-child {
font-size: 0.65rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--slate-500);
}
.nav-links {
display: none;
align-items: center;
gap: 2rem;
}
@media (min-width: 768px) {
.nav-links { display: flex; }
}
.nav-links a {
color: var(--slate-600);
font-weight: 500;
transition: color 0.2s;
}
.nav-links a:hover {
color: var(--teal-600);
}
.nav-cta {
background: var(--teal-600);
color: white;
padding: 0.625rem 1.5rem;
border-radius: 9999px;
font-weight: bold;
transition: all 0.2s;
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
.nav-cta:hover {
background: var(--teal-700);
box-shadow: 0 10px 15px -3px rgba(13, 148, 136, 0.3);
}
.mobile-menu-btn {
display: flex;
align-items: center;
color: var(--slate-600);
}
@media (min-width: 768px) {
.mobile-menu-btn { display: none; }
}
.mobile-menu {
display: none;
position: absolute;
width: 100%;
background: white;
border-top: 1px solid var(--slate-100);
padding: 1rem;
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
.mobile-menu.open {
display: block;
}
@media (min-width: 768px) {
.mobile-menu { display: none !important; }
}
.mobile-menu a {
display: block;
padding: 0.5rem;
color: var(--slate-600);
font-weight: 500;
}
.mobile-menu .nav-cta {
display: block;
text-align: center;
margin-top: 0.5rem;
background: var(--teal-50);
color: var(--teal-600);
border-radius: 0.25rem;
}
/* ============================================
HERO SECTION
============================================ */
.hero {
position: relative;
background: var(--teal-950);
color: white;
overflow: hidden;
padding-bottom: 3rem;
}
.hero-pattern {
position: absolute;
inset: 0;
opacity: 0.2;
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><rect width="40" height="40" fill="none"/><path d="M0 20h40M20 0v40" stroke="%23ffffff" stroke-width="0.5" opacity="0.3"/></svg>');
}
.hero-blob-1,
.hero-blob-2 {
position: absolute;
width: 24rem;
height: 24rem;
border-radius: 50%;
filter: blur(64px);
opacity: 0.3;
mix-blend-mode: multiply;
}
.hero-blob-1 {
top: 0;
right: 0;
margin-right: -5rem;
margin-top: -5rem;
background: var(--teal-600);
animation: pulse 4s infinite;
}
.hero-blob-2 {
bottom: 0;
left: 0;
margin-left: -5rem;
margin-bottom: -5rem;
background: var(--blue-600);
animation: pulse 4s infinite 1s;
}
.hero-content {
position: relative;
z-index: 10;
padding: 5rem 0 3rem;
}
@media (min-width: 1024px) {
.hero-content { padding: 7rem 0 4rem; }
}
.hero-grid {
display: grid;
gap: 3rem;
align-items: center;
}
@media (min-width: 1024px) {
.hero-grid { grid-template-columns: 1fr 1fr; }
}
.hero-badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.25rem 0.75rem;
border-radius: 9999px;
background: var(--teal-900);
border: 1px solid var(--teal-700);
color: var(--teal-300);
font-size: 0.875rem;
font-weight: 500;
margin-bottom: 1.5rem;
}
.badge-dot {
position: relative;
display: flex;
width: 0.5rem;
height: 0.5rem;
}
.badge-dot-ping {
position: absolute;
display: inline-flex;
width: 100%;
height: 100%;
border-radius: 50%;
background: var(--teal-400);
opacity: 0.75;
animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
}
.badge-dot-core {
position: relative;
display: inline-flex;
width: 0.5rem;
height: 0.5rem;
border-radius: 50%;
background: var(--teal-500);
}
.hero h1 {
font-family: var(--font-serif);
font-size: 2.5rem;
font-weight: 800;
letter-spacing: -0.025em;
line-height: 1.1;
margin-bottom: 1.5rem;
}
@media (min-width: 768px) {
.hero h1 { font-size: 3.75rem; }
}
.hero h1 span {
background: linear-gradient(to right, var(--teal-300), var(--blue-300));
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.hero-description {
font-size: 1.25rem;
color: var(--teal-100);
margin-bottom: 2rem;
line-height: 1.75;
}
.hero-buttons {
display: flex;
flex-direction: column;
gap: 1rem;
}
@media (min-width: 640px) {
.hero-buttons { flex-direction: row; }
}
.btn-primary {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
background: white;
color: var(--teal-900);
padding: 1rem 2rem;
border-radius: 0.5rem;
font-weight: bold;
font-size: 1.125rem;
transition: all 0.2s;
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
.btn-primary:hover {
background: var(--teal-50);
box-shadow: 0 10px 15px -3px rgba(255, 255, 255, 0.2);
}
.btn-secondary {
display: inline-flex;
align-items: center;
justify-content: center;
border: 1px solid var(--teal-700);
color: var(--teal-100);
padding: 1rem 2rem;
border-radius: 0.5rem;
font-weight: bold;
font-size: 1.125rem;
transition: all 0.2s;
backdrop-filter: blur(4px);
}
.btn-secondary:hover {
background: var(--teal-900);
}
/* Quiz Component */
.quiz-card {
display: none;
background: white;
border-radius: 1rem;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
overflow: hidden;
border: 1px solid var(--slate-200);
}
@media (min-width: 1024px) {
.quiz-card { display: block; }
}
.quiz-header {
background: linear-gradient(to right, var(--teal-600), var(--teal-800));
padding: 1.5rem;
color: white;
}
.quiz-header h3 {
font-size: 1.25rem;
font-weight: bold;
display: flex;
align-items: center;
gap: 0.5rem;
}
.quiz-header h3 i {
color: var(--yellow-300);
}
.quiz-header p {
color: var(--teal-100);
font-size: 0.875rem;
}
.quiz-body {
padding: 2rem;
}
.quiz-progress {
display: flex;
justify-content: space-between;
font-size: 0.75rem;
font-weight: 600;
color: var(--slate-400);
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 1.5rem;
}
.quiz-question {
font-size: 1.25rem;
font-weight: bold;
color: var(--slate-800);
margin-bottom: 1.5rem;
}
.quiz-options {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.quiz-option {
width: 100%;
text-align: left;
padding: 1rem;
border-radius: 0.5rem;
border: 1px solid var(--slate-200);
display: flex;
justify-content: space-between;
align-items: center;
transition: all 0.2s;
background: white;
}
.quiz-option:hover {
border-color: var(--teal-500);
background: var(--teal-50);
}
.quiz-option span {
color: var(--slate-700);
font-weight: 500;
}
.quiz-option:hover span {
color: var(--teal-800);
}
.quiz-option i {
color: var(--slate-300);
opacity: 0;
transition: opacity 0.2s;
}
.quiz-option:hover i {
color: var(--teal-500);
opacity: 1;
}
.quiz-result {
text-align: center;
}
.quiz-result-icon {
width: 5rem;
height: 5rem;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 1.5rem;
}
.quiz-result-icon.success {
background: var(--teal-100);
color: var(--teal-600);
}
.quiz-result-icon.warning {
background: var(--teal-100);
color: var(--teal-600);
}
.quiz-result h4 {
font-size: 1.5rem;
font-weight: bold;
color: var(--slate-800);
margin-bottom: 0.5rem;
}
.quiz-result p {
color: var(--slate-600);
margin-bottom: 2rem;
}
.quiz-result .btn-primary {
background: var(--teal-600);
color: white;
}
.quiz-result .btn-primary:hover {
background: var(--teal-700);
}
/* ============================================
SCIENCE SECTION
============================================ */
.science-section {
padding: 6rem 0;
background: white;
position: relative;
overflow: hidden;
}
.section-header {
text-align: center;
margin-bottom: 4rem;
}
.section-header h2 {
font-family: var(--font-serif);
font-size: 2.5rem;
font-weight: 800;
color: var(--slate-900);
margin-bottom: 1rem;
}
.section-header p {
font-size: 1.25rem;
color: var(--slate-600);
max-width: 42rem;
margin: 0 auto;
}
.science-grid {
display: grid;
gap: 2rem;
position: relative;
}
@media (min-width: 768px) {
.science-grid { grid-template-columns: repeat(3, 1fr); }
}
.science-line {
display: none;
position: absolute;
top: 3rem;
left: 16%;
right: 16%;
height: 0.25rem;
background: linear-gradient(to right, var(--red-200), var(--slate-200), var(--teal-200));
z-index: 0;
}
@media (min-width: 768px) {
.science-line { display: block; }
}
.science-card {
position: relative;
z-index: 10;
background: white;
padding: 2rem;
border-radius: 1rem;
border: 1px solid var(--slate-200);
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
transition: all 0.3s;
}
.science-card:hover {
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15);
}
.science-card.threat {
border-color: var(--red-100);
}
.science-card.solution {
background: var(--teal-900);
border-color: var(--teal-600);
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
}
@media (min-width: 768px) {
.science-card.solution { transform: translateY(-1rem); }
}
.science-card.solution .card-badge {
position: absolute;
top: 0;
right: 0;
background: var(--yellow-400);
color: var(--teal-900);
font-size: 0.75rem;
font-weight: bold;
padding: 0.25rem 0.5rem;
border-bottom-left-radius: 0.5rem;
}
.card-icon {
width: 4rem;
height: 4rem;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 1.5rem;
transition: transform 0.2s;
}
.science-card:hover .card-icon {
transform: scale(1.1);
}
.card-icon.red {
background: var(--red-100);
color: var(--red-600);
}
.card-icon.slate {
background: var(--slate-100);
color: var(--slate-600);
}
.card-icon.teal {
background: var(--teal-700);
color: var(--teal-200);
}
.science-card h3 {
font-size: 1.25rem;
font-weight: bold;
text-align: center;
margin-bottom: 0.75rem;
color: var(--slate-900);
}
.science-card.solution h3 {
color: white;
}
.science-card p {
color: var(--slate-600);
text-align: center;
font-size: 0.875rem;
}
.science-card.solution p {
color: var(--teal-100);
}
.card-status {
margin-top: 1rem;
padding: 0.75rem;
border-radius: 0.25rem;
font-size: 0.75rem;
text-align: center;
font-family: monospace;
}
.card-status.red {
background: var(--red-50);
color: var(--red-800);
}
.card-status.slate {
background: var(--slate-100);
color: var(--slate-800);
}
.card-status.teal {
background: var(--teal-800);
color: var(--teal-200);
border: 1px solid var(--teal-600);
}
/* ============================================
PILLARS SECTION
============================================ */
.pillars-section {
padding: 5rem 0;
background: var(--slate-50);
border-top: 1px solid var(--slate-200);
border-bottom: 1px solid var(--slate-200);
}
.pillars-grid {
display: grid;
gap: 3rem;
text-align: center;
}
@media (min-width: 768px) {
.pillars-grid {
grid-template-columns: repeat(3, 1fr);
gap: 0;
}
.pillar:not(:last-child) {
border-right: 1px solid var(--slate-200);
}
}
.pillar {
padding: 1.5rem;
}
.pillar h3 {
font-size: 1.5rem;
font-weight: bold;
margin-bottom: 0.75rem;
color: var(--teal-900);
}
.pillar p {
color: var(--slate-600);
line-height: 1.75;
}
/* ============================================
INTENSIVES SECTION
============================================ */
.intensives-section {
padding: 6rem 0;
background: white;
}
.intensives-header {
text-align: center;
margin-bottom: 4rem;
}
.intensives-header .label {
color: var(--teal-600);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
font-size: 0.875rem;
}
.intensives-header h2 {
font-family: var(--font-serif);
font-size: 2.5rem;
font-weight: 800;
color: var(--slate-900);
margin-top: 0.5rem;
}
.intensives-header p {
font-size: 1.25rem;
color: var(--slate-500);
margin-top: 1rem;
}
.intensives-card {
background: white;
border-radius: 1.5rem;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15);
overflow: hidden;
border: 1px solid var(--slate-200);
display: flex;
flex-direction: column;
}
@media (min-width: 1024px) {
.intensives-card { flex-direction: row; }
}
.intensives-content {
padding: 2.5rem;
display: flex;
flex-direction: column;
justify-content: center;
}
@media (min-width: 1024px) {
.intensives-content {
width: 50%;
padding: 4rem;
}
}
.intensives-content h3 {
font-family: var(--font-serif);
font-size: 1.875rem;
font-weight: bold;
color: var(--slate-900);
margin-bottom: 1.5rem;
}
.intensives-content > p {
color: var(--slate-600);
font-size: 1.125rem;
line-height: 1.75;
margin-bottom: 2rem;
}
.benefits-list {
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.benefit {
display: flex;
align-items: flex-start;
}
.benefit i {
flex-shrink: 0;
color: var(--teal-500);
margin-right: 1rem;
}
.benefit p {
color: var(--slate-600);
}
.benefit p span {
font-weight: bold;
color: var(--slate-900);
}
.intensives-cta {
margin-top: 2.5rem;
}
.intensives-cta button {
width: 100%;
background: var(--teal-600);
color: white;
font-weight: bold;
padding: 1rem;
border-radius: 0.75rem;
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
font-size: 1.125rem;
transition: all 0.2s;
}
.intensives-cta button:hover {
background: var(--teal-700);
transform: scale(1.02);
}
.intensives-cta p {
text-align: center;
font-size: 0.875rem;
color: var(--slate-400);
margin-top: 1rem;
}
.intensives-comparison {
background: var(--slate-50);
padding: 2.5rem;
border-left: 1px solid var(--slate-200);
}
@media (min-width: 1024px) {
.intensives-comparison {
width: 50%;
padding: 4rem;
}
}
.intensives-comparison h4 {
font-size: 1.25rem;
font-weight: bold;
color: var(--slate-800);
margin-bottom: 2rem;
text-align: center;
}
.comparison-table {
background: white;
border-radius: 0.75rem;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
border: 1px solid var(--slate-200);
overflow: hidden;
}
.comparison-header {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
background: var(--slate-100);
padding: 1rem;
border-bottom: 1px solid var(--slate-200);
}
.comparison-header span {
font-weight: bold;
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.comparison-header span:nth-child(2) {
text-align: center;
color: var(--slate-500);
}
.comparison-header span:nth-child(3) {
text-align: center;
color: var(--teal-700);
background: var(--teal-50);
border-radius: 0.25rem;
padding: 0.25rem;
}
.comparison-row {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
padding: 1rem;
align-items: center;
transition: background 0.2s;
}
.comparison-row:hover {
background: var(--slate-50);
}
.comparison-row:not(:last-child) {
border-bottom: 1px solid var(--slate-100);
}
.comparison-row span:first-child {
font-weight: 600;
color: var(--slate-700);
font-size: 0.875rem;
}
.comparison-row span:nth-child(2) {
text-align: center;
color: var(--slate-500);
font-size: 0.875rem;
}
.comparison-row span:nth-child(3) {
text-align: center;
color: var(--teal-700);
font-weight: bold;
font-size: 0.875rem;
}
/* ============================================
OTHER OPTIONS SECTION
============================================ */
.options-section {
padding: 5rem 0;
background: var(--slate-900);
color: white;
}
.options-section h2 {
font-family: var(--font-serif);
font-size: 1.875rem;
font-weight: bold;
margin-bottom: 3rem;
text-align: center;
}
.options-grid {
display: grid;
gap: 2rem;
}
@media (min-width: 768px) {
.options-grid { grid-template-columns: repeat(2, 1fr); }
}
.option-card {
background: var(--slate-800);
border-radius: 1rem;
padding: 2rem;
border: 1px solid var(--slate-700);
transition: border-color 0.3s;
}
.option-card:hover {
border-color: var(--teal-500);
}
.option-icon {
width: 3rem;
height: 3rem;
border-radius: 0.5rem;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1.5rem;
}
.option-icon.blue {
background: rgba(59, 130, 246, 0.2);
color: var(--blue-400);
}
.option-icon.purple {
background: rgba(168, 85, 247, 0.2);
color: var(--purple-400);
}
.option-card h3 {
font-size: 1.5rem;
font-weight: bold;
margin-bottom: 0.5rem;
}
.option-card > p {
color: var(--slate-400);
margin-bottom: 1.5rem;
}
.option-features {
margin-bottom: 2rem;
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.option-feature {
display: flex;
align-items: center;
color: var(--slate-300);
font-size: 0.875rem;
}
.option-feature i {
margin-right: 0.5rem;
}
.option-feature i.blue {
color: var(--blue-500);
}
.option-feature i.purple {
color: var(--purple-500);
}
.option-btn {
width: 100%;
padding: 0.75rem;
border-radius: 0.5rem;
border: 1px solid var(--slate-600);
font-weight: 600;
color: white;
transition: all 0.2s;
}
.option-btn.blue:hover {
background: var(--blue-600);
border-color: var(--blue-600);
}
.option-btn.purple:hover {
background: var(--purple-600);
border-color: var(--purple-600);
}
/* ============================================
DEFINITIONS SECTION
============================================ */
.definitions-section {
padding: 6rem 0;
background: var(--teal-50);
}
.definitions-grid {
display: grid;
gap: 3rem;
align-items: flex-start;
}
@media (min-width: 768px) {
.definitions-grid { grid-template-columns: 5fr 7fr; }
}
.definitions-left h2 {
font-family: var(--font-serif);
font-size: 1.875rem;
font-weight: bold;
margin-bottom: 1.5rem;
color: var(--slate-900);
}
.definitions-left h2 span {
color: var(--teal-600);
}
.definitions-left > p {
color: var(--slate-600);
font-size: 1.125rem;
margin-bottom: 2rem;
}
.definition-tabs {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.definition-tab {
width: 100%;
text-align: left;
padding: 1rem 1.5rem;
border-radius: 0.75rem;
display: flex;
align-items: center;
justify-content: space-between;
transition: all 0.2s;
border: 1px solid transparent;
}
.definition-tab:not(.active) {
color: var(--slate-600);
}
.definition-tab:not(.active):hover {
background: rgba(255, 255, 255, 0.5);
color: var(--teal-700);
}
.definition-tab.active {
background: white;
color: var(--teal-800);
border-color: var(--teal-200);
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
transform: scale(1.02);
}
.definition-tab-label {
display: flex;
align-items: center;
gap: 0.75rem;
font-weight: 600;
}
.definition-tab .arrow {
display: none;
color: var(--teal-500);
}
.definition-tab.active .arrow {
display: block;
}
.definition-display {
background: white;
padding: 2.5rem;
border-radius: 1.5rem;
min-height: 25rem;
display: flex;
flex-direction: column;
justify-content: center;
border: 1px solid var(--slate-200);
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
position: relative;
overflow: hidden;
}
.definition-display-bg {
position: absolute;
top: 0;
right: 0;
padding: 2rem;
opacity: 0.05;
color: var(--teal-900);
}
.definition-display-icon {
color: var(--teal-600);
margin-bottom: 1.5rem;
}
.definition-display h3 {
font-size: 1.5rem;
font-weight: bold;
margin-bottom: 1.5rem;
color: var(--slate-900);
}
.definition-display p {
font-size: 1.25rem;
line-height: 1.75;
font-weight: 300;
color: var(--slate-700);
}
/* ============================================
FAQ SECTION
============================================ */
.faq-section {
padding: 5rem 0;
background: white;
}
.faq-section h2 {
font-family: var(--font-serif);
font-size: 1.875rem;
font-weight: bold;
color: var(--slate-900);
margin-bottom: 3rem;
text-align: center;
}
.faq-grid {
display: grid;
gap: 2rem;
max-width: 56rem;
margin: 0 auto;
text-align: left;
}
@media (min-width: 768px) {
.faq-grid { grid-template-columns: repeat(2, 1fr); }
}
.faq-item h4 {
font-weight: bold;
font-size: 1.125rem;
margin-bottom: 0.5rem;
color: var(--slate-800);
}
.faq-item p {
color: var(--slate-600);
}
/* ============================================
FOOTER
============================================ */
.footer {
background: var(--slate-900);
color: var(--slate-400);
padding: 4rem 0;
border-top: 1px solid var(--slate-800);
}
.footer-grid {
display: grid;
gap: 3rem;
}
@media (min-width: 768px) {
.footer-grid { grid-template-columns: 2fr 1fr 1fr; }
}
.footer-brand {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 1.5rem;
}
.footer-brand-icon {
width: 2rem;
height: 2rem;
background: var(--teal-600);
border-radius: 0.25rem;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: bold;
}
.footer-brand span {
color: white;
font-weight: bold;
font-size: 1.25rem;
}
.footer-about {
max-width: 24rem;
line-height: 1.75;
}
.footer h4 {
color: white;
font-weight: 600;
margin-bottom: 1.5rem;
text-transform: uppercase;
letter-spacing: 0.05em;
font-size: 0.875rem;
}
.footer-links {
display: flex;
flex-direction: column;
gap: 1rem;
}
.footer-links a {
transition: color 0.2s;
}
.footer-links a:hover {
color: var(--teal-400);
}
.footer-contact-btn {
background: var(--teal-600);
color: white;
padding: 0.75rem 1.5rem;
border-radius: 0.5rem;
font-weight: bold;
margin-top: 1.5rem;
transition: all 0.2s;
box-shadow: 0 10px 15px -3px rgba(13, 148, 136, 0.3);
display: inline-block;
}
.footer-contact-btn:hover {
background: var(--teal-700);
}
.footer-bottom {
margin-top: 4rem;
padding-top: 2rem;
border-top: 1px solid var(--slate-800);
text-align: center;
font-size: 0.875rem;
color: var(--slate-600);
}
</style>
</head>
<body>
<!-- Navigation -->
<nav class="navbar">
<div class="container navbar-inner">
<a href="#" class="logo">
<div class="logo-icon">I</div>
<div class="logo-text">
<span>Imago</span>
<span>South Africa</span>
</div>
</a>
<div class="nav-links">
<a href="#science">The Science</a>
<a href="#intensives">Intensives</a>
<a href="#workshops">Workshops</a>
<a href="#online">Online</a>
<a href="#contact" class="nav-cta">Book Now</a>
</div>
<button class="mobile-menu-btn" onclick="toggleMobileMenu()" aria-label="Toggle menu">
<i data-lucide="menu" id="menu-icon"></i>
</button>
</div>
<div class="mobile-menu" id="mobile-menu">
<a href="#science" onclick="toggleMobileMenu()">The Science</a>
<a href="#intensives" onclick="toggleMobileMenu()">Intensives</a>
<a href="#workshops" onclick="toggleMobileMenu()">Workshops</a>
<a href="#online" onclick="toggleMobileMenu()">Online</a>
<a href="#contact" class="nav-cta" onclick="toggleMobileMenu()">Book Now</a>
</div>
</nav>
<!-- Hero Section -->
<header class="hero">
<div class="hero-pattern"></div>
<div class="hero-blob-1"></div>
<div class="hero-blob-2"></div>
<div class="container hero-content">
<div class="hero-grid">
<div>
<div class="hero-badge">
<span class="badge-dot">
<span class="badge-dot-ping"></span>
<span class="badge-dot-core"></span>
</span>
Based on the 2021 Clinical Textbook
</div>
<h1>Heal the <span>Space-Between</span> You.</h1>
<p class="hero-description">
The problem isn't your partner. The problem is the pollution in the space between you.
Move from "Unconscious Reactivity" to "Conscious Partnership" using the new science of connection.
</p>
<div class="hero-buttons">
<a href="#intensives" class="btn-primary">
Private Intensives <i data-lucide="arrow-right"></i>
</a>
<a href="#science" class="btn-secondary">
The Methodology
</a>
</div>
</div>
<!-- Quiz Component -->
<div class="quiz-card" id="quiz">
<div class="quiz-header">
<h3><i data-lucide="zap"></i> Relationship Pulse Check</h3>
<p>How safe is your connection right now?</p>
</div>
<div class="quiz-body">
<div id="quiz-questions">
<!-- Questions populated by JS -->
</div>
<div id="quiz-result" style="display: none;">
<!-- Result populated by JS -->
</div>
</div>
</div>
</div>
</div>
</header>
<!-- Science Section -->
<section id="science" class="science-section">
<div class="container">
<div class="section-header">
<h2>Why Do We Fight?</h2>
<p>It's biology, not character flaws. Your "Old Brain" is trying to protect you, but it's destroying your connection.</p>
</div>
<div class="science-grid">
<div class="science-line"></div>
<div class="science-card threat">
<div class="card-icon red">
<i data-lucide="alert-triangle"></i>
</div>
<h3>1. The Threat</h3>
<p>Your partner says something. Your "Old Brain" (Amygdala) perceives a threat to safety.</p>
<div class="card-status red">System Status: UNSAFE</div>
</div>
<div class="science-card">
<div class="card-icon slate">
<i data-lucide="refresh-cw"></i>
</div>
<h3>2. The Reactive Loop</h3>
<p>You attack or withdraw. This scares your partner. They attack or withdraw. The "Space-Between" becomes polluted.</p>
<div class="card-status slate">Result: DISCONNECTION</div>
</div>
<div class="science-card solution">
<span class="card-badge">NEW</span>
<div class="card-icon teal">
<i data-lucide="shield"></i>
</div>
<h3>3. The Imago Dialogue</h3>
<p>We override the Old Brain. You use a structured script (Mirror, Validate, Empathize) to force the brain to feel safe.</p>
<div class="card-status teal">System Status: RECONNECTED</div>
</div>
</div>
</div>
</section>
<!-- Pillars Section -->
<section class="pillars-section">
<div class="container">
<div class="pillars-grid">
<div class="pillar">
<h3>Safety First</h3>
<p>Transformation requires safety, not just insight. We install the "Zero Negativity" rule immediately to stop the bleeding.</p>
</div>
<div class="pillar">
<h3>Structure = Freedom</h3>
<p>We don't just "talk." We use a strict protocol that prevents interruption and forces deep listening.</p>
</div>
<div class="pillar">
<h3>Connecting is Being</h3>
<p>We move from "I" to "We". The goal is not individual happiness, but a thriving relationship that heals both partners.</p>
</div>
</div>
</div>
</section>
<!-- Intensives Section -->
<section id="intensives" class="intensives-section">
<div class="container">
<div class="intensives-header">
<span class="label">The Gold Standard</span>
<h2>Private Couples Intensives</h2>
<p>6 Months of Therapy in 2 Days.</p>
</div>
<div class="intensives-card">
<div class="intensives-content">
<h3>Why an Intensive?</h3>
<p>Weekly therapy often fails because the "Space-Between" gets polluted again between sessions. In an Intensive, we immerse you in safety for 48 hours. We clear the resentment, teach the tools, and practice them until they stick.</p>
<div class="benefits-list">
<div class="benefit">
<i data-lucide="check-circle"></i>
<p><span>Total Privacy:</span> Just you, your partner, and the therapist.</p>
</div>
<div class="benefit">
<i data-lucide="check-circle"></i>
<p><span>Deep Repair:</span> Time to actually finish the conversation without "time's up."</p>
</div>
<div class="benefit">
<i data-lucide="check-circle"></i>
<p><span>Neural Rewiring:</span> By sustaining safety for two days, we signal to your Old Brain that "Connection is Safe."</p>
</div>
</div>
<div class="intensives-cta">
<button>Apply for Your Intensive</button>
<p>Limited availability per month.</p>
</div>
</div>
<div class="intensives-comparison">
<h4>The Difference is Clear</h4>
<div class="comparison-table">
<div class="comparison-header">
<span></span>
<span>Weekly Therapy</span>
<span>Imago Intensive</span>
</div>
<div class="comparison-row">
<span>Momentum</span>
<span>Stops & Starts</span>
<span>Continuous Flow</span>
</div>
<div class="comparison-row">
<span>Focus</span>
<span>Crisis of the Week</span>
<span>Root Patterns</span>
</div>
<div class="comparison-row">
<span>Depth</span>
<span>Surface Level</span>
<span>Transformational</span>
</div>
<div class="comparison-row">
<span>Safety</span>
<span>Variable</span>
<span>Guaranteed</span>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Other Options Section -->
<section class="options-section">
<div class="container">
<h2>Other Ways to Connect</h2>
<div class="options-grid">
<div id="workshops" class="option-card">
<div class="option-icon blue">
<i data-lucide="users"></i>
</div>
<h3>Couples Workshops</h3>
<p>Join a small group of couples for a weekend of education and guided practice. You do your personal work privately with your partner, but benefit from the shared energy of the group.</p>
<div class="option-features">
<div class="option-feature">
<i data-lucide="check-circle" class="blue"></i>
<span>2-Day Group Immersion</span>
</div>
<div class="option-feature">
<i data-lucide="check-circle" class="blue"></i>
<span>Lower Cost than Intensive</span>
</div>
<div class="option-feature">
<i data-lucide="check-circle" class="blue"></i>
<span>Community Support</span>
</div>
</div>
<button class="option-btn blue">View Workshop Dates</button>
</div>
<div id="online" class="option-card">
<div class="option-icon purple">
<i data-lucide="wifi"></i>
</div>
<h3>Online Workshop</h3>
<p>The accessible entry point. Start where you are with our self-paced or live-streamed options. Essential tools to build safety and lower reactivity from home.</p>
<div class="option-features">
<div class="option-feature">
<i data-lucide="check-circle" class="purple"></i>
<span>Learn at your own pace</span>
</div>
<div class="option-feature">
<i data-lucide="check-circle" class="purple"></i>
<span>Most Affordable Option</span>
</div>
<div class="option-feature">
<i data-lucide="check-circle" class="purple"></i>
<span>Immediate Access</span>
</div>
</div>
<button class="option-btn purple">Start Learning Now</button>
</div>
</div>
</div>
</section>
<!-- Definitions Section -->
<section class="definitions-section">
<div class="container">
<div class="definitions-grid">
<div class="definitions-left">
<h2>What is Imago? <br><span>It depends who you ask.</span></h2>
<p>Imago is a universal framework for connection. Select a perspective to see how it speaks to your specific worldview.</p>
<div class="definition-tabs">
<button class="definition-tab active" data-tab="couples" onclick="setActiveDefinition('couples')">
<span class="definition-tab-label">
<i data-lucide="heart"></i>
For Couples
</span>
<i data-lucide="arrow-right" class="arrow"></i>
</button>
<button class="definition-tab" data-tab="engineer" onclick="setActiveDefinition('engineer')">
<span class="definition-tab-label">
<i data-lucide="brain"></i>
For the Logical Mind
</span>
<i data-lucide="arrow-right" class="arrow"></i>
</button>
<button class="definition-tab" data-tab="artist" onclick="setActiveDefinition('artist')">
<span class="definition-tab-label">
<i data-lucide="palette"></i>
For the Creative Spirit
</span>
<i data-lucide="arrow-right" class="arrow"></i>
</button>
<button class="definition-tab" data-tab="child" onclick="setActiveDefinition('child')">
<span class="definition-tab-label">
<i data-lucide="smile"></i>
Simply Put (For a 5-Year-Old)
</span>
<i data-lucide="arrow-right" class="arrow"></i>
</button>
<button class="definition-tab" data-tab="academic" onclick="setActiveDefinition('academic')">
<span class="definition-tab-label">
<i data-lucide="book-open"></i>
The Clinical Science
</span>
<i data-lucide="arrow-right" class="arrow"></i>
</button>
</div>
</div>
<div class="definition-display" id="definition-display">
<!-- Content populated by JS -->
</div>
</div>
</div>
</section>
<!-- FAQ Section -->
<section class="faq-section">
<div class="container">
<h2>Common Questions</h2>
<div class="faq-grid">
<div class="faq-item">
<h4>"We are too set in our ways."</h4>
<p>Imago emphasizes that the pain isn't "inside" you—it's in the interaction pattern. By changing the protocol of the Space-Between, even decades-old wounds can dissolve.</p>
</div>
<div class="faq-item">
<h4>"My partner won't come."</h4>
<p>You can start alone. When one person changes their steps in the dance, the dance itself must change. Our Online Workshop is a great low-pressure starting point.</p>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer id="contact" class="footer">
<div class="container">
<div class="footer-grid">
<div>
<div class="footer-brand">
<div class="footer-brand-icon">I</div>
<span>Imago Relationship SA</span>
</div>
<p class="footer-about">
Facilitating safe, conscious partnerships through private intensives and workshops. Grounded in the latest clinical science of the Space-Between.
</p>
</div>
<div>
<h4>Programs</h4>
<div class="footer-links">
<a href="#intensives">Private Intensives</a>
<a href="#workshops">Couples Workshops</a>
<a href="#online">Online Courses</a>
</div>
</div>
<div>
<h4>Connect</h4>
<div class="footer-links">
<span>info@imagorelationship.co.za</span>
<span>Pretoria, South Africa</span>
</div>
<a href="mailto:info@imagorelationship.co.za" class="footer-contact-btn">Contact Us</a>
</div>
</div>
<div class="footer-bottom">
© <script>document.write(new Date().getFullYear())</script> Imago Relationship Therapy South Africa. All rights reserved.
</div>
</div>
</footer>
<script>
// Initialize Lucide icons
lucide.createIcons();
// Mobile menu toggle
let isMenuOpen = false;
function toggleMobileMenu() {
isMenuOpen = !isMenuOpen;
const menu = document.getElementById('mobile-menu');
const icon = document.getElementById('menu-icon');
if (isMenuOpen) {
menu.classList.add('open');
icon.setAttribute('data-lucide', 'x');
} else {
menu.classList.remove('open');
icon.setAttribute('data-lucide', 'menu');
}
lucide.createIcons();
}
// Quiz functionality
const quizQuestions = [
{
q: "When you argue, what happens to the 'Space-Between' you?",
options: [
{ text: "It feels dangerous, like a war zone.", points: 0 },
{ text: "It feels cold and silent (we withdraw).", points: 1 },
{ text: "We pause, ensure safety, and take turns talking.", points: 5 }
]
},
{
q: "How often do you exchange 'Zero Negativity' appreciations?",
options: [
{ text: "Rarely. We focus on fixing problems.", points: 0 },
{ text: "Sometimes, on special occasions.", points: 2 },
{ text: "Daily. It's a non-negotiable habit.", points: 5 }
]
},
{
q: "When your partner is upset, do you listen to understand or to defend?",
options: [
{ text: "I defend myself immediately.", points: 0 },
{ text: "I try to listen, but I interrupt often.", points: 2 },
{ text: "I mirror back what they say to check accuracy.", points: 5 }
]
}
];
let quizStep = 0;
let quizScore = 0;
function renderQuizQuestion() {
const container = document.getElementById('quiz-questions');
const question = quizQuestions[quizStep];
const progress = Math.round((quizStep / quizQuestions.length) * 100);
container.innerHTML = `
<div class="animate-fade-in">
<div class="quiz-progress">
<span>Question ${quizStep + 1} of ${quizQuestions.length}</span>
<span>${progress}% Complete</span>
</div>
<h4 class="quiz-question">${question.q}</h4>
<div class="quiz-options">
${question.options.map((opt, idx) => `
<button class="quiz-option" onclick="handleQuizAnswer(${opt.points})">
<span>${opt.text}</span>
<i data-lucide="arrow-right"></i>
</button>
`).join('')}
</div>
</div>
`;
lucide.createIcons();
}
function handleQuizAnswer(points) {
quizScore += points;
if (quizStep < quizQuestions.length - 1) {
quizStep++;
renderQuizQuestion();
} else {
showQuizResult();
}
}
function showQuizResult() {
document.getElementById('quiz-questions').style.display = 'none';
const resultContainer = document.getElementById('quiz-result');
resultContainer.style.display = 'block';
const isSuccess = quizScore > 12;
resultContainer.innerHTML = `
<div class="quiz-result animate-fade-in">
<div class="quiz-result-icon ${isSuccess ? 'success' : 'warning'}">
<i data-lucide="${isSuccess ? 'star' : 'alert-triangle'}"></i>
</div>
<h4>${isSuccess ? "You're on the Right Path!" : "Your 'Space-Between' Needs Attention"}</h4>
<p>${isSuccess
? "You have some safety foundations. An Intensive could propel you to true Conscious Partnership."
: "Safety is currently low, meaning connection is blocked. The 'Old Brain' is running the show. We can fix this protocol."}</p>
<a href="#intensives" class="btn-primary" style="display: inline-flex;">
See How to Fix This Now <i data-lucide="arrow-right"></i>
</a>
</div>
`;
lucide.createIcons();
}
// Initialize quiz
renderQuizQuestion();
// Definitions functionality
const definitions = {
couples: {
title: "For Couples",
icon: "heart",
text: "Imago helps you turn fights into connection by working on what happens between you—your 'Space-Between.' The problem isn't that one of you is broken, but that your interactions have stopped feeling safe. We use structured dialogue and a 'Zero Negativity' commitment to make the relationship safe again, so healing and growth can happen naturally."
},
engineer: {
title: "For the Logical Mind",
icon: "brain",
text: "Think of your relationship as a system, and the 'Space-Between' as the shared interface. The fault is rarely in the components (you), but in the interaction protocol. Imago provides a new operating system: a strict communication protocol (Dialogue) to reduce error states (criticism), and positive inputs (Affirmations) to stabilize the system's safety parameters."
},
artist: {
title: "For the Creative Spirit",
icon: "palette",
text: "Treat the space between you like a canvas painted in real-time. Currently, the canvas might be splattered with blame. Imago gives you a choreography (Dialogue) to stop the mess and asking you to 'flood' the space with intentional positive strokes. You aren't just managing conflict; you are co-creating a masterpiece of Conscious Partnership."
},
child: {
title: "Simply Put (For a 5-Year-Old)",
icon: "smile",
text: "Imago is when two grown-ups learn to take turns talking and listening, stop using mean words, and say nice things every day. It makes the space between them feel safe so they can be best friends again."
},
academic: {
title: "The Clinical Science",
icon: "book-open",
text: "Grounded in Quantum Field Theory, Imago shifts the paradigm from the individual 'Space-Within' to the relational 'Space-Between.' We view the self not as the primary reality, but 'Connecting as Being.' We treat the interactional field through safety, structured dialogue, and the regulation of relational energy."
}
};
function setActiveDefinition(key) {
// Update tabs
document.querySelectorAll('.definition-tab').forEach(tab => {
tab.classList.remove('active');
if (tab.dataset.tab === key) {
tab.classList.add('active');
}
});
// Update display
const def = definitions[key];
const display = document.getElementById('definition-display');
display.innerHTML = `
<div class="definition-display-bg">
<i data-lucide="${def.icon}" style="width: 8rem; height: 8rem;"></i>
</div>
<div class="definition-display-icon">
<i data-lucide="${def.icon}" style="width: 3rem; height: 3rem;"></i>
</div>
<h3>${def.title}</h3>
<p>"${def.text}"</p>
`;
lucide.createIcons();
}
// Initialize definitions
setActiveDefinition('couples');
</script>
</body>
</html>