/* Finition des sections : séparation par l'espace, sans traits ni panneau autour du formulaire. */
.section,footer{border-top:0}
.contact-section{background:transparent}
.contact-panel{padding:0;border:0;border-radius:0;background:transparent;color:var(--text);box-shadow:none}
.contact-form label{color:var(--text)}
.contact-form label span,.contact-notice,.contact-message-label span{color:var(--muted)}
.contact-form input,.contact-form select,.contact-form textarea{border-color:var(--line);background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--text)}
.contact-form option{background:var(--surface);color:var(--text)}
.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--muted)}
.contact-notice{min-height:1.5em;margin-top:10px;padding:0;border:1px solid transparent;border-radius:12px;transition:background .2s ease,border-color .2s ease,color .2s ease,padding .2s ease;outline:none}
.contact-notice.is-error,.contact-notice.is-success{padding:12px 14px;font-weight:700}
.contact-notice.is-error{color:var(--text);border-color:color-mix(in srgb,var(--pink) 70%,var(--line));background:color-mix(in srgb,var(--pink) 12%,var(--surface))}
.contact-notice.is-success{color:var(--text);border-color:color-mix(in srgb,#2f9d63 55%,var(--line));background:color-mix(in srgb,#2f9d63 10%,var(--surface))}
.contact-notice:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--pink) 28%,transparent)}

/* Mosaïque médias : cadre stable, miniatures carrées et animation sans déplacement du layout. */
.media-section{overflow:visible;padding:clamp(42px,5vw,76px) max(5vw,28px)}
.media-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-flow:dense;gap:clamp(8px,1vw,14px);width:min(100%,1320px);margin:0 auto;padding:clamp(10px,1.35vw,18px);border:1px solid color-mix(in srgb,var(--line) 76%,transparent);border-radius:clamp(18px,2vw,28px);background:color-mix(in srgb,var(--surface) 80%,transparent);box-shadow:0 20px 64px #26142e14;isolation:isolate}
.media-card,.media-card.ratio-portrait,.media-card.ratio-landscape{position:relative;display:block;width:100%;aspect-ratio:1;margin:0;padding:0;border:0;border-radius:clamp(10px,1.2vw,16px);overflow:hidden;background:#251530;box-shadow:0 8px 26px #26142e20;cursor:pointer;outline:2px solid transparent;outline-offset:-2px;transform:translateZ(0);transition:transform .32s cubic-bezier(.22,.8,.32,1),box-shadow .32s ease,outline-color .25s ease}
.media-card .media-frame,.media-card .media-frame.ratio-portrait,.media-card .media-frame.ratio-landscape{width:100%;height:100%;aspect-ratio:1}
.media-card .media-frame img{width:100%;height:100%;object-fit:cover;transform:scale(1.001);filter:saturate(.96) contrast(1.01);transition:transform .55s cubic-bezier(.2,.8,.2,1),filter .4s ease}
.media-card::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;background:linear-gradient(145deg,#7130c800 35%,#e72f8826 68%,#ed71002e);transition:opacity .32s ease}
.media-card:active{transform:scale(.985)}

/* Mosaïque : 5 colonnes sur ordinateur, 3 sur tablette, 2 sur mobile. Les mises en avant viennent du champ `layout` de config/site.json
   (`wide` = 2 colonnes, `tall` = 2 rangées). Le nombre de cellules (médias + mises en avant) doit être un multiple de 30 pour ne laisser
   aucun vide à 5, 3 et 2 colonnes : tools/validate-site.mjs le vérifie. */
.media-card[data-media-layout="tall"]{grid-row:span 2;aspect-ratio:1/2}
.media-card[data-media-layout="wide"]{grid-column:span 2;aspect-ratio:2/1}
.media-card[data-media-layout] .media-frame{aspect-ratio:inherit}

@media(hover:hover) and (pointer:fine){.media-card:hover{z-index:3;transform:translateY(-5px) scale(1.025);outline-color:color-mix(in srgb,var(--pink) 64%,transparent);box-shadow:0 18px 42px #26142e38}.media-card:nth-child(3n+2):hover{transform:translateY(-5px) scale(1.025) rotate(.55deg)}.media-card:nth-child(3n):hover{transform:translateY(-5px) scale(1.025) rotate(-.55deg)}.media-card:hover .media-frame img{transform:scale(1.085);filter:saturate(1.12) contrast(1.045)}.media-card:hover::after{opacity:1}}
@media(max-width:1100px){.media-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.media-section{padding:clamp(34px,5vw,54px) max(4vw,20px)}}
@media(max-width:620px){.media-section{padding:28px 18px}.media-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px;border-radius:18px}.media-card,.media-card.ratio-portrait,.media-card.ratio-landscape{border-radius:10px}}
@media(prefers-reduced-motion:reduce){.media-card,.media-card .media-frame img,.media-card::after{transition:none!important}.media-card:hover,.media-card:nth-child(3n+2):hover,.media-card:nth-child(3n):hover{transform:none!important}.media-card:hover .media-frame img{transform:none!important}.contact-notice{transition:none}}

/* Agenda des concerts */
.agenda-section>h2{margin-top:6px}.agenda-list{list-style:none;margin:0;padding:0;display:grid;gap:18px;max-width:900px}.agenda-card{display:flex;gap:22px;align-items:center;padding:20px 24px;background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow)}.agenda-date{flex:none;display:grid;justify-items:center;min-width:76px;padding:10px 12px;border-radius:16px;background:linear-gradient(135deg,var(--pink),var(--orange));color:#fff;line-height:1}.agenda-day{font-family:Bangers,sans-serif;font-size:42px;letter-spacing:.02em}.agenda-month{font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.12em}.agenda-body h3{margin:0 0 6px;font-family:Bangers,sans-serif;font-size:clamp(26px,3vw,34px);letter-spacing:.03em;font-weight:400}.agenda-body p{margin:3px 0;color:var(--muted);font-size:16px;line-height:1.5}.agenda-modality{color:var(--purple)!important;font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:13px!important}.agenda-phone a{text-decoration:none;font-weight:700;color:var(--text)}.agenda-phone a:hover{text-decoration:underline}.agenda-empty{max-width:900px;font-size:18px;color:var(--muted)}
@media(max-width:520px){.agenda-card{gap:14px;padding:16px}.agenda-date{min-width:62px}.agenda-day{font-size:34px}}
