<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}Cassa Clock — Un service de pointage fiable, rapide et pensé pour vous !{% endblock %}</title>
<link rel="icon" type="image/png" href="{{ asset('favicon.png') }}">
<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=Inter:wght@300;400;500;600;700;800;900&family=Sora:wght@600;700;800&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" rel="stylesheet">
<style>
:root{
--bg:#FAFAFB;
--bg-soft:#F4F4F7;
--ink:#0B0B14;
--ink-2:#1B1B28;
--muted:#6B7280;
--muted-2:#9CA3AF;
--line:rgba(11,11,20,.08);
--line-2:rgba(11,11,20,.06);
--brand-1:#6366F1;
--brand-2:#8B5CF6;
--brand-3:#EC4899;
--brand-4:#F59E0B;
--grad: linear-gradient(135deg,#6366F1 0%,#8B5CF6 45%,#EC4899 100%);
--grad-soft: linear-gradient(135deg,rgba(99,102,241,.12) 0%,rgba(236,72,153,.12) 100%);
--shadow-sm: 0 1px 2px rgba(11,11,20,.04), 0 1px 1px rgba(11,11,20,.03);
--shadow-md: 0 8px 24px -8px rgba(11,11,20,.12), 0 4px 12px -4px rgba(11,11,20,.06);
--shadow-lg: 0 24px 60px -20px rgba(99,102,241,.25), 0 12px 30px -10px rgba(236,72,153,.18);
--r-sm:10px; --r-md:14px; --r-lg:20px; --r-xl:28px;
}
*{box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
html,body{margin:0;padding:0}
body{
font-family:'Inter',system-ui,sans-serif;
background:var(--bg);
color:var(--ink);
font-size:16px;
line-height:1.55;
overflow-x:hidden;
}
h1,h2,h3,h4{font-family:'Sora','Inter',sans-serif;letter-spacing:-0.025em;line-height:1.1;margin:0}
p{margin:0;color:var(--muted)}
a{text-decoration:none;color:inherit}
img{max-width:100%;display:block}
.container-x{max-width:1180px;margin:0 auto;padding:0 24px}
/* Decorative */
.bg-grid{
position:absolute;inset:0;
background-image:radial-gradient(circle at 1px 1px, rgba(11,11,20,.07) 1px, transparent 0);
background-size:28px 28px;
mask-image:radial-gradient(ellipse at top, black 30%, transparent 70%);
pointer-events:none;
}
.blob{position:absolute;border-radius:50%;filter:blur(80px);opacity:.55;pointer-events:none;z-index:0}
.blob.b1{width:520px;height:520px;background:#6366F1;top:-160px;left:-120px}
.blob.b2{width:480px;height:480px;background:#EC4899;top:-80px;right:-140px;opacity:.4}
.blob.b3{width:380px;height:380px;background:#F59E0B;bottom:-180px;left:30%;opacity:.25}
/* Navbar */
.nav-wrap{position:sticky;top:0;z-index:50;padding:14px 0;backdrop-filter:saturate(180%) blur(14px);background:rgba(250,250,251,.78);border-bottom:1px solid var(--line-2)}
.nav-bar{display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:flex;align-items:center;gap:10px;font-family:'Sora';font-weight:800;font-size:20px;letter-spacing:-0.02em;color:var(--ink)}
.brand-dot{width:30px;height:30px;border-radius:9px;background:var(--grad);box-shadow:0 6px 18px -4px rgba(99,102,241,.55);display:grid;place-items:center;color:#fff;font-size:14px}
.nav-links{display:flex;gap:32px;align-items:center}
.nav-links a{color:var(--ink-2);font-weight:500;font-size:14.5px;opacity:.85;transition:opacity .15s}
.nav-links a:hover{opacity:1}
.nav-cta{display:flex;align-items:center;gap:10px}
.nav-toggle{display:none;background:none;border:0;font-size:22px;color:var(--ink);cursor:pointer}
/* Buttons */
.btn-x{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 20px;border-radius:12px;font-weight:600;font-size:14.5px;border:1px solid transparent;cursor:pointer;transition:all .2s ease;white-space:nowrap}
.btn-primary-x{background:var(--ink);color:#fff;box-shadow:var(--shadow-md)}
.btn-primary-x:hover{transform:translateY(-1px);box-shadow:var(--shadow-lg);color:#fff}
.btn-grad{background:var(--grad);color:#fff;box-shadow:0 10px 30px -10px rgba(99,102,241,.6)}
.btn-grad:hover{transform:translateY(-1px);box-shadow:0 16px 38px -10px rgba(236,72,153,.6);color:#fff}
.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn-ghost:hover{background:#fff;border-color:var(--ink);box-shadow:var(--shadow-sm);color:var(--ink)}
.btn-white{background:#fff;color:var(--ink);box-shadow:var(--shadow-sm)}
.btn-white:hover{color:var(--ink);transform:translateY(-1px);box-shadow:var(--shadow-md)}
.btn-sm{padding:9px 14px;font-size:13.5px;border-radius:10px}
/* Section commun */
.sec{padding:96px 0;position:relative}
.sec-head{text-align:center;max-width:680px;margin:0 auto 56px}
.sec-eyebrow{display:inline-block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;margin-bottom:14px}
.sec-title{font-size:clamp(30px,3.5vw,46px);font-weight:700;letter-spacing:-0.03em;margin-bottom:16px;color:var(--ink)}
.sec-lead{font-size:17px;color:var(--muted);line-height:1.6}
/* Page header (pour pages secondaires) */
.page-header{position:relative;padding:120px 0 64px;overflow:hidden;text-align:center}
.page-header .bg-grid{opacity:.6}
.page-header .blob.b1{top:-220px}
.page-header > .container-x{position:relative;z-index:2}
.page-header h1{font-size:clamp(36px,4.4vw,56px);font-weight:800;letter-spacing:-0.035em;margin-bottom:14px}
.page-header h1 .grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.page-header .lead{font-size:17px;color:var(--muted);max-width:640px;margin:0 auto}
.crumbs{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted-2);margin-bottom:20px;font-weight:500}
.crumbs a{color:var(--muted)}
.crumbs a:hover{color:var(--ink)}
.crumbs i{font-size:11px}
/* Footer */
footer.public-footer{padding:64px 0 32px;background:#fff;border-top:1px solid var(--line-2)}
.foot{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:48px;margin-bottom:48px}
.foot h5{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:18px;letter-spacing:-0.01em;font-family:'Inter'}
.foot ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.foot a{font-size:14px;color:var(--muted);transition:color .15s}
.foot a:hover{color:var(--ink)}
.foot .about{color:var(--muted);font-size:14.5px;line-height:1.65;margin-top:12px;max-width:300px}
.foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:24px;border-top:1px solid var(--line-2);font-size:13px;color:var(--muted)}
.foot-bottom .socials{display:flex;gap:10px}
.foot-bottom .socials a{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);display:grid;place-items:center;font-size:15px;color:var(--ink-2)}
.foot-bottom .socials a:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
/* Mobile menu */
.mobile-menu{display:none;position:fixed;inset:0;background:rgba(11,11,20,.55);z-index:999;opacity:0;transition:opacity .25s}
.mobile-menu.open{opacity:1}
.mobile-menu .panel{position:absolute;top:0;right:0;width:84%;max-width:340px;height:100%;background:#fff;padding:24px;display:flex;flex-direction:column;gap:6px;transform:translateX(100%);transition:transform .3s}
.mobile-menu.open .panel{transform:translateX(0)}
.mobile-menu .panel a{padding:14px 12px;border-radius:10px;color:var(--ink-2);font-weight:500;font-size:15px}
.mobile-menu .panel a:hover{background:var(--bg-soft)}
.mobile-menu .panel .close{align-self:flex-end;background:none;border:0;font-size:24px;cursor:pointer;color:var(--ink);margin-bottom:12px}
/* Responsive */
@media (max-width: 980px){
.nav-links{display:none}
.nav-toggle{display:inline-flex}
.foot{grid-template-columns:1fr 1fr;gap:32px}
.sec{padding:64px 0}
.page-header{padding:80px 0 48px}
}
@media (max-width: 620px){
.foot{grid-template-columns:1fr}
.nav-cta .btn-ghost{display:none}
}
/* Fade reveal */
.fade-up{opacity:0;transform:translateY(20px);transition:opacity .7s ease, transform .7s ease}
.fade-up.in{opacity:1;transform:none}
.brand-text {
white-space: nowrap; /* empêche retour à la ligne */
}
/* Mobile */
@media (max-width: 576px) {
.brand-text {
font-size: 14px; /* réduit la taille */
}
}
</style>
{% block stylesheets %}{% endblock %}
</head>
<body>
<!-- Navbar -->
<div class="nav-wrap">
<div class="container-x nav-bar">
<a class="brand brand-text" href="{{ path('home') }}">
<span class="brand-dot"><i class="bi bi-clock-history"></i></span>
Cassa Clock
</a>
<nav class="nav-links">
<a href="{{ path('home') }}#apropos">À propos</a>
<a href="{{ path('home') }}#features">Produit</a>
<a href="{{ path('app_tarification_index') }}">Tarifs</a>
<a href="{{ path('home') }}#comment-ca-marche">Comment ça marche</a>
<a href="{{ path('contact') }}">Contact</a>
</nav>
<div class="nav-cta">
{% if app.user %}
<a class="btn-x btn-ghost btn-sm" href="/admin"><i class="bi bi-grid"></i> Mon espace</a>
<a class="btn-x btn-grad btn-sm" href="{{ path('app_logout') }}">Déconnexion</a>
{% else %}
<a class="btn-x btn-ghost btn-sm" href="{{ path('app_login') }}">Connexion</a>
<a class="btn-x btn-grad btn-sm" href="{{ path('company_wizard') }}">Essai gratuit <i class="bi bi-arrow-up-right"></i></a>
{% endif %}
<button class="nav-toggle" id="navToggle" aria-label="Menu"><i class="bi bi-list"></i></button>
</div>
</div>
</div>
<!-- Mobile menu -->
<div class="mobile-menu" id="mobileMenu">
<div class="panel">
<button class="close" id="navClose" aria-label="Fermer"><i class="bi bi-x"></i></button>
<a href="{{ path('home') }}">Accueil</a>
<a href="{{ path('home') }}#apropos">À propos</a>
<a href="{{ path('home') }}#features">Produit</a>
<a href="{{ path('home') }}#pricing">Tarifs</a>
<a href="{{ path('home') }}#comment-ca-marche">Comment ça marche</a>
<a href="{{ path('contact') }}">Contact</a>
<hr style="border:0;border-top:1px solid var(--line-2);margin:14px 0">
{% if app.user %}
<a href="/admin" class="btn-x btn-ghost" style="justify-content:flex-start"><i class="bi bi-grid"></i> Mon espace</a>
<a href="{{ path('app_logout') }}" class="btn-x btn-grad" style="justify-content:flex-start"><i class="bi bi-box-arrow-right"></i> Déconnexion</a>
{% else %}
<a href="{{ path('app_login') }}" class="btn-x btn-ghost" style="justify-content:flex-start"><i class="bi bi-box-arrow-in-right"></i> Connexion</a>
<a href="{{ path('company_wizard') }}" class="btn-x btn-grad" style="justify-content:flex-start"><i class="bi bi-arrow-up-right"></i> Essai gratuit</a>
{% endif %}
</div>
</div>
{% block body %}{% endblock %}
<!-- Footer -->
<footer class="public-footer">
<div class="container-x">
<div class="foot">
<div>
<a class="brand" href="{{ path('home') }}">
<span class="brand-dot"><i class="bi bi-clock-history"></i></span>
Cassa Clock
</a>
<p class="about">Un service de pointage fiable, rapide et pensé pour les équipes africaines.</p>
</div>
<div>
<h5>Produit</h5>
<ul>
<li><a href="{{ path('home') }}#features">Fonctionnalités</a></li>
<li><a href="{{ path('home') }}#pricing">Tarifs</a></li>
<li><a href="{{ path('app_services_index') }}">Services</a></li>
<li><a href="{{ path('home') }}#comment-ca-marche">Comment ça marche</a></li>
</ul>
</div>
<div>
<h5>Société</h5>
<ul>
<li><a href="{{ path('app_aboutus_index') }}">À propos</a></li>
<li><a href="{{ path('contact') }}">Contact</a></li>
<li><a href="{{ path('app_tarification_index') }}">Tarification</a></li>
<li><a href="{{ path('app_programmefidelite_index') }}">Programme fidélité</a></li>
</ul>
</div>
<div>
<h5>Légal</h5>
<ul>
<li><a href="{{ path('app_cgi_index') }}">Conditions générales</a></li>
<li><a href="{{ path('app_privacy_index') }}">Confidentialité</a></li>
</ul>
</div>
</div>
<div class="foot-bottom">
<div>© {{ "now"|date("Y") }} Cassa Clock — Tous droits réservés.</div>
<div class="socials">
<a href="#" aria-label="Facebook"><i class="bi bi-facebook"></i></a>
<a href="#" aria-label="LinkedIn"><i class="bi bi-linkedin"></i></a>
<a href="#" aria-label="Twitter / X"><i class="bi bi-twitter-x"></i></a>
<a href="#" aria-label="WhatsApp"><i class="bi bi-whatsapp"></i></a>
</div>
</div>
</div>
</footer>
<script>
// Mobile menu
function openMobileMenu() {
const m = document.getElementById('mobileMenu');
m.style.display = 'flex';
requestAnimationFrame(() => requestAnimationFrame(() => m.classList.add('open')));
document.body.style.overflow = 'hidden';
}
function closeMobileMenu() {
const m = document.getElementById('mobileMenu');
m.classList.remove('open');
document.body.style.overflow = '';
m.addEventListener('transitionend', () => { m.style.display = 'none'; }, { once: true });
}
document.getElementById('navToggle')?.addEventListener('click', openMobileMenu);
document.getElementById('navClose')?.addEventListener('click', closeMobileMenu);
document.getElementById('mobileMenu')?.addEventListener('click', (e) => { if (e.target.id === 'mobileMenu') closeMobileMenu(); });
// Fade reveal
const io = new IntersectionObserver((entries) => {
entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('in'); });
}, { threshold: 0.12 });
document.querySelectorAll('.fade-up').forEach(el => io.observe(el));
</script>
{% block javascripts %}{% endblock %}
</body>
</html>