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
Try Before You Commit

Join a Free Demo Class

Experience Learn French Together and see how our live classes work.

Full Name
Email
French Level Beginner Basic Intermediate Advanced Not sure
Main Goal Learn everyday French Canada immigration / PR TEF preparation TCF preparation
Anything you want us to know?
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

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.” ); }