Add pricing section in homepage and update CSS with theme-specific variables.
This commit is contained in:
parent
8fe6fe5390
commit
9b71107ae4
2 changed files with 267 additions and 40 deletions
|
|
@ -82,6 +82,30 @@
|
||||||
--container-w: 1100px;
|
--container-w: 1100px;
|
||||||
--gutter: 20px;
|
--gutter: 20px;
|
||||||
--focus-ring: 0 0 0 3px rgba(78,158,214,0.45);
|
--focus-ring: 0 0 0 3px rgba(78,158,214,0.45);
|
||||||
|
|
||||||
|
/* Utility base colors */
|
||||||
|
--white: #ffffff;
|
||||||
|
--black: #000000;
|
||||||
|
|
||||||
|
/* Code window & syntax tokens (dark default) */
|
||||||
|
--code-bg: #1e1e2e;
|
||||||
|
--code-header-bg: #28293d;
|
||||||
|
--code-filename: #a9a9b3;
|
||||||
|
--code-text: #cdd6f4;
|
||||||
|
--code-line-number: #5c5f77;
|
||||||
|
--code-dot-red: #ff5f56;
|
||||||
|
--code-dot-yellow: #ffbd2e;
|
||||||
|
--code-dot-green: #27c93f;
|
||||||
|
--syn-qn: #cba6f7; /* keywords like def/if/return */
|
||||||
|
--syn-fn: #89b4fa; /* function names */
|
||||||
|
--syn-st: #a6e3a1; /* strings */
|
||||||
|
--syn-kw: #f9e2af; /* booleans/values */
|
||||||
|
--syn-cm: #6c7086; /* comments */
|
||||||
|
--syn-ow: #cba6f7; /* operators */
|
||||||
|
|
||||||
|
/* Misc */
|
||||||
|
--border-glass-dark: rgba(0,0,0,0.2);
|
||||||
|
--border-glass-light: rgba(255,255,255,0.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Light theme values — applied via colors_light.css inclusion */
|
/* Light theme values — applied via colors_light.css inclusion */
|
||||||
|
|
@ -104,7 +128,10 @@
|
||||||
--text: var(--fg);
|
--text: var(--fg);
|
||||||
--text-muted: var(--muted);
|
--text-muted: var(--muted);
|
||||||
--link: var(--primary);
|
--link: var(--primary);
|
||||||
--link-hover: var(--accent);
|
/* Hover liens (light): garder une teinte bleue pour éviter l'orange sur bleu */
|
||||||
|
--link-hover: color-mix(in oklab, var(--primary) 78%, var(--black) 22%);
|
||||||
|
/* Visited liens (light): un ton plus profond, toujours dans la gamme bleue */
|
||||||
|
--link-visited: color-mix(in oklab, var(--primary) 70%, var(--black) 30%);
|
||||||
|
|
||||||
/* Functional colors */
|
/* Functional colors */
|
||||||
--success: #1f9d63;
|
--success: #1f9d63;
|
||||||
|
|
@ -133,6 +160,28 @@
|
||||||
--surface-raised: var(--elev);
|
--surface-raised: var(--elev);
|
||||||
--border-subtle: rgba(12,32,55,0.10);
|
--border-subtle: rgba(12,32,55,0.10);
|
||||||
--border-strong: #8fb0c4;
|
--border-strong: #8fb0c4;
|
||||||
|
|
||||||
|
/* Utility base colors */
|
||||||
|
--white: #ffffff;
|
||||||
|
--black: #000000;
|
||||||
|
|
||||||
|
/* Code window & syntax tokens (light theme keeps same accent look) */
|
||||||
|
--code-bg: #1e1e2e;
|
||||||
|
--code-header-bg: #28293d;
|
||||||
|
--code-filename: #a9a9b3;
|
||||||
|
--code-text: #cdd6f4;
|
||||||
|
--code-line-number: #5c5f77;
|
||||||
|
--code-dot-red: #ff5f56;
|
||||||
|
--code-dot-yellow: #ffbd2e;
|
||||||
|
--code-dot-green: #27c93f;
|
||||||
|
--syn-qn: #cba6f7;
|
||||||
|
--syn-fn: #89b4fa;
|
||||||
|
--syn-st: #a6e3a1;
|
||||||
|
--syn-kw: #f9e2af;
|
||||||
|
--syn-cm: #6c7086;
|
||||||
|
--syn-ow: #cba6f7;
|
||||||
|
--border-glass-dark: rgba(0,0,0,0.2);
|
||||||
|
--border-glass-light: rgba(255,255,255,0.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
|
|
@ -523,10 +572,10 @@ pre {
|
||||||
/* Make primary CTA more visible */
|
/* Make primary CTA more visible */
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
background: linear-gradient(180deg,
|
background: linear-gradient(180deg,
|
||||||
color-mix(in oklab, var(--primary) 92%, #ffffff 8%),
|
color-mix(in oklab, var(--primary) 92%, var(--white) 8%),
|
||||||
color-mix(in oklab, var(--primary) 82%, #000000 18%)
|
color-mix(in oklab, var(--primary) 82%, var(--black) 18%)
|
||||||
);
|
);
|
||||||
border-color: color-mix(in oklab, var(--primary) 70%, #000000 30%);
|
border-color: color-mix(in oklab, var(--primary) 70%, var(--black) 30%);
|
||||||
box-shadow:
|
box-shadow:
|
||||||
0 8px 22px color-mix(in oklab, var(--primary) 35%, transparent),
|
0 8px 22px color-mix(in oklab, var(--primary) 35%, transparent),
|
||||||
0 0 0 1px color-mix(in oklab, var(--primary) 40%, transparent);
|
0 0 0 1px color-mix(in oklab, var(--primary) 40%, transparent);
|
||||||
|
|
@ -535,8 +584,8 @@ pre {
|
||||||
.cta-primary:hover {
|
.cta-primary:hover {
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
background: linear-gradient(180deg,
|
background: linear-gradient(180deg,
|
||||||
color-mix(in oklab, var(--primary) 96%, #ffffff 4%),
|
color-mix(in oklab, var(--primary) 96%, var(--white) 4%),
|
||||||
color-mix(in oklab, var(--primary) 88%, #000000 12%)
|
color-mix(in oklab, var(--primary) 88%, var(--black) 12%)
|
||||||
);
|
);
|
||||||
box-shadow:
|
box-shadow:
|
||||||
0 12px 28px color-mix(in oklab, var(--primary) 45%, transparent),
|
0 12px 28px color-mix(in oklab, var(--primary) 45%, transparent),
|
||||||
|
|
@ -953,6 +1002,29 @@ footer.site-footer {
|
||||||
html { background: var(--bg); color: var(--fg); }
|
html { background: var(--bg); color: var(--fg); }
|
||||||
nav.site-nav { background: var(--nav-bg); }
|
nav.site-nav { background: var(--nav-bg); }
|
||||||
|
|
||||||
|
/* Light-mode link ergonomics — avoid orange on blue, improve affordance */
|
||||||
|
[data-theme='light'] a:not(.button) {
|
||||||
|
color: var(--link);
|
||||||
|
text-decoration: none;
|
||||||
|
text-underline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme='light'] a:not(.button):hover,
|
||||||
|
[data-theme='light'] a:not(.button):focus-visible {
|
||||||
|
color: var(--link-hover);
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme='light'] a:not(.button):visited {
|
||||||
|
color: var(--link-visited);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Navigation links: keep same bg hover but swap orange for blue in light */
|
||||||
|
[data-theme='light'] .site-nav a:hover {
|
||||||
|
color: var(--link-hover);
|
||||||
|
background-color: var(--surface-raised);
|
||||||
|
}
|
||||||
|
|
||||||
.navbar ul ul { background: var(--elev); border-color: var(--border); box-shadow: var(--shadow-1); }
|
.navbar ul ul { background: var(--elev); border-color: var(--border); box-shadow: var(--shadow-1); }
|
||||||
.navbar ul ul a { color: var(--muted); }
|
.navbar ul ul a { color: var(--muted); }
|
||||||
|
|
||||||
|
|
@ -1018,12 +1090,12 @@ footer { background-color: var(--neutral-0); color: var(--text-muted); }
|
||||||
|
|
||||||
.code-window {
|
.code-window {
|
||||||
/* Fond sombre style éditeur moderne (ex: Dracula/Catppuccin) */
|
/* Fond sombre style éditeur moderne (ex: Dracula/Catppuccin) */
|
||||||
background: #1e1e2e;
|
background: var(--code-bg);
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
/* Une ombre portée pour donner de la profondeur */
|
/* Une ombre portée pour donner de la profondeur */
|
||||||
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
||||||
overflow: hidden; /* Pour que les coins arrondis fonctionnent */
|
overflow: hidden; /* Pour que les coins arrondis fonctionnent */
|
||||||
border: 1px solid rgba(255, 255, 255, 0.05);
|
border: 1px solid var(--border-glass-light);
|
||||||
font-family: 'Fira Code', 'Roboto Mono', 'Courier New', monospace; /* Important: police monospace */
|
font-family: 'Fira Code', 'Roboto Mono', 'Courier New', monospace; /* Important: police monospace */
|
||||||
transform: translateY(0);
|
transform: translateY(0);
|
||||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||||
|
|
@ -1037,12 +1109,12 @@ footer { background-color: var(--neutral-0); color: var(--text-muted); }
|
||||||
|
|
||||||
/* HEADER DE LA FENÊTRE (Style macOS) */
|
/* HEADER DE LA FENÊTRE (Style macOS) */
|
||||||
.window-header {
|
.window-header {
|
||||||
background: #28293d; /* Légèrement plus clair que le fond */
|
background: var(--code-header-bg); /* Légèrement plus clair que le fond */
|
||||||
padding: 12px 16px;
|
padding: 12px 16px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
border-bottom: 1px solid rgba(0,0,0,0.2);
|
border-bottom: 1px solid var(--border-glass-dark);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Les 3 petits points colorés */
|
/* Les 3 petits points colorés */
|
||||||
|
|
@ -1052,9 +1124,9 @@ footer { background-color: var(--neutral-0); color: var(--text-muted); }
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
.dot { width: 12px; height: 12px; border-radius: 50%; }
|
.dot { width: 12px; height: 12px; border-radius: 50%; }
|
||||||
.dot.red { background: #ff5f56; }
|
.dot.red { background: var(--code-dot-red); }
|
||||||
.dot.yellow { background: #ffbd2e; }
|
.dot.yellow { background: var(--code-dot-yellow); }
|
||||||
.dot.green { background: #27c93f; }
|
.dot.green { background: var(--code-dot-green); }
|
||||||
|
|
||||||
/* Le nom du fichier centré */
|
/* Le nom du fichier centré */
|
||||||
.filename {
|
.filename {
|
||||||
|
|
@ -1062,7 +1134,7 @@ footer { background-color: var(--neutral-0); color: var(--text-muted); }
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #a9a9b3;
|
color: var(--code-filename);
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
user-select: none; /* Empêche de sélectionner le texte du titre */
|
user-select: none; /* Empêche de sélectionner le texte du titre */
|
||||||
|
|
@ -1076,7 +1148,7 @@ footer { background-color: var(--neutral-0); color: var(--text-muted); }
|
||||||
|
|
||||||
.code-block {
|
.code-block {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: #cdd6f4; /* Couleur de base du texte */
|
color: var(--code-text); /* Couleur de base du texte */
|
||||||
line-height: 1.7;
|
line-height: 1.7;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
white-space: pre; /* Respecte les espaces et sauts de ligne */
|
white-space: pre; /* Respecte les espaces et sauts de ligne */
|
||||||
|
|
@ -1096,18 +1168,148 @@ footer { background-color: var(--neutral-0); color: var(--text-muted); }
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 30px;
|
width: 30px;
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
color: #5c5f77; /* Gris foncé pour les numéros */
|
color: var(--code-line-number); /* Gris foncé pour les numéros */
|
||||||
text-align: right;
|
text-align: right;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Couleurs des mots-clés (Basé sur les classes span ajoutées dans le HTML) */
|
/* Couleurs des mots-clés (Basé sur les classes span ajoutées dans le HTML) */
|
||||||
.qn { color: #cba6f7; font-weight: bold; } /* def, if, return (Mauve) */
|
.qn { color: var(--syn-qn); font-weight: bold; } /* def, if, return (Mauve) */
|
||||||
.fn { color: #89b4fa; } /* Noms de fonctions (Bleu) */
|
.fn { color: var(--syn-fn); } /* Noms de fonctions (Bleu) */
|
||||||
.st { color: #a6e3a1; } /* Strings / Textes (Vert) */
|
.st { color: var(--syn-st); } /* Strings / Textes (Vert) */
|
||||||
.kw { color: #f9e2af; } /* Booléens, valeurs clés (Jaune/Orange) */
|
.kw { color: var(--syn-kw); } /* Booléens, valeurs clés (Jaune/Orange) */
|
||||||
.cm { color: #6c7086; font-style: italic; } /* Commentaires (Gris) */
|
.cm { color: var(--syn-cm); font-style: italic; } /* Commentaires (Gris) */
|
||||||
.ow { color: #cba6f7; } /* Opérateurs and/or (Mauve) */
|
.ow { color: var(--syn-ow); } /* Opérateurs and/or (Mauve) */
|
||||||
|
|
||||||
|
/* --- SECTION PRICING --- */
|
||||||
|
|
||||||
|
.pricing-section {
|
||||||
|
padding: 80px 20px;
|
||||||
|
max-width: 1000px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pricing-header {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
}
|
||||||
|
.pricing-header h2 { font-size: 2rem; margin-bottom: 10px; }
|
||||||
|
.pricing-header p { color: var(--text-muted); }
|
||||||
|
|
||||||
|
/* La Grille des cartes */
|
||||||
|
.pricing-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
gap: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sur écran large, on met côte à côte */
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.pricing-grid {
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
align-items: center; /* Pour centrer verticalement si tailles différentes */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- STYLE DES CARTES --- */
|
||||||
|
|
||||||
|
.plan-card {
|
||||||
|
background: var(--code-bg); /* Fond sombre carte */
|
||||||
|
border: 1px solid var(--border-glass-light);
|
||||||
|
border-radius: 16px;
|
||||||
|
padding: 30px;
|
||||||
|
position: relative;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-card:hover {
|
||||||
|
transform: translateY(-5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-header {
|
||||||
|
margin-bottom: 25px;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 1px solid color-mix(in oklab, var(--white) 10%, transparent);
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-header h3 { font-size: 1.4rem; margin-bottom: 5px; color: var(--white); }
|
||||||
|
.plan-header .price { font-size: 2rem; font-weight: bold; color: var(--white); margin: 10px 0; }
|
||||||
|
.plan-header p { font-size: 0.9rem; color: var(--text-muted); margin: 0; }
|
||||||
|
|
||||||
|
/* Liste des features */
|
||||||
|
.plan-features {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0 0 30px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-features li {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
color: var(--text);
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-features i {
|
||||||
|
color: var(--success); /* Check vert */
|
||||||
|
margin-top: 4px; /* Alignement visuel */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Bouton pleine largeur dans les cartes */
|
||||||
|
.full-width {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- SPÉCIFICITÉS CARTE PREMIUM --- */
|
||||||
|
|
||||||
|
.plan-card.premium {
|
||||||
|
background: color-mix(in oklab, var(--code-bg) 92%, var(--white) 8%); /* Un poil plus clair pour ressortir */
|
||||||
|
border: 1px solid var(--primary); /* Bordure violette (ou ta couleur primaire) */
|
||||||
|
box-shadow: 0 0 30px color-mix(in oklab, var(--primary) 15%, transparent); /* Glow subtil */
|
||||||
|
transform: scale(1.02); /* Légèrement plus grande par défaut */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Le petit badge "Recommandé" */
|
||||||
|
.badge-popular {
|
||||||
|
position: absolute;
|
||||||
|
top: -12px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
background: var(--primary); /* Ta couleur primaire */
|
||||||
|
color: var(--white);
|
||||||
|
padding: 4px 12px;
|
||||||
|
border-radius: 20px;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Light mode adjustments for plan cards — align with light DA */
|
||||||
|
[data-theme='light'] .plan-card {
|
||||||
|
background: var(--card);
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme='light'] .plan-header {
|
||||||
|
border-bottom: 1px solid color-mix(in oklab, var(--black) 8%, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme='light'] .plan-header h3,
|
||||||
|
[data-theme='light'] .plan-header .price {
|
||||||
|
color: var(--fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme='light'] .plan-card.premium {
|
||||||
|
background: color-mix(in oklab, var(--card) 94%, var(--primary) 6%);
|
||||||
|
border: 1px solid color-mix(in oklab, var(--primary) 60%, var(--border) 40%);
|
||||||
|
box-shadow: 0 0 24px color-mix(in oklab, var(--primary) 18%, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
/* Light theme stylesheet — relies on design tokens */
|
/* Light theme stylesheet — relies on design tokens */
|
||||||
|
|
||||||
|
|
@ -1296,7 +1498,7 @@ input[type="text"], input[type="email"], input[type="password"], textarea {
|
||||||
[data-theme='light'] .button-secondary {
|
[data-theme='light'] .button-secondary {
|
||||||
background-color: var(--accent);
|
background-color: var(--accent);
|
||||||
border-color: var(--accent);
|
border-color: var(--accent);
|
||||||
color: #ffffff;
|
color: var(--white);
|
||||||
}
|
}
|
||||||
[data-theme='light'] .button.button-secondary:hover,
|
[data-theme='light'] .button.button-secondary:hover,
|
||||||
[data-theme='light'] .btn-secondary:hover,
|
[data-theme='light'] .btn-secondary:hover,
|
||||||
|
|
|
||||||
|
|
@ -70,20 +70,43 @@
|
||||||
<p>Posez vos questions et obtenez de l'aide de la communauté et de l'auteur.</p>
|
<p>Posez vos questions et obtenez de l'aide de la communauté et de l'auteur.</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
{% block course %}
|
|
||||||
{% include "courses/partials/list.html" %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
<section class="pricing-teaser">
|
<section class="pricing-section">
|
||||||
<h2>Gratuit pour commencer, Premium pour aller plus loin</h2>
|
<div class="pricing-header">
|
||||||
<ul class="ul-arrow">
|
<h2>Commencez gratuitement, passez Pro quand vous êtes prêt</h2>
|
||||||
<li>Cours d'introduction gratuits</li>
|
<p>Pas de surprise, pas de carte cachée.</p>
|
||||||
<li>Contenu premium détaillé: projets complets, corrections, téléchargements</li>
|
</div>
|
||||||
<li>Accès à vie aux cours achetés</li>
|
|
||||||
</ul>
|
<div class="pricing-grid">
|
||||||
<div class="button-grp">
|
<div class="plan-card free">
|
||||||
<a class="button cta-primary" href="{% url 'register' %}">Créer mon compte</a>
|
<div class="plan-header">
|
||||||
<a class="button cta-secondary" href="{% url 'courses:list' %}">Parcourir les cours</a>
|
<h3>Découverte</h3>
|
||||||
|
<div class="price">0€</div>
|
||||||
|
<p>Pour tester la pédagogie</p>
|
||||||
|
</div>
|
||||||
|
<ul class="plan-features">
|
||||||
|
<li><i class="fa-solid fa-check"></i> Cours d'introduction complets</li>
|
||||||
|
<li><i class="fa-solid fa-check"></i> Accès au code source de base</li>
|
||||||
|
<li><i class="fa-solid fa-check"></i> Accès à la communauté</li>
|
||||||
|
</ul>
|
||||||
|
<a class="button cta-secondary full-width" href="{% url 'register' %}">Créer un compte gratuit</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="plan-card premium">
|
||||||
|
<div class="badge-popular">Recommandé</div>
|
||||||
|
<div class="plan-header">
|
||||||
|
<h3>Premium</h3>
|
||||||
|
<div class="price">À la carte</div> <p>Pour devenir autonome</p>
|
||||||
|
</div>
|
||||||
|
<ul class="plan-features">
|
||||||
|
<li><i class="fa-solid fa-check"></i> <strong>Tous les avantages gratuits</strong></li>
|
||||||
|
<li><i class="fa-solid fa-check"></i> Projets complexes de A à Z</li>
|
||||||
|
<li><i class="fa-solid fa-check"></i> Corrections détaillées en vidéo</li>
|
||||||
|
<li><i class="fa-solid fa-check"></i> Certificat de réussite</li>
|
||||||
|
<li><i class="fa-solid fa-check"></i> Mises à jour à vie</li>
|
||||||
|
</ul>
|
||||||
|
<a class="button cta-primary full-width" href="{% url 'courses:list' %}">Voir les cours Premium</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
@ -101,10 +124,12 @@
|
||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<!-- Simple scroll hint -->
|
|
||||||
<div class="center" aria-hidden="true" style="opacity:.8; margin-top:8px;">Glissez pour parcourir →</div>
|
<div class="center" aria-hidden="true" style="opacity:.8; margin-top:8px;">Glissez pour parcourir →</div>
|
||||||
|
</section>
|
||||||
</section>
|
|
||||||
|
{% block course %}
|
||||||
|
{% include "courses/partials/list.html" %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
<section class="testimonials">
|
<section class="testimonials">
|
||||||
<h2>Ils progressent avec Partir de zéro</h2>
|
<h2>Ils progressent avec Partir de zéro</h2>
|
||||||
|
|
@ -129,4 +154,4 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue