
:root {
    --vert: #123d30;
    --bouton: #245640;
    --fond: #faf9f5;
    --gris: #606c65;
}
* { box-sizing: border-box; }
body {
    margin: 0;
    font-family: Arial, sans-serif;
    background: var(--fond);
    color: var(--vert);
}
a { color: inherit; }
button, input, select { font: inherit; }
.conteneur {
    width: min(1400px, 92%);
    margin: auto;
}
header {
    background: white;
    border-bottom: 1px solid #e5eadd;
}
.navigation {
    min-height: 85px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}
.logo {
    font-size: 26px;
    font-weight: 800;
    text-decoration: none;
    letter-spacing: -1px;
}
.logo span { color: #e7826e; }
.bouton {
    display: inline-block;
    background: var(--bouton);
    color: white;
    padding: 15px 22px;
    border-radius: 12px;
    border: 0;
    text-decoration: none;
    font-weight: bold;
    cursor: pointer;
    text-align: center;
}
.bouton:hover { background: #163f2e; }
a:focus-visible, button:focus-visible,
input:focus-visible, select:focus-visible, summary:focus-visible {
    outline: 3px solid #e7826e;
    outline-offset: 4px;
}
.hero {
    padding: 64px 0 48px;
    background-color: #f5f2e9;
    background-image:
        linear-gradient(90deg, #faf7f0 0%, rgba(250,247,240,.96) 30%, rgba(250,247,240,.82) 51%, rgba(250,247,240,.12) 78%),
        url('fete-village-optimisee.webp');
    background-size: cover;
    background-position: center, center right;
}
.mention {
    text-transform: uppercase;
    letter-spacing: 2px;
    font-size: 12px;
    font-weight: bold;
}
h1 {
    font-size: clamp(36px, 5vw, 65px);
    line-height: 1.06;
    letter-spacing: -2px;
    margin: 22px 0;
    max-width: 850px;
    color: #09291e;
}
.introduction {
    font-size: 20px;
    max-width: 760px;
    color: #344d40;
    line-height: 1.6;
}
.recherche {
    display: grid;
    grid-template-columns: 1.2fr .85fr 1fr 1.2fr auto;
    align-items: end;
    gap: 14px;
    margin-top: 30px;
    max-width: 1280px;
    padding: 18px;
    background: white;
    border-radius: 18px;
    box-shadow: 0 8px 30px #163b3010;
}
.champ { min-width: 0; }
.champ label {
    display: block;
    font-size: 12px;
    font-weight: bold;
    margin-bottom: 8px;
}
.champ input, .champ select {
    width: 100%;
    min-width: 0;
    border: 1px solid #dce3d6;
    border-radius: 8px;
    padding: 12px;
    color: var(--vert);
    background: white;
}
.reinitialiser {
    display: inline-block;
    margin-top: 18px;
    font-size: 14px;
}
main { padding: 42px 0; }
h2 {
    font-size: clamp(26px, 3vw, 36px);
    letter-spacing: -1px;
    margin: 0 0 12px;
}
.note { color: var(--gris); line-height: 1.6; }
.grille {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 22px;
    margin-top: 25px;
}
.carte {
    background: white;
    border: 1px solid #e8eadd;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 6px 22px #163b3009;
}
.visuel {
    height: 250px;
    display: grid;
    place-items: center;
    position: relative;
    background: linear-gradient(130deg, #e2ead6, #f5e5ce);
}
.icone { font-size: 52px; }
.date {
    position: absolute;
    left: 15px;
    top: 15px;
    background: white;
    border-radius: 10px;
    padding: 10px 13px;
    text-align: center;
    color: #bd5344;
}
.date { pointer-events: none; box-shadow: 0 3px 12px #00000015; }
.date strong { display: block; font-size: 28px; }
.contenu { padding: 22px; overflow-wrap: anywhere; }
h3 { margin: 0 0 12px; font-size: 22px; }
.lieu, .horaire { font-size: 14px; line-height: 1.5; }
.etiquette {
    display: inline-block;
    background: #eef1e8;
    border-radius: 20px;
    padding: 7px 12px;
    font-size: 12px;
    margin: 4px 4px 4px 0;
}
details { margin-top: 18px; }
summary { cursor: pointer; font-weight: bold; }
.description {
    white-space: pre-wrap;
    line-height: 1.6;
    color: var(--gris);
}
.vide {
    background: white;
    border: 1px solid #e1e7da;
    border-radius: 16px;
    padding: 30px;
    margin-top: 24px;
    line-height: 1.6;
}
.organisation {
    margin-top: 38px;
    padding: 30px;
    border-radius: 18px;
    background: #e3e9d9;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 25px;
}
.organisation h2 { font-size: 26px; }
.organisation p { line-height: 1.6; }
footer {
    border-top: 1px solid #e1e5db;
    padding: 25px 0;
    color: var(--gris);
    font-size: 13px;
}
footer .conteneur {
    display: flex;
    justify-content: space-between;
    gap: 20px;
}
@media (max-width: 1100px) {
    .recherche { grid-template-columns: 1fr 1fr; }
    .grille { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
    .navigation { padding: 15px 0; flex-wrap: wrap; }
    .logo { font-size: 23px; }
    .navigation .bouton { font-size: 13px; padding: 12px; }
    .hero {
        padding: 32px 0;
        background-image:
            linear-gradient(90deg, rgba(250,247,240,.97), rgba(250,247,240,.88)),
            url('fete-village-optimisee.webp');
    }
    .visuel { height: 240px; }
    footer .conteneur { flex-wrap: wrap; }
    h1 { letter-spacing: -1px; }
    .introduction { font-size: 17px; }
    .recherche, .grille { grid-template-columns: 1fr; }
    .organisation { display: block; padding: 23px; }
}

.recherche {max-width:none;grid-template-columns:1.2fr .8fr 1fr 1.2fr auto}
.options-sorties {grid-column:1 / -1;display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.options-sorties label {display:flex;align-items:center;gap:7px;margin:0;font-size:15px}
.options-sorties input {width:auto}
.raccourcis {display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}
.raccourcis a,.vues a,.pagination a {display:inline-block;border-radius:24px;padding:10px 15px;background:#e8edde;text-decoration:none}
[aria-current] {font-weight:bold;outline:2px solid #245640;outline-offset:2px}
.vues,.pagination{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin:20px 0}
.suggestions{position:relative;background:#fff;max-height:240px;overflow:auto;z-index:1100;border-radius:8px;box-shadow:0 4px 15px #0002}
.suggestions button{display:block;width:100%;padding:12px;text-align:left;border:0;background:#fff;color:#123d30;cursor:pointer}
.suggestions button:hover,.suggestions button:focus{background:#e8edde}
#carte{height:60vh;min-height:340px;border-radius:16px;margin:20px 0;z-index:0}
.fiche-popup{max-height:300px;overflow:auto}.fiche-popup article+article{border-top:1px solid #ddd;padding-top:12px}
[hidden]{display:none!important}.erreur{color:#8b2518}.liste-carte{margin:20px 0}
@media(max-width:1100px){.recherche{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.recherche{grid-template-columns:1fr}.options-sorties{align-items:flex-start;flex-direction:column}}
