:root {
  --purple: #66329a;
  --purple-dark: #24113f;
  --purple-light: #a56be0;
  --yellow: #ffd42a;
  --black: #0a0810;
  --white: #fff;
  --soft: #f3eff7;
  --text: #1b1622;
  --max: 1180px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-family: Arial, Helvetica, sans-serif; color: var(--text); background: var(--soft); line-height: 1.55; }
a { color: inherit; }
img { max-width: 100%; display: block; }
.site-header { position: sticky; top: 0; z-index: 50; display: flex; align-items: center; justify-content: space-between; min-height: 76px; padding: 0 5vw; color: white; background: rgba(10,8,16,.94); backdrop-filter: blur(12px); border-bottom: 1px solid rgba(255,255,255,.1); }
.brand { text-decoration: none; font-size: 1.4rem; font-weight: 900; letter-spacing: -.06em; }
.brand-mark { color: var(--yellow); }
.main-nav { display: flex; align-items: center; gap: 1.4rem; }
.main-nav a { text-decoration: none; font-weight: 700; font-size: .92rem; }
.main-nav a:hover { color: var(--yellow); }
.nav-photo { padding: .7rem 1rem; border-radius: 999px; color: var(--black)!important; background: var(--yellow); }
.menu-toggle { display: none; font-size: 1.6rem; color: white; background: none; border: 0; }
.hero { position: relative; overflow: hidden; display: grid; grid-template-columns: 1.1fr .75fr; align-items: center; gap: 4rem; min-height: calc(100vh - 76px); padding: 6rem max(5vw, calc((100vw - var(--max))/2)); color: white; background: radial-gradient(circle at 20% 20%, #59258c 0, #24113f 35%, #0a0810 78%); }
.hero-content, .hero-poster-wrap { position: relative; z-index: 2; }
.hero-glow { position:absolute; border-radius:50%; filter: blur(80px); opacity:.35; }
.hero-glow-one { width: 320px; height: 320px; background: var(--yellow); right: 20%; top: -150px; }
.hero-glow-two { width: 380px; height: 380px; background: var(--purple-light); left: -180px; bottom: -180px; }
.eyebrow { margin: 0 0 .8rem; text-transform: uppercase; font-weight: 900; letter-spacing: .16em; font-size: .78rem; color: var(--yellow); }
.hero h1 { margin: 0; font-size: clamp(4rem, 10vw, 8.2rem); line-height: .82; letter-spacing: -.075em; text-transform: uppercase; }
.hero h1 span { color: var(--yellow); }
.hero h1 strong { display: block; font-size: .33em; margin-top: .35em; letter-spacing: .12em; color: white; }
.hero-date { margin: 1.6rem 0 .8rem; font-size: clamp(1.7rem, 4vw, 3rem); font-weight: 900; text-transform: uppercase; }
.hero-intro { max-width: 650px; font-size: 1.08rem; color: #ddd3e8; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 1rem; margin: 2rem 0; }
.button { display: inline-flex; justify-content: center; align-items: center; min-height: 50px; padding: .85rem 1.25rem; border-radius: 10px; text-decoration: none; font-weight: 900; text-transform: uppercase; letter-spacing: .04em; transition: .2s transform, .2s box-shadow; }
.button:hover { transform: translateY(-2px); box-shadow: 0 12px 25px rgba(0,0,0,.25); }
.button-primary { background: var(--yellow); color: var(--black); }
.button-secondary { border: 2px solid white; color: white; }
.hero-highlights { display: flex; flex-wrap: wrap; gap: .7rem; }
.hero-highlights span { padding: .55rem .8rem; border: 1px solid rgba(255,255,255,.22); border-radius: 999px; background: rgba(255,255,255,.06); font-size: .84rem; }
.hero-poster-wrap { transform: rotate(2deg); }
.hero-poster-wrap img { max-height: 72vh; margin: auto; border-radius: 8px; box-shadow: 0 30px 70px rgba(0,0,0,.5); }
.section { padding: 6rem max(5vw, calc((100vw - var(--max))/2)); }
.section-heading { max-width: 760px; margin: 0 auto 2.5rem; text-align: center; }
.section-heading.left { margin-left: 0; text-align: left; }
.section-heading h2, .poster-copy h2, .contact-section h2 { margin: 0; font-size: clamp(2.2rem, 5vw, 4.2rem); line-height: 1; text-transform: uppercase; letter-spacing: -.05em; }
.section-heading p:last-child { color: #6e6477; }
.program-section { background: white; }
.day-switch { display: flex; justify-content: center; gap: .8rem; margin-bottom: 2rem; }
.day-tab { padding: .85rem 1.4rem; border: 0; border-radius: 999px; background: #eee7f4; font-weight: 900; cursor: pointer; }
.day-tab.active { background: var(--purple); color: white; }
.artist-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 1rem; }
.artist-card { min-height: 190px; display:flex; flex-direction:column; justify-content:flex-end; padding: 1.4rem; border-radius: 16px; color:white; background: linear-gradient(145deg, #32164f, #7b42aa); box-shadow: 0 12px 30px rgba(65,30,95,.12); }
.artist-card.featured { min-height: 240px; background: linear-gradient(145deg, #120b19, #54227b); }
.artist-card h3 { margin: .25rem 0 0; font-size: 1.8rem; line-height: 1; text-transform: uppercase; }
.style { font-size: .78rem; font-weight: 800; color: var(--yellow); text-transform: uppercase; }
.info-section { background: var(--soft); }
.info-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 1rem; }
.info-card { padding: 1.6rem; border-radius: 16px; background: white; box-shadow: 0 12px 30px rgba(36,17,63,.08); }
.info-card h3 { margin: .7rem 0 .4rem; }
.info-card p { color: #6e6477; }
.info-card a { font-weight: 900; color: var(--purple); }
.info-icon { font-size: 2rem; }
.poster-section { display:grid; grid-template-columns: 1fr .8fr; gap: 5rem; align-items:center; color: white; background: var(--purple-dark); }
.poster-copy p:not(.eyebrow) { max-width: 580px; color: #d7cae2; }
.poster-section img { max-height: 760px; margin:auto; border-radius:8px; box-shadow:0 25px 60px rgba(0,0,0,.4); }
.partners-section { background:white; }
.partner-list { display:flex; flex-wrap:wrap; justify-content:center; gap:1rem; }
.partner-list span { padding:1.2rem 1.5rem; border-radius:12px; background:#f5f0f8; font-weight:900; color:#54455e; }
.contact-section { display:flex; justify-content:space-between; align-items:center; gap:3rem; color:white; background: linear-gradient(120deg, #50227c, #1b0d2b); }
.contact-section p:not(.eyebrow) { color:#d8cee1; }
.social-links { display:flex; flex-direction:column; gap:.8rem; min-width:280px; }
.social-links a { padding:1rem 1.2rem; border:1px solid rgba(255,255,255,.25); border-radius:10px; text-decoration:none; font-weight:900; }
.social-links a:hover { background:var(--yellow); color:var(--black); }
footer { display:flex; flex-wrap:wrap; justify-content:space-between; gap:1rem; padding:2rem 5vw; color:#cfc4d8; background:var(--black); }
footer a { color:var(--yellow); font-weight:900; }
.footer-brand { color:white; font-weight:900; }
@media (max-width: 950px) {
  .menu-toggle { display:block; }
  .main-nav { display:none; position:absolute; top:76px; left:0; right:0; flex-direction:column; align-items:stretch; padding:1.2rem 5vw 1.6rem; background:#0a0810; }
  .main-nav.open { display:flex; }
  .main-nav a { padding:.7rem 0; }
  .nav-photo { text-align:center; }
  .hero { grid-template-columns:1fr; text-align:center; padding-top:4rem; }
  .hero-intro { margin-left:auto; margin-right:auto; }
  .hero-actions, .hero-highlights { justify-content:center; }
  .hero-poster-wrap img { max-height:620px; }
  .artist-grid { grid-template-columns:repeat(2,1fr); }
  .info-grid { grid-template-columns:repeat(2,1fr); }
  .poster-section { grid-template-columns:1fr; text-align:center; }
  .contact-section { flex-direction:column; align-items:flex-start; }
  .social-links { width:100%; }
}
@media (max-width: 600px) {
  .site-header { min-height:68px; }
  .main-nav { top:68px; }
  .hero { min-height:auto; padding-top:3.5rem; gap:2.5rem; }
  .hero h1 { font-size:4.25rem; }
  .hero-date { font-size:1.55rem; }
  .hero-actions .button { width:100%; }
  .section { padding-top:4rem; padding-bottom:4rem; }
  .artist-grid, .info-grid { grid-template-columns:1fr; }
  .artist-card, .artist-card.featured { min-height:165px; }
  .day-switch { flex-direction:column; }
  .poster-section img { max-height:none; }
  footer { flex-direction:column; }
}

/* V2 : logo officiel, cartes artistes avec photos et fenêtre de présentation */
.brand{display:flex;align-items:center;min-width:92px;height:68px}
.brand img{width:88px;height:62px;object-fit:contain;filter:drop-shadow(0 3px 7px rgba(0,0,0,.35))}
.day-switch{gap:1.4rem;margin:0 auto 3.5rem;padding:1rem 0}
.day-tab{min-width:150px;padding:1rem 1.8rem;font-size:1rem;box-shadow:0 8px 18px rgba(36,17,63,.08)}
.artist-card{position:relative;overflow:hidden;min-height:260px;padding:0;cursor:pointer;isolation:isolate;transition:transform .22s ease,box-shadow .22s ease}
.artist-card.featured{min-height:260px}
.artist-card:hover,.artist-card:focus{transform:translateY(-6px);box-shadow:0 18px 38px rgba(65,30,95,.24);outline:3px solid var(--yellow);outline-offset:2px}
.artist-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.artist-card:hover img{transform:scale(1.05)}
.artist-overlay{position:absolute;inset:auto 0 0;padding:3.4rem 1.25rem 1.25rem;background:linear-gradient(transparent,rgba(10,8,16,.96));z-index:2}
.artist-card h3{margin:.3rem 0 0;font-size:1.65rem}
.discover{display:inline-block;margin-top:.65rem;font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:white;opacity:.78}
.artist-modal{position:fixed;inset:0;display:none;z-index:1000;padding:1.2rem;align-items:center;justify-content:center}
.artist-modal.open{display:flex}
.modal-backdrop{position:absolute;inset:0;background:rgba(6,4,10,.82);backdrop-filter:blur(8px)}
.modal-content{position:relative;z-index:2;display:grid;grid-template-columns:minmax(260px,.85fr) 1.15fr;width:min(920px,96vw);max-height:90vh;overflow:auto;border:2px solid rgba(255,212,42,.8);border-radius:22px;background:#160b24;color:white;box-shadow:0 30px 90px rgba(0,0,0,.55)}
.modal-content>img{width:100%;height:100%;min-height:420px;object-fit:cover}
.modal-copy{padding:3rem 2.5rem;align-self:center}
.modal-copy h2{margin:.5rem 0 1rem;font-size:clamp(2.2rem,5vw,4rem);line-height:.95;text-transform:uppercase}
.modal-copy p{color:#ddd2e6;font-size:1.05rem}
.modal-day{display:block;margin-bottom:.5rem;font-weight:900;color:var(--yellow);text-transform:uppercase;letter-spacing:.12em;font-size:.78rem}
.modal-close{position:absolute;right:1rem;top:1rem;z-index:3;width:46px;height:46px;border:0;border-radius:50%;font-size:2rem;line-height:1;background:var(--yellow);color:#09060d;cursor:pointer}
body.modal-open{overflow:hidden}
@media(max-width:700px){.brand{height:60px}.brand img{width:76px;height:54px}.day-switch{gap:.9rem;margin-bottom:2.5rem}.day-tab{min-width:0;flex:1;padding:.9rem .7rem}.modal-content{grid-template-columns:1fr}.modal-content>img{min-height:230px;max-height:320px}.modal-copy{padding:2rem 1.4rem}.artist-card,.artist-card.featured{min-height:230px}}

.festival-day { margin-top: 2.5rem; }
.festival-day + .festival-day { margin-top: 5.5rem; padding-top: 4.5rem; border-top: 2px solid rgba(104, 48, 157, .18); }
.day-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; margin-bottom:1.6rem; padding:1.1rem 1.35rem; border-radius:18px; background:linear-gradient(135deg,#1b0929,#67309d); color:#fff; box-shadow:0 16px 34px rgba(46,18,70,.18); }
.day-heading h3 { margin:0; font-size:clamp(1.8rem,4vw,3rem); line-height:1; text-transform:uppercase; }
.day-kicker { margin:0; color:#ffd423; font-weight:900; text-transform:uppercase; letter-spacing:.08em; font-size:.82rem; }
.festival-day-saturday .day-heading { background:linear-gradient(135deg,#321044,#7a3db1); }

@media (max-width:700px){
  .festival-day { margin-top:2rem; }
  .festival-day + .festival-day { margin-top:4rem; padding-top:3rem; }
  .day-heading { align-items:flex-start; flex-direction:column; padding:1rem 1.1rem; }
  .day-heading h3 { font-size:1.8rem; }
}

/* V4 : grand bandeau officiel JOL’FEST */
.festival-header {
  position: relative;
  z-index: 50;
  background: #111018;
}
.header-visual-link {
  display: block;
  width: 100%;
  background: #15131b;
  overflow: hidden;
}
.header-visual {
  display: block;
  width: 100%;
  height: clamp(230px, 31vw, 470px);
  object-fit: cover;
  object-position: center 48%;
}
.festival-header .site-header {
  position: sticky;
  top: 0;
  min-height: 76px;
  background: rgba(10, 8, 16, .97);
  border-bottom: 1px solid rgba(255, 212, 42, .18);
  backdrop-filter: blur(12px);
}
.brand-text {
  color: var(--yellow);
  text-decoration: none;
  font-size: 1.35rem;
  font-weight: 950;
  letter-spacing: .03em;
}
@media (max-width: 950px) {
  .festival-header .main-nav { top: 76px; }
}
@media (max-width: 600px) {
  .header-visual {
    height: 245px;
    object-position: 35% center;
  }
  .festival-header .site-header { min-height: 68px; }
  .festival-header .main-nav { top: 68px; }
  .brand-text { font-size: 1.1rem; }
}


/* V5 : en-tête compact avec le logo officiel et le titre jaune */
.header-visual-link,
.header-visual {
  display: none !important;
}
.compact-brand-header {
  background: linear-gradient(100deg, #100b17 0%, #1f0d31 62%, #3b1760 100%);
  border-bottom: 1px solid rgba(255, 212, 42, .22);
}
.compact-brand {
  width: min(1180px, 92vw);
  min-height: 150px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 2rem;
  padding: 1rem 0;
  text-decoration: none;
}
.compact-brand img {
  width: 150px;
  height: 122px;
  flex: 0 0 auto;
  object-fit: contain;
  filter: drop-shadow(0 10px 22px rgba(0,0,0,.38));
}
.compact-brand-copy {
  display: flex;
  flex-direction: column;
  gap: .4rem;
  min-width: 0;
}
.compact-brand-copy strong {
  color: var(--yellow);
  font-size: clamp(2.7rem, 6vw, 5.2rem);
  line-height: .9;
  letter-spacing: -.055em;
  text-transform: uppercase;
  text-shadow: 0 4px 18px rgba(255, 212, 42, .16);
}
.compact-brand-copy small {
  color: #fff;
  font-size: clamp(.95rem, 2vw, 1.25rem);
  font-weight: 800;
  letter-spacing: .02em;
}

@media (max-width: 700px) {
  .compact-brand {
    min-height: 108px;
    width: 94vw;
    gap: 1rem;
    padding: .65rem 0;
  }
  .compact-brand img {
    width: 92px;
    height: 82px;
  }
  .compact-brand-copy strong {
    font-size: clamp(2rem, 10vw, 3rem);
  }
  .compact-brand-copy small {
    font-size: .78rem;
    line-height: 1.25;
  }
}


/* V6 : suppression du bandeau supérieur avec logo */
.compact-brand-header { display: none !important; }
.festival-header { background: transparent; }


/* V7 : logo discret intégré dans le bandeau de navigation */
.brand-text { display: none !important; }
.nav-brand-logo {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex: 0 0 auto;
  width: 86px;
  height: 58px;
  text-decoration: none;
}
.nav-brand-logo img {
  width: 78px;
  height: 54px;
  object-fit: contain;
  object-position: left center;
  filter: drop-shadow(0 3px 8px rgba(0,0,0,.35));
}
@media (max-width: 600px) {
  .nav-brand-logo { width: 70px; height: 50px; }
  .nav-brand-logo img { width: 64px; height: 46px; }
}


/* V8 : logo amélioré + photos artistes en 1080x1350 */
.brand img{width:88px;height:62px;object-fit:contain}
.artist-grid{align-items:stretch}
.artist-card,.artist-card.featured{min-height:auto;aspect-ratio:4 / 5}
.artist-card img{object-fit:cover;object-position:center}
@media (max-width:700px){.artist-card,.artist-card.featured{aspect-ratio:4 / 5;min-height:auto}}


/* V9 : pages légales, confidentialité et crédits */
.site-footer{align-items:center}.footer-links{display:flex;flex-wrap:wrap;gap:1rem}.copyright{width:100%;margin:.4rem 0 0;font-size:.85rem;color:#958b9c}
.legal-page{background:#f4f0f7;color:#241b2b}.legal-topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem max(5vw,calc((100vw - 980px)/2));background:#0a0810;color:#fff}.legal-brand{display:flex;align-items:center;gap:.8rem;text-decoration:none;font-weight:900;color:#ffd42a}.legal-brand img{width:64px;height:54px;object-fit:contain}.legal-back{color:#fff;text-decoration:none;font-weight:800}.legal-container{width:min(980px,90vw);margin:3rem auto 5rem}.legal-container h1{margin:.2rem 0 2rem;font-size:clamp(2.7rem,7vw,5.5rem);line-height:.95;letter-spacing:-.05em;text-transform:uppercase;color:#32134f}.legal-container h2{margin:0 0 .8rem;color:#52227b}.legal-container section{margin:1rem 0;padding:1.6rem;border-radius:16px;background:#fff;box-shadow:0 12px 30px rgba(36,17,63,.07)}.legal-container p,.legal-container li,.legal-container dd{color:#554b5b}.legal-container li+li{margin-top:.45rem}.legal-alert{margin-bottom:1.4rem;padding:1rem 1.2rem;border-left:5px solid #ffd42a;border-radius:8px;background:#fff8d9;color:#3d3210}.legal-container dl{display:grid;grid-template-columns:180px 1fr;gap:.5rem 1rem}.legal-container dt{font-weight:900}.legal-container dd{margin:0}.credit-list{display:grid;grid-template-columns:repeat(2,1fr);gap:.2rem 1.5rem}.legal-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding:2rem max(5vw,calc((100vw - 980px)/2));background:#0a0810;color:#cfc4d8}.legal-footer nav{display:flex;flex-wrap:wrap;gap:1rem}.legal-footer a{color:#ffd42a;font-weight:800}
@media(max-width:650px){.legal-container dl{grid-template-columns:1fr}.credit-list{grid-template-columns:1fr}.legal-topbar{align-items:flex-start}.legal-brand img{width:54px;height:46px}.footer-links{flex-direction:column}}


/* V10 : présentation artistes fiable sur mobile */
.artist-card::after{
  content:"Toucher pour voir la présentation";
  position:absolute;
  left:1rem;
  right:1rem;
  bottom:.8rem;
  z-index:3;
  padding:.55rem .7rem;
  border-radius:999px;
  background:rgba(255,212,42,.94);
  color:#0a0810;
  font-size:.68rem;
  font-weight:900;
  text-align:center;
  text-transform:uppercase;
  letter-spacing:.04em;
  opacity:0;
  transform:translateY(6px);
  transition:.2s ease;
  pointer-events:none;
}
.artist-card:hover::after,.artist-card:focus::after{opacity:1;transform:none}
.artist-overlay{padding-bottom:3.7rem}
.artist-modal{overflow-y:auto;-webkit-overflow-scrolling:touch}
.modal-content{margin:auto}
@media(max-width:700px){
  .artist-card::after{opacity:1;transform:none}
  .artist-overlay{padding-bottom:4.1rem}
  .artist-modal{align-items:flex-start;padding:.7rem}
  .modal-content{width:100%;max-height:none;min-height:calc(100dvh - 1.4rem);grid-template-columns:1fr;border-radius:16px;overflow:visible}
  .modal-content>img{height:auto;min-height:0;max-height:42dvh;aspect-ratio:4/3;object-fit:cover}
  .modal-copy{padding:1.5rem 1.2rem 2rem}
  .modal-copy h2{font-size:2.2rem}
  .modal-close{position:fixed;right:1rem;top:1rem}
}


/* V11 : correctif programmation mobile et anti-cache */
.program-section .festival-day,
.program-section .artist-grid,
.program-section .artist-card {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
}
.program-section .artist-grid {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 1rem !important;
  width: 100% !important;
  height: auto !important;
  overflow: visible !important;
}
.program-section .artist-card {
  position: relative !important;
  width: 100% !important;
  aspect-ratio: 4 / 5 !important;
  min-height: 260px !important;
  overflow: hidden !important;
}
.program-section .artist-card img {
  display: block !important;
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}
.program-section .artist-overlay {
  display: block !important;
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  z-index: 2 !important;
}
.day-switch,
.day-tab { display: none !important; }
@media (max-width: 950px) {
  .program-section .artist-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}
@media (max-width: 600px) {
  .program-section .artist-grid {
    grid-template-columns: 1fr !important;
    gap: 1.25rem !important;
  }
  .program-section .artist-card {
    display: block !important;
    min-height: 0 !important;
    aspect-ratio: 4 / 5 !important;
  }
  .festival-day + .festival-day {
    margin-top: 4rem !important;
    padding-top: 3rem !important;
  }
  .day-heading {
    display: flex !important;
  }
}


/* V14 : défilement mobile sans ouverture accidentelle */
.discover.artist-open{
  appearance:none;
  border:0;
  cursor:pointer;
  font-family:inherit;
}
@media (hover:hover) and (pointer:fine){
  .discover.artist-open{background:transparent;padding:0;color:white;text-align:left}
}
@media (hover:none), (pointer:coarse){
  .artist-card{cursor:default;touch-action:pan-y;-webkit-tap-highlight-color:transparent}
  .artist-card::after{display:none!important}
  .artist-overlay{padding-bottom:1.25rem!important}
  .discover.artist-open{
    display:flex;
    align-items:center;
    justify-content:center;
    width:100%;
    min-height:48px;
    margin-top:.8rem;
    padding:.7rem 1rem;
    border-radius:999px;
    background:#ffd42a;
    color:#0a0810;
    font-size:.74rem;
    font-weight:900;
    text-align:center;
    text-transform:uppercase;
    letter-spacing:.04em;
    opacity:1;
    touch-action:manipulation;
  }
  .artist-card:hover,.artist-card:focus{transform:none;box-shadow:0 12px 30px rgba(65,30,95,.12);outline:none}
  .artist-card:hover img{transform:none}
}


/* V15 : performances, accessibilité et interactions robustes */
.nav-brand-logo img{aspect-ratio:auto}
.hero-poster-wrap picture,.poster-section picture{display:block}
.hero-poster-wrap picture img,.poster-section picture img{width:100%;height:auto}
.artist-card{cursor:default}
.artist-card:hover,.artist-card:focus-within{transform:translateY(-4px);box-shadow:0 18px 38px rgba(65,30,95,.24)}
.artist-card:focus-within{outline:3px solid var(--yellow);outline-offset:3px}
.artist-open:focus-visible,.menu-toggle:focus-visible,.modal-close:focus-visible,.main-nav a:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}
.menu-toggle.is-open{color:var(--yellow)}
@media (hover:hover) and (pointer:fine){
  .discover.artist-open{display:inline-flex;align-items:center;min-height:44px;padding:.55rem .8rem;border-radius:999px;background:rgba(255,255,255,.12);color:white}
  .discover.artist-open:hover{background:var(--yellow);color:var(--black)}
}
@media (max-width:700px){
  .artist-card:hover{transform:none}
}


/* V16 : libellé tactile plus explicite sur les cartes artistes */
.artist-open{white-space:normal;text-align:center;line-height:1.2;max-width:100%;}
@media (max-width:700px){.artist-open{font-size:.72rem;padding:.72rem .9rem;}}


/* V17 : un seul appel à l’action sur les cartes artistes */
.artist-card::after{content:none!important;display:none!important;}


/* V18 : logos partenaires + zone food-trucks */
.partner-logo-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1.25rem;align-items:stretch}
.partner-logo-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.8rem;min-height:190px;padding:1.15rem;border:1px solid rgba(64,32,91,.1);border-radius:18px;background:#fff;box-shadow:0 12px 30px rgba(36,17,63,.08);transition:transform .2s ease,box-shadow .2s ease}
.partner-logo-card:hover{transform:translateY(-4px);box-shadow:0 18px 38px rgba(36,17,63,.13)}
.partner-logo-card img{width:100%;height:120px;object-fit:contain}
.partner-logo-card span{font-weight:900;text-align:center;color:#493456;font-size:.88rem}
.foodtrucks-section{background:linear-gradient(180deg,#f7f3fa,#fff)}
.foodtruck-placeholder{width:min(520px,100%);margin:0 auto;padding:2rem;border:2px dashed rgba(102,50,154,.25);border-radius:20px;text-align:center;background:white}
.foodtruck-placeholder-icon{font-size:3rem;margin-bottom:.5rem}
.foodtruck-placeholder strong{display:block;font-size:1.25rem;color:var(--purple-dark)}
.foodtruck-placeholder p{margin:.35rem 0 0;color:#766a7e}
@media(max-width:1050px){.partner-logo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.partner-logo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.partner-logo-card{min-height:150px;padding:.8rem}.partner-logo-card img{height:90px}.partner-logo-card span{font-size:.78rem}}
@media(max-width:420px){.partner-logo-grid{grid-template-columns:1fr}.partner-logo-card img{height:105px}}


/* V20 : visuel unique des 4 food-trucks */
.foodtrucks-section{background:#fff;}
.foodtrucks-visual{width:min(900px,100%);margin:0 auto;}
.foodtrucks-visual picture,.foodtrucks-visual img{display:block;width:100%;height:auto;}
.foodtrucks-visual img{border-radius:22px;box-shadow:0 20px 45px rgba(36,17,63,.16);}
@media(max-width:600px){.foodtrucks-visual{width:100%;}.foodtrucks-visual img{border-radius:16px;}}
