/* Autrepart : composition nouvelle, références mesurées sur le laboratoire local.
   Aucun CSS Warp/Widgetkit ; polices libres OFL auto-hébergées, aucune police distante. */
/* Fichiers Google Fonts historiques non modifiés ; licences et provenance dans ../fonts/. */
@font-face { font-family:"Merriweather Sans"; font-style:normal; font-weight:300 800; font-display:swap; src:url("../fonts/merriweathersans/MerriweatherSans%5Bwght%5D.ttf") format("truetype"); }
@font-face { font-family:"Merriweather Sans"; font-style:italic; font-weight:300 800; font-display:swap; src:url("../fonts/merriweathersans/MerriweatherSans-Italic%5Bwght%5D.ttf") format("truetype"); }
@font-face { font-family:"Merriweather"; font-style:normal; font-weight:300; font-display:swap; src:url("../fonts/merriweather/Merriweather-Light.ttf") format("truetype"); }
@font-face { font-family:"Merriweather"; font-style:normal; font-weight:400; font-display:swap; src:url("../fonts/merriweather/Merriweather-Regular.ttf") format("truetype"); }
@font-face { font-family:"Merriweather"; font-style:normal; font-weight:700; font-display:swap; src:url("../fonts/merriweather/Merriweather-Bold.ttf") format("truetype"); }
@font-face { font-family:"Merriweather"; font-style:italic; font-weight:300; font-display:swap; src:url("../fonts/merriweather/Merriweather-LightItalic.ttf") format("truetype"); }
@font-face { font-family:"Merriweather"; font-style:italic; font-weight:400; font-display:swap; src:url("../fonts/merriweather/Merriweather-Italic.ttf") format("truetype"); }
@font-face { font-family:"Merriweather"; font-style:italic; font-weight:700; font-display:swap; src:url("../fonts/merriweather/Merriweather-BoldItalic.ttf") format("truetype"); }
:root { --orange:#e58d10; --amber:#fc6; --dark:#353131; --light:#e7e7e7; --hover:#5c5555; }
* { box-sizing:border-box; }
html { background:#fff; color:#555; font:300 14px/22px "Merriweather Sans",Arial,sans-serif; }
body { margin:0; }
a { color:var(--orange); text-decoration:none; }
a:hover { color:var(--hover); text-decoration:underline; }
button,summary,a { -webkit-tap-highlight-color:transparent; }
button { font:inherit; cursor:pointer; }
button:focus-visible,summary:focus-visible,a:focus-visible,[tabindex]:focus-visible { outline:3px solid #8b5100; outline-offset:3px; }
img { max-width:100%; height:auto; vertical-align:middle; }
h1,h2,h3,h4,h5,h6 { color:var(--orange); font-family:"Merriweather",Georgia,serif; font-weight:300; }
h1 { font-size:30px; line-height:40px; margin:0 0 16px; }
h2 { font-size:32px; line-height:40px; margin:0 0 16px; }
p { margin:0 0 16px; }
ul,ol { padding-left:30px; margin:0 0 16px; }
em { color:var(--orange); }
[hidden] { display:none !important; }
.container { max-width:980px; margin:auto; padding:0 25px; }
.skip-link { position:fixed; top:-80px; left:12px; padding:12px; z-index:100; background:white; }
.skip-link:focus { top:12px; }
.toolbar { height:70px; background:var(--light); }
.toolbar .container { display:flex; justify-content:flex-end; align-items:center; height:100%; }
.facebook { position:relative; isolation:isolate; font:bold 30px/1 Arial,sans-serif; color:#555; padding:10px 18px; }
.facebook::before { content:""; position:absolute; z-index:-1; width:60px; height:60px; left:50%; top:50%; transform:translate(-50%,-50%); background:var(--orange); opacity:0; pointer-events:none; }
.facebook:hover,.facebook:focus-visible { color:#fff; text-decoration:none; }
.facebook:hover::before,.facebook:focus-visible::before { opacity:1; }
.site-header { background:#fff; }
.header-inner { display:flex; align-items:center; justify-content:space-between; min-height:120px; }
.brand { flex-shrink:0; padding:0 5px; }
.brand img { width:200px; height:60px; }
.site-nav ul { list-style:none; padding:0; margin:0; }
.site-nav > ul { display:flex; align-items:center; }
.site-nav > ul > li > a,.site-nav > ul > li > details > summary { display:block; padding:0 15px; color:#777; font-size:20px; line-height:120px; cursor:pointer; }
.site-nav summary { list-style:none; }
.site-nav summary::-webkit-details-marker { display:none; }
.site-nav details { position:relative; }
.site-nav details > ul { position:absolute; z-index:10; top:100%; left:0; width:200px; padding:50px 20px 20px; background:var(--orange); clip-path:polygon(0 var(--menu-cut-left,15px),100% var(--menu-cut-right,10px),100% 100%,0 100%); }
.site-nav details > ul a { display:block; color:#fff; padding:10px 15px; line-height:22px; }
.site-nav details > ul a[aria-current] { color:#fff; }
.site-nav details > ul a:hover,.site-nav details > ul a:focus-visible { background:#f4ba67; color:#fff; text-decoration:none; }
.desktop-menu .site-nav > ul > li { position:relative; }
.desktop-menu .site-nav > ul > li::before { content:""; position:absolute; top:0; left:0; right:0; height:8px; background:var(--orange); opacity:0; pointer-events:none; }
.desktop-menu .site-nav > ul > li:has(> details[open])::before,.desktop-menu .site-nav > ul > li:focus-within::before { opacity:1; }
@media (hover:hover) and (pointer:fine) { .desktop-menu .site-nav > ul > li:hover::before { opacity:1; } }
.desktop-menu .site-nav > ul > li > a:hover { text-decoration:none; }
@media (min-width:768px) and (max-width:1000px) { .desktop-menu .site-nav > ul > li:last-child details > ul { left:auto; right:0; } }
.site-nav a[aria-current],.site-nav summary:hover,.site-nav details:has(a[aria-current]) > summary { color:var(--orange); }
.mobile-menu { display:none; }
/* Avec les vraies polices, préserver le menu sur une ligne sur petite tablette. */
@media (min-width:768px) and (max-width:899px) {
    .desktop-menu .site-nav > ul > li > a,.desktop-menu .site-nav > ul > li > details > summary { font-size:17px; padding:0 10px; white-space:nowrap; }
}
.hero,.concert-bottom { background-image:repeating-linear-gradient(90deg,#fff2 0 1px,#0002 1px 2px),url('/images/autrepart/concert.jpg'); background-size:2px 2px,cover; background-position:center; background-repeat:repeat,no-repeat; position:relative; }
.hero { background-position:center,center 20%; height:38vw; min-height:250px; display:grid; place-items:center; clip-path:polygon(0 35px,100% 0,100% calc(100% - 35px),0 100%); }
.hero-title { width:700px; max-width:80%; text-align:center; padding:80px 25px; position:relative; }
.hero-title::before { content:""; position:absolute; inset:0; pointer-events:none; background:
    linear-gradient(#fffb,#fffb) left top/30px 5px no-repeat,
    linear-gradient(#fffb,#fffb) left top/5px 30px no-repeat,
    linear-gradient(#fffb,#fffb) right top/30px 5px no-repeat,
    linear-gradient(#fffb,#fffb) right top/5px 30px no-repeat,
    linear-gradient(#fffb,#fffb) left bottom/30px 5px no-repeat,
    linear-gradient(#fffb,#fffb) left bottom/5px 30px no-repeat,
    linear-gradient(#fffb,#fffb) right bottom/30px 5px no-repeat,
    linear-gradient(#fffb,#fffb) right bottom/5px 30px no-repeat; }
.hero h1 { display:table; margin:0 auto 6px; background:#e58d10c9; color:#fff; padding:5px 10px; font-size:44px; line-height:52px; font-weight:bold; }
.hero p { display:table; margin:auto; color:white; background:#000b; font-size:26px; line-height:32px; padding:0 10px; }
.home-intro { padding:40px 0; }
.home-intro .container > div:first-child { background:var(--orange); color:white; font-size:20px; line-height:32px; }
.frontpage .com-content-article { margin:0; }
.inner-page .site-header::after { content:""; display:block; height:70px; background:var(--amber); clip-path:polygon(0 35px,100% 0,100% calc(100% - 35px),0 100%); }
.inner-page .page-content { padding-top:40px; padding-bottom:40px; }
.breadcrumbs { margin:0 0 40px; font-size:12px; color:#777; display:flex; gap:20px; align-items:center; }
.breadcrumbs > span[aria-hidden] { color:#ccc; }
.com-content-article__body { overflow-wrap:break-word; }
/* Contact natif uniquement : champs/contrôleur/token Joomla conservés. */
.com-contact { max-width:760px; overflow-wrap:break-word; }
.com-contact h2,.com-contact legend { font-size:21px; line-height:32px; color:var(--orange); }
.com-contact fieldset { border:0; padding:0; margin:0 0 20px; min-width:0; }
.com-contact .control-group { margin:0 0 18px; }
.com-contact .control-label { margin-bottom:5px; }
.com-contact input:not([type=hidden]):not([type=checkbox]),.com-contact textarea { width:100%; min-height:44px; padding:10px 12px; border:1px solid #bbb; border-radius:3px; background:#fff; color:#444; font:inherit; }
.com-contact textarea { min-height:180px; resize:vertical; }
.com-contact input:focus-visible,.com-contact textarea:focus-visible { outline:3px solid #8b5100; outline-offset:2px; }
.com-contact button[type=submit] { min-height:44px; padding:10px 24px; border:1px solid #9a5b00; background:var(--orange); color:#fff; }
.com-contact button[type=submit]:hover { background:#9a5b00; }
.contact-lab-note { max-width:760px; border-left:4px solid var(--orange); background:#fff5e5; padding:12px 16px; margin-bottom:24px; }
.com-contact .visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.disco-intro { margin-bottom:22px; }
.album-section { margin-bottom:40px; }
.album-section:last-child { margin-bottom:0; }
.album-category { font-size:14px; line-height:22px; color:#555; font-weight:bold; margin:0 0 22px; }
.album-tabs { width:600px; max-width:100%; border:1px solid #ddd; padding:3px; }
.tab-list { display:flex; flex-wrap:wrap; background:linear-gradient(#fafafa,#f1f2f2); border:1px solid #ddd; }
.tab-list a { padding:6px 14px; border-right:1px solid #ddd; color:#555; text-align:center; }
.tab-list [aria-selected=true] { background:white; border-bottom:1px solid white; color:var(--orange); }
.album-panel { padding:14px 12px; min-height:900px; }
.album-panel::after { content:""; display:block; clear:both; }
.album-tabs[data-widget-id="74"] .album-panel { min-height:700px; }
.album-cover { width:200px; max-width:45%; float:right; margin:0 0 20px 20px; }
.album-panel h2 { margin-top:0; }
.concert-bottom { height:30vw; min-height:200px; display:grid; place-items:center; clip-path:polygon(0 35px,100% 0,100% calc(100% - 35px),0 100%); }
.concert-bottom h2 { display:inline-block; background:var(--orange); color:#fff; padding:16px 10px; font-size:18px; line-height:22px; font-weight:bold; margin:0; transform:translate(-50px,-43px); }
.home-cards { padding:40px 25px 75px; position:relative; }
.card-grid { display:flex; justify-content:center; gap:20px; flex-wrap:wrap; }
.photo-card { flex:0 1 220px; }
.photo-card img { width:220px; aspect-ratio:1; object-fit:cover; }
.carousel-controls { position:absolute; right:25px; bottom:20px; display:flex; gap:6px; }
.carousel-controls button { min-width:36px; min-height:30px; background:white; border:1px solid #ddd; color:#555; }
.carousel-controls button:hover { background:var(--light); }
.site-footer { background:var(--dark); color:white; padding:75px 0 40px; position:relative; text-align:center; font-size:12px; line-height:18px; clip-path:polygon(0 35px,100% 0,100% 100%,0 100%); }
.back-top { position:absolute; top:45px; left:calc(50% - 16px); width:32px; font:bold 24px/30px Arial,sans-serif; }
.lightbox { border:0; padding:50px 20px 20px; background:var(--dark); max-width:95vw; max-height:95vh; }
.lightbox::backdrop { background:#000d; }
.lightbox img { display:block; max-width:85vw; max-height:80vh; object-fit:contain; }
.lightbox button { position:absolute; top:0; right:0; width:44px; height:44px; border:0; background:transparent; color:white; font-size:32px; }
@media (min-width:1220px) { .container { max-width:1200px; padding-left:35px; padding-right:35px; } }
@media (min-width:768px) and (prefers-reduced-motion:no-preference) { .hero,.concert-bottom { background-attachment:scroll,fixed; } }
@media (max-width:767px) {
    .toolbar,.desktop-menu { display:none; }
    .brand img { width:180px; height:50px; }
    .mobile-menu { display:block; }
    .mobile-menu > summary { font:22px/44px Arial,sans-serif; width:44px; text-align:center; cursor:pointer; list-style:none; }
    .mobile-menu > nav { position:absolute; z-index:20; left:0; right:0; top:120px; padding:12px 25px; background:white; box-shadow:0 5px 10px #0003; }
    .mobile-menu .site-nav > ul { display:block; }
    .mobile-menu .site-nav > ul > li > a,.mobile-menu .site-nav > ul > li > details > summary { font-size:18px; line-height:44px; padding:0 10px; }
    .site-nav details > ul { position:static; width:auto; padding:10px 20px; clip-path:none; }
    .site-nav details > ul a { min-height:44px; padding-top:11px; padding-bottom:11px; }
    .hero { height:250px; clip-path:none; }
    .hero-title { display:none; }
    .inner-page .site-header::after { clip-path:none; }
    .breadcrumbs { gap:10px; flex-wrap:wrap; }
    .album-panel,.album-tabs[data-widget-id="74"] .album-panel { min-height:0; }
    .tab-list a { padding:8px 10px; flex:1 1 auto; min-height:40px; }
    .album-cover { float:none; display:block; margin:0 0 16px; max-width:100%; }
    .concert-bottom { height:200px; clip-path:none; }
    .concert-bottom h2 { display:none; }
    .card-grid { gap:10px; flex-wrap:nowrap; }
    .photo-card { flex:1 1 0; min-width:0; }
    .home-cards { padding:40px 20px 75px; }
    .carousel-controls button { min-width:44px; min-height:44px; }
    .site-footer { clip-path:none; }
}
/* Lot 3 uniquement : ne pas modifier la composition Accueil/Discographie validée. */
.editorial-label { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.editorial-tabs { width:100%; padding:0; border-radius:4px; }
.editorial-tabs .tab-list { border:0; border-bottom:1px solid #ddd; }
.editorial-tabs .tab-list a { padding:5px 14px; }
.editorial-tabs .album-panel { padding:18px 14px 40px; }
.editorial-tabs[data-widget-id="60"] .album-panel { min-height:323px; }
.editorial-tabs[data-widget-id="59"] .album-panel { min-height:1337px; }
.editorial-tabs h3 { font-size:26px; line-height:32px; margin:0 0 20px; }
.editorial-cover { width:150px; max-width:45%; float:right; margin:0 0 20px 20px; }
@media (max-width:767px) {
    .editorial-tabs .tab-list a { padding:8px 10px; }
    .editorial-tabs[data-widget-id] .album-panel { min-height:0; }
    .editorial-cover { float:none; display:block; max-width:100%; margin:0 0 16px; }
}
/* Lot 4 exclusivement : aucune règle ne cible les quatre fronts précédents. */
.gallery { margin:16px 0 30px; }
.gallery-page .com-content-article__body ul:not(.gallery-items) { margin:15px 0; }
.gallery-page .com-content-article__body p { margin-bottom:15px; }
.gallery-heading { background:var(--orange); color:white; font-size:21px; line-height:32px; margin:0; }
.gallery-strike { text-decoration:line-through; }
.gallery-items { list-style:none; padding:0; margin:0; }
.gallery-items figure { margin:0; position:relative; }
.gallery-items a { display:block; }
.gallery-items figcaption { position:absolute; bottom:0; left:0; right:0; padding:8px; color:white; background:#000b; opacity:0; pointer-events:none; }
.gallery-items figure:hover figcaption,.gallery-items figure:focus-within figcaption { opacity:1; }
.gallery-items figcaption:empty { display:none; }
.gallery-strip { width:600px; max-width:100%; position:relative; margin-top:0; --gallery-height:200px; }
.gallery-strip[data-widget-id="70"],.gallery-strip[data-widget-id="71"] { --gallery-height:300px; }
.gallery-strip .gallery-items { display:flex; gap:3px; overflow:hidden; }
.gallery-strip li { flex:1 1 0; min-width:0; overflow:hidden; transition:flex-basis .3s ease; }
.gallery-strip li:focus-within { flex-basis:300px; }
.gallery-strip .gallery-items:focus-within li:not(:focus-within) { flex-basis:0; }
.gallery-items a:focus-visible { outline-offset:-3px; }
.gallery-strip img { width:300px; max-width:none; height:var(--gallery-height); object-fit:cover; position:relative; left:50%; transform:translateX(-50%); }
.gallery-strip[data-widget-id="64"] img,.gallery-strip[data-widget-id="68"] img { left:0; transform:none; }
@media (hover:hover) { .gallery-strip li:hover { flex-basis:300px; } }
.gallery-wall { margin:30px 0; }
.gallery-wall[data-widget-id="69"] { margin-top:52px; }
.gallery-wall .gallery-items { display:flex; flex-wrap:wrap; gap:0 4px; padding:0; }
.gallery-wall li { flex:0 0 222px; max-width:100%; position:relative; z-index:0; }
.gallery-wall figure { padding:10px 10px 0; border:1px solid #eee; background:white; box-shadow:0 2px 5px #0003; transform:rotate(-3deg); transition:transform .2s ease,box-shadow .2s ease; }
.gallery-wall li:nth-child(even) figure { transform:rotate(3deg) scale(1.05); }
.gallery-wall li:nth-child(5n) figure { transform:rotate(-4deg) scale(.9); }
.gallery-wall li:focus-within { z-index:10; }
.gallery-wall li:focus-within figure { transform:rotate(0) scale(1.2); box-shadow:0 6px 14px #0005; }
@media (min-width:768px) and (hover:hover) and (pointer:fine) {
    .gallery-wall li:hover { z-index:10; }
    .gallery-wall li:hover figure { transform:rotate(0) scale(1.2); box-shadow:0 6px 14px #0005; }
}
.gallery-wall img { width:200px; height:150px; object-fit:cover; }
.gallery-wall figcaption { position:static; opacity:1; color:#444; background:white; text-align:center; min-height:42px; padding:10px 0; }
.lightbox.gallery-lightbox img { max-height:65vh; }
.lightbox .gallery-lightbox-tools { display:flex; align-items:center; justify-content:space-between; gap:12px; color:white; max-width:85vw; }
.lightbox .gallery-lightbox-tools button { position:static; flex:0 0 44px; }
.gallery-lightbox-tools p { margin:8px 0 0; text-align:center; }
@media (max-width:767px) {
    .gallery-wall .gallery-items { justify-content:center; }
    .gallery-wall li:focus-within figure { transform:rotate(0); }
    .gallery-strip li:focus-within { flex-basis:0; }
    .gallery-items figcaption { font-size:12px; line-height:18px; }
}
/* Lot 5 uniquement : index alphabétique et textes natifs, sans toucher aux neuf fronts. */
.reading-content p,.reading-content ul { margin-bottom:15px; }
.reading-heading { background:var(--orange); color:white; font-size:21px; line-height:32px; }
.reading-content p[id] { scroll-margin-top:20px; }
.song-index { display:grid; grid-template-columns:repeat(3,minmax(0,250px)); max-width:751px; padding-left:1px; }
.song-letter { min-width:0; padding-right:8px; }
.song-letter h2 { color:#555; font-size:14px; line-height:22px; font-weight:bold; margin:0 0 2px; }
.song-letter a { overflow-wrap:anywhere; }
@media (max-width:767px) {
    .song-index { grid-template-columns:1fr; }
    .song-letter { padding:0; }
    .song-letter h2 { margin-top:15px; }
    .song-letter a { display:inline-block; padding:11px 0; min-height:44px; }
}
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto !important; animation:none !important; transition:none !important; } }
