Learn French Together | Live French Classes & TEF/TCF Preparation
:root {
–navy: #172554;
–blue: #2563eb;
–light-blue: #eff6ff;
–red: #dc2626;
–cream: #fffdf7;
–dark: #172033;
–gray: #64748b;
–white: #ffffff;
–border: #e5e7eb;
–shadow: 0 15px 40px rgba(15, 23, 42, 0.08);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
font-family: Arial, Helvetica, sans-serif;
color: var(–dark);
background: var(–cream);
line-height: 1.6;
}
a {
text-decoration: none;
color: inherit;
}
img {
max-width: 100%;
}
/* NAVIGATION */
.navbar {
position: sticky;
top: 0;
z-index: 1000;
background: rgba(255,255,255,0.95);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(–border);
}
.nav-container {
max-width: 1180px;
margin: auto;
height: 76px;
padding: 0 25px;
display: flex;
align-items: center;
justify-content: space-between;
}
.logo {
display: flex;
align-items: center;
gap: 12px;
font-weight: 800;
font-size: 19px;
color: var(–navy);
}
.logo-stamp {
width: 45px;
height: 45px;
border: 2px solid var(–red);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: var(–red);
font-size: 20px;
font-weight: bold;
transform: rotate(-8deg);
}
.nav-links {
display: flex;
align-items: center;
gap: 28px;
font-size: 15px;
font-weight: 600;
}
.nav-links a:hover {
color: var(–blue);
}
.nav-button {
background: var(–blue);
color: white !important;
padding: 11px 19px;
border-radius: 9px;
}
/* HERO */
.hero {
min-height: 680px;
display: flex;
align-items: center;
position: relative;
overflow: hidden;
background:
radial-gradient(circle at 85% 20%, #dbeafe 0, transparent 28%),
radial-gradient(circle at 10% 80%, #fee2e2 0, transparent 28%),
var(–cream);
}
.hero-container {
max-width: 1180px;
width: 100%;
margin: auto;
padding: 80px 25px;
display: grid;
grid-template-columns: 1.05fr 0.95fr;
gap: 70px;
align-items: center;
}
.badge {
display: inline-block;
background: #dbeafe;
color: var(–navy);
padding: 8px 14px;
border-radius: 30px;
font-size: 13px;
font-weight: 700;
margin-bottom: 22px;
}
.hero h1 {
font-size: clamp(42px, 6vw, 70px);
line-height: 1.05;
letter-spacing: -2px;
margin-bottom: 25px;
}
.hero h1 span {
color: var(–blue);
}
.hero p {
font-size: 19px;
color: var(–gray);
max-width: 620px;
margin-bottom: 32px;
}
.hero-buttons {
display: flex;
gap: 14px;
flex-wrap: wrap;
}
.btn {
display: inline-block;
padding: 14px 23px;
border-radius: 10px;
font-weight: 700;
border: 2px solid transparent;
transition: 0.2s;
cursor: pointer;
}
.btn-primary {
background: var(–blue);
color: white;
}
.btn-primary:hover {
transform: translateY(-2px);
}
.btn-secondary {
border-color: var(–border);
background: white;
}
/* HERO CARD */
.hero-card {
background: white;
border-radius: 28px;
padding: 35px;
box-shadow: var(–shadow);
position: relative;
border: 1px solid var(–border);
}
.stamp {
width: 150px;
height: 150px;
margin: 0 auto 28px;
border: 4px double var(–red);
border-radius: 50%;
color: var(–red);
display: flex;
align-items: center;
justify-content: center;
text-align: center;
font-weight: 900;
font-size: 19px;
line-height: 1.15;
transform: rotate(-8deg);
position: relative;
}
.stamp::before {
content: “🇫🇷”;
position: absolute;
top: -17px;
background: white;
padding: 0 8px;
font-size: 25px;
}
.hero-card h3 {
text-align: center;
font-size: 25px;
margin-bottom: 8px;
}
.hero-card p {
text-align: center;
font-size: 15px;
margin-bottom: 0;
}
/* SECTIONS */
section {
padding: 90px 25px;
}
.container {
max-width: 1180px;
margin: auto;
}
.section-heading {
text-align: center;
max-width: 700px;
margin: 0 auto 55px;
}
.section-heading .eyebrow {
color: var(–blue);
font-size: 13px;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 1.5px;
}
.section-heading h2 {
font-size: 42px;
margin: 8px 0 15px;
line-height: 1.15;
}
.section-heading p {
color: var(–gray);
font-size: 17px;
}
/* FEATURES */
.features {
background: white;
}
.feature-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 22px;
}
.feature-card {
padding: 30px;
border: 1px solid var(–border);
border-radius: 18px;
background: white;
transition: 0.25s;
}
.feature-card:hover {
transform: translateY(-5px);
box-shadow: var(–shadow);
}
.feature-icon {
font-size: 35px;
margin-bottom: 17px;
}
.feature-card h3 {
font-size: 21px;
margin-bottom: 9px;
}
.feature-card p {
color: var(–gray);
}
/* CLASSES */
.class-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 25px;
}
.class-card {
background: white;
border: 1px solid var(–border);
border-radius: 20px;
padding: 30px;
box-shadow: 0 7px 25px rgba(0,0,0,0.04);
}
.class-card .number {
font-size: 14px;
font-weight: bold;
color: var(–red);
}
.class-card h3 {
font-size: 24px;
margin: 10px 0;
}
.class-card p {
color: var(–gray);
margin-bottom: 20px;
}
.class-card ul {
list-style: none;
}
.class-card li {
margin: 9px 0;
font-size: 14px;
}
.class-card li::before {
content: “✓”;
color: var(–blue);
font-weight: bold;
margin-right: 8px;
}
/* TEF SECTION */
.tef {
background: var(–navy);
color: white;
}
.tef-container {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 70px;
align-items: center;
}
.tef h2 {
font-size: 44px;
line-height: 1.15;
margin: 12px 0 20px;
}
.tef p {
color: #cbd5e1;
font-size: 17px;
}
.tef-list {
margin-top: 28px;
list-style: none;
}
.tef-list li {
padding: 12px 0;
border-bottom: 1px solid rgba(255,255,255,.12);
}
.tef-list li::before {
content: “✓”;
margin-right: 10px;
}
.tef-box {
background: white;
color: var(–dark);
border-radius: 22px;
padding: 35px;
}
.tef-box h3 {
font-size: 25px;
margin-bottom: 18px;
}
.tef-box-item {
display: flex;
justify-content: space-between;
padding: 15px 0;
border-bottom: 1px solid var(–border);
}
/* DEMO */
.demo {
background: #f8fafc;
}
.demo-container {
max-width: 900px;
margin: auto;
background: white;
border-radius: 25px;
padding: 45px;
box-shadow: var(–shadow);
}
.demo-header {
text-align: center;
margin-bottom: 35px;
}
.demo-header h2 {
font-size: 38px;
}
.demo-header p {
color: var(–gray);
margin-top: 10px;
}
.form-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 18px;
}
.form-group {
display: flex;
flex-direction: column;
}
.form-group.full {
grid-column: 1 / -1;
}
label {
font-weight: 700;
font-size: 14px;
margin-bottom: 7px;
}
input,
select,
textarea {
padding: 13px 14px;
border: 1px solid #cbd5e1;
border-radius: 9px;
font: inherit;
outline: none;
background: white;
}
input:focus,
select:focus,
textarea:focus {
border-color: var(–blue);
}
textarea {
min-height: 100px;
resize: vertical;
}
.form-submit {
margin-top: 22px;
width: 100%;
border: none;
font-size: 16px;
}
/* PRICING */
.pricing-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
.price-card {
background: white;
border: 1px solid var(–border);
border-radius: 22px;
padding: 32px;
text-align: center;
position: relative;
}
.price-card.featured {
border: 2px solid var(–blue);
transform: translateY(-8px);
}
.popular {
position: absolute;
top: -13px;
left: 50%;
transform: translateX(-50%);
background: var(–blue);
color: white;
padding: 5px 13px;
border-radius: 20px;
font-size: 12px;
font-weight: bold;
}
.price-card h3 {
font-size: 22px;
}
.price {
font-size: 42px;
font-weight: 800;
margin: 16px 0 5px;
}
.price small {
font-size: 15px;
color: var(–gray);
font-weight: normal;
}
.price-card p {
color: var(–gray);
margin-bottom: 22px;
}
.price-card ul {
list-style: none;
text-align: left;
margin-bottom: 25px;
}
.price-card li {
padding: 8px 0;
font-size: 14px;
}
.price-card li::before {
content: “✓”;
color: var(–blue);
font-weight: bold;
margin-right: 8px;
}
/* TESTIMONIALS */
.testimonials {
background: white;
}
.testimonial-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 23px;
}
.testimonial {
padding: 30px;
border: 1px solid var(–border);
border-radius: 18px;
}
.stars {
color: #f59e0b;
letter-spacing: 3px;
margin-bottom: 15px;
}
.testimonial p {
color: #475569;
font-style: italic;
margin-bottom: 18px;
}
.testimonial strong {
font-size: 14px;
}
/* CTA */
.cta {
background: linear-gradient(135deg, #2563eb, #172554);
color: white;
text-align: center;
}
.cta h2 {
font-size: 43px;
margin-bottom: 15px;
}
.cta p {
color: #dbeafe;
max-width: 650px;
margin: 0 auto 28px;
font-size: 17px;
}
.cta .btn {
background: white;
color: var(–navy);
}
/* FOOTER */
footer {
background: #0f172a;
color: white;
padding: 50px 25px 25px;
}
.footer-container {
max-width: 1180px;
margin: auto;
display: grid;
grid-template-columns: 2fr 1fr 1fr;
gap: 50px;
}
.footer-brand p {
color: #94a3b8;
max-width: 380px;
margin-top: 15px;
}
footer h4 {
margin-bottom: 15px;
}
footer ul {
list-style: none;
}
footer li {
margin: 9px 0;
color: #94a3b8;
}
footer li:hover {
color: white;
}
.copyright {
max-width: 1180px;
margin: 40px auto 0;
padding-top: 22px;
border-top: 1px solid #1e293b;
color: #64748b;
font-size: 13px;
}
/* MOBILE */
@media (max-width: 850px) {
.nav-links {
display: none;
}
.hero-container,
.tef-container {
grid-template-columns: 1fr;
}
.hero {
min-height: auto;
}
.hero-card {
max-width: 500px;
margin: auto;
}
.feature-grid,
.class-grid,
.pricing-grid,
.testimonial-grid {
grid-template-columns: 1fr;
}
.price-card.featured {
transform: none;
}
.footer-container {
grid-template-columns: 1fr;
}
.section-heading h2,
.tef h2,
.cta h2 {
font-size: 34px;
}
}
@media (max-width: 600px) {
.nav-container {
padding: 0 16px;
}
.logo {
font-size: 16px;
}
.logo-stamp {
width: 39px;
height: 39px;
}
section {
padding: 65px 18px;
}
.hero-container {
padding: 65px 18px;
}
.hero h1 {
font-size: 43px;
}
.hero p {
font-size: 17px;
}
.form-grid {
grid-template-columns: 1fr;
}
.form-group.full {
grid-column: auto;
}
.demo-container {
padding: 28px 20px;
}
}
🇫🇷 Learn French • Speak French • Grow Together
Learn French.
Together.
Live French classes designed for everyday learners,
Canada immigration goals, and TEF/TCF exam preparation.
LEARN
FRENCH
TOGETHER
Parlons français! 🇫🇷
Learn naturally, practice regularly,
and build confidence step by step.
Why Learn With Us
French learning made simple
Practical lessons, live practice, and a supportive
learning environment.
🎓
Live Classes
Learn with live instruction and interactive
speaking practice instead of studying alone.
🗣️
Speak With Confidence
Build your vocabulary, pronunciation and
conversation skills through regular practice.
🇨🇦
Canada Goals
French learning for people working toward
Canadian immigration and language goals.
Our Classes
Choose your French journey
Whether you are starting from zero or preparing
for a French language exam.
01
Beginner French
Start from the basics and develop a strong
foundation in French.
- Alphabet & pronunciation
- Basic vocabulary
- Grammar fundamentals
- Everyday conversations
02
Everyday French
Improve your speaking ability and become more
comfortable using French in real situations.
- Conversation practice
- Listening skills
- Vocabulary building
- Real-life French
03
TEF / TCF Preparation
Prepare for the French language requirements
connected to Canadian immigration.
- Exam strategies
- Speaking practice
- Writing practice
- Listening & reading
🇨🇦 French For Canada
Preparing for TEF or TCF?
Build the French skills you need with structured
preparation and regular practice.
- Understand the exam format
- Improve your French vocabulary
- Practice speaking and pronunciation
- Develop listening and reading skills
- Work on French writing
What we focus on
Listening
Compréhension orale
Reading
Compréhension écrite
Speaking
Expression orale
Writing
Expression écrite
Simple Pricing
Learn at your own pace
Flexible options for different learning goals.
Starter
$XX
/month
Build your French foundation.
- Live group classes
- Weekly practice
- Learning materials
- Community support
Get Started
POPULAR
Complete
$XX
/month
Consistent learning and practice.
- Live group classes
- Speaking practice
- Study materials
- Progress guidance
Get Started
TEF / TCF
$XX
/month
Focused exam preparation.
- Exam-focused classes
- Speaking practice
- Writing practice
- Mock practice
Get Started
Student Experience
What our learners say
Add real student testimonials here as your
community grows.
★★★★★
“The classes are easy to follow and the speaking
practice really helped me become more comfortable
with French.”
— Student Name
★★★★★
“I wanted to learn French for my Canada immigration
goals and the structured classes made learning easier.”
— Student Name
★★★★★
“The live sessions give me a reason to practice
French consistently every week.”
— Student Name
Ready to start learning French?
Join our free demo class and discover a simple,
practical way to learn French together.
Join the Free Demo
function submitDemo(event) {
event.preventDefault();
const name = document.getElementById(“name”).value;
alert(
“Thank you, ” +
name +
“! Your free demo registration has been received.”
);
}