:root {
    --vert-elegant: #2C5530;
    --vert-clair: #6C8F5B;
    --doré: #D1A36A;
    --beige: #F5EFE6;
    --fond: #FFFDF9;
    --texte: #2B2B2B;
}

/* Reset */
* { margin:0; padding:0; box-sizing:border-box; }
body {
    font-family:'Inter',sans-serif;
    line-height:1.7;
    color:var(--texte);
    background:var(--fond);
    overflow-x:hidden;
}
img { max-width:100%; display:block; }
.container { max-width:1120px; margin:0 auto; padding:0 20px; }
h1,h2,h3,h4 { font-family:'Playfair Display',serif; }

/* Navbar */
.navbar {
    position:fixed;
    top:0; left:0; right:0;
    background:rgba(255,253,249,0.96);
    backdrop-filter:blur(14px);
    border-bottom:1px solid rgba(0,0,0,0.05);
    z-index:1000;
}
.nav-container {
    max-width:1120px;
    margin:0 auto;
    padding:0.75rem 20px;
    display:flex;
    align-items:center;
    justify-content:space-between;
}
.logo {
    font-size:1.6rem;
    font-weight:700;
    text-decoration:none;
    color:var(--vert-elegant);
}
.nav-menu {
    list-style:none;
    display:flex;
    gap:1.75rem;
}
.nav-menu a {
    text-decoration:none;
    color:var(--texte);
    font-size:0.95rem;
    letter-spacing:0.03em;
    text-transform:uppercase;
    position:relative;
}
.nav-menu a::after {
    content:"";
    position:absolute;
    left:0; bottom:-4px;
    width:0;
    height:1px;
    background:var(--doré);
    transition:width 0.25s;
}
.nav-menu a:hover::after { width:100%; }
.hamburger { display:none; cursor:pointer; font-size:1.4rem; }

/* Hero */
.hero {
    position:relative;
    min-height:80vh;
    display:flex;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:0 20px;
    color:#fff;
    background:
        linear-gradient(135deg,rgba(0,0,0,0.45),rgba(0,0,0,0.55)),
        url("cantine.jpg") center/cover no-repeat;
}
.hero-content {
    position:relative;
    z-index:2;
    margin-top:4.5rem;
}
.hero-content h1 {
    font-size:clamp(2.6rem,6vw,4.2rem);
    letter-spacing:0.06em;
    text-transform:uppercase;
}
.hero-subtitle {
    margin-top:1.5rem;
    font-size:1.05rem;
    max-width:520px;
    margin-left:auto;
    margin-right:auto;
}
.hero-buttons {
    margin-top:2.5rem;
    display:flex;
    justify-content:center;
    gap:1rem;
    flex-wrap:wrap;
}

/* Boutons */
.cta-primary,
.cta-secondary {
    padding:0.9rem 2.4rem;
    border-radius:40px;
    font-size:0.95rem;
    letter-spacing:0.08em;
    text-transform:uppercase;
    text-decoration:none;
    font-weight:600;
    transition:all 0.3s;
}
.cta-primary {
    background:var(--vert-elegant);
    color:#fff;
}
.cta-primary:hover { background:#1f3c22; }
.cta-secondary {
    border:1px solid #fff;
    color:#fff;
    background:transparent;
}
.cta-secondary:hover {
    background:#fff;
    color:var(--vert-elegant);
}

/* Sections */
.services,
.menus,
.contact {
    padding:5.5rem 0;
}
.services:nth-of-type(odd) { background:#ffffff; }
.services:nth-of-type(even) { background:var(--beige); }

.services h2,
.menus h2 {
    text-align:center;
    font-size:2.1rem;
    letter-spacing:0.12em;
    text-transform:uppercase;
    color:var(--vert-elegant);
    margin-bottom:3.5rem;
}

/* Services cards */
.service-grid {
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
    gap:2rem;
}
.service-card {
    background:#fff;
    padding:2.5rem 2rem;
    border-radius:16px;
    border:1px solid rgba(0,0,0,0.03);
    box-shadow:0 18px 40px rgba(0,0,0,0.04);
}
.service-card h3 {
    font-size:1.15rem;
    margin-bottom:0.75rem;
    color:var(--vert-elegant);
    letter-spacing:0.06em;
    text-transform:uppercase;
}
.service-card p {
    font-size:0.95rem;
    color:#555;
}

/* Menus */
.menus { background:#fff; }
.menu-grid {
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
    gap:2rem;
}
.menu-card {
    background:var(--beige);
    border-radius:16px;
    padding:2rem 1.8rem;
}
.menu-card h3 {
    font-size:1.2rem;
    margin-bottom:1rem;
    color:var(--vert-elegant);
    text-transform:uppercase;
    letter-spacing:0.08em;
}
.menu-items div {
    font-size:0.96rem;
    padding:0.35rem 0;
    border-bottom:1px solid rgba(0,0,0,0.05);
}
.menu-items div:last-child { border-bottom:none; }

/* Contact */
.contact { background:var(--beige); }
.contact-content {
    display:grid;
    grid-template-columns:1.1fr 1.2fr;
    gap:2.5rem;
    align-items:start;
}
.contact-info h2 {
    font-size:2rem;
    letter-spacing:0.12em;
    text-transform:uppercase;
    color:var(--vert-elegant);
    margin-bottom:1.5rem;
}
.contact-details p {
    font-size:0.98rem;
    margin-bottom:0.4rem;
    display:flex;
    align-items:center;
    gap:0.5rem;
}
.contact-details a {
    color:var(--vert-elegant);
    text-decoration:none;
}
.contact-details a:hover { text-decoration:underline; }
.contact-icon {
    width:20px;
    height:20px;
}

/* Horaires */
.opening-hours {
    margin-top:1.5rem;
}
.opening-hours h3 {
    font-size:1.05rem;
    letter-spacing:0.08em;
    text-transform:uppercase;
    margin-bottom:0.4rem;
    color:var(--vert-elegant);
}
.opening-hours table {
    width:100%;
    border-collapse:collapse;
    font-size:0.9rem;
}
.opening-hours td {
    padding:0.15rem 0;
}

/* Map */
.contact-map {
    margin-top:1.8rem;
}
.contact-map h3 {
    display:flex;
    align-items:center;
    gap:0.4rem;
    font-size:1.05rem;
    letter-spacing:0.08em;
    text-transform:uppercase;
    margin-bottom:0.5rem;
    color:var(--vert-elegant);
}

/* Formulaire */
.contact-form {
    background:#fff;
    border-radius:18px;
    padding:2.2rem 2rem;
    box-shadow:0 18px 40px rgba(0,0,0,0.06);
}
.contact-form input,
.contact-form select,
.contact-form textarea {
    width:100%;
    padding:0.85rem 1rem;
    margin-bottom:1rem;
    border-radius:10px;
    border:1px solid rgba(0,0,0,0.12);
    font-family:inherit;
    font-size:0.95rem;
}
.contact-form input:focus,
.contact-form select:focus,
.contact-form textarea:focus {
    outline:none;
    border-color:var(--vert-elegant);
}
.contact-form button {
    width:100%;
    border:none;
    border-radius:999px;
    padding:0.95rem;
    background:var(--vert-elegant);
    color:#fff;
    font-weight:600;
    letter-spacing:0.1em;
    text-transform:uppercase;
    cursor:pointer;
    transition:background 0.25s;
}
.contact-form button:hover { background:#1f3c22; }

.two-cols {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:0.75rem;
    margin-bottom:1rem;
}
.hidden { display:none; }

/* Footer */
footer {
    background:#111;
    color:#f3f3f3;
    text-align:center;
    padding:2rem 0;
    font-size:0.9rem;
}

/* Responsive */
@media (max-width:900px) {
    .nav-menu { display:none; }
    .hamburger { display:block; }
    .contact-content { grid-template-columns:1fr; }
}
