:root { --ink:#1d1d1f; --panel:#2d2d31; --line:#f2f2f2; --accent:#be0505; --green:#c6d206; --blue:#0499ee; --text:#fff; --muted:#c8c8c8; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; min-width:320px; background:var(--ink); color:var(--text); font-family:Arial, Helvetica, sans-serif; }
.site-header { min-height:164px; padding:28px max(5vw, 48px); border-top:6px solid var(--green); border-bottom:1px solid #39393c; display:flex; align-items:center; justify-content:space-between; gap:32px; background:#202023; }
.brand img { display:block; width:145px; height:auto; }
.site-nav { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:2px; font-size:.92rem; font-weight:800; letter-spacing:.025em; text-transform:uppercase; }
.site-nav span,.site-nav a { padding:15px 13px; color:inherit; text-decoration:none; white-space:nowrap; }
.site-nav .is-current { background:var(--accent); }
.hero { position:relative; min-height:368px; display:grid; align-items:end; overflow:hidden; background:linear-gradient(90deg,rgba(0,0,0,.78),rgba(0,0,0,.35)), url("assets/images/artiste-hero.jpg") center 49% / cover no-repeat; }
.hero-content { max-width:780px; padding:54px max(5vw, 48px) 68px; }
.eyebrow,.category { margin:0; color:var(--green); font-size:.8rem; font-weight:900; letter-spacing:.14em; text-transform:uppercase; }
h1 { margin:9px 0 12px; font-size:clamp(3.7rem,7vw,6.2rem); line-height:.94; letter-spacing:-.04em; text-transform:uppercase; }
.hero p:last-child { margin:0; max-width:750px; font-size:clamp(1.35rem,2.2vw,2rem); font-weight:800; line-height:1.18; }
.hero:not(.profile-hero) .hero-lead { max-width:750px; margin:0 0 12px; color:#fff; font-size:clamp(1.35rem,2.2vw,2rem); font-weight:800; line-height:1.18; }
.hero:not(.profile-hero) .hero-description { max-width:680px; margin:0; color:#d4d4d6; font-size:1.05rem; font-weight:400; line-height:1.5; }
.profile-hero { min-height:440px; background-image:linear-gradient(90deg,rgba(0,0,0,.8),rgba(0,0,0,.28)), url("assets/images/artiste-jose-fallot.jpg"); background-position:center; }
.profile-hero .hero-content { padding-bottom:52px; }
.profile-hero .hero-content p:last-child { max-width:530px; font-size:1.3rem; }
.profile-hero h1 { max-width:none; color:var(--green); font-size:clamp(1.2rem,4.2vw,2.7rem); letter-spacing:.025em; white-space:nowrap; }
.profile-hero.tick-tick-boom { background-image:linear-gradient(90deg,rgba(0,0,0,.8),rgba(0,0,0,.28)), url("assets/images/formation-tick-tick-boom-bandeau.jpg"); background-position:center; }
.profile-hero.franck-avitabile { background-image:linear-gradient(90deg,rgba(0,0,0,.8),rgba(0,0,0,.28)), url("assets/images/artiste-franck-avitabile-bandeau.jpg"); background-position:center; }
.profile-hero.lorenzo-de-finti { background-image:linear-gradient(90deg,rgba(0,0,0,.8),rgba(0,0,0,.28)), url("assets/images/invite-lorenzo-de-finti-bandeau.jpg"); background-position:center; }
.profile-hero.patrick-bebey { background-image:linear-gradient(90deg,rgba(0,0,0,.8),rgba(0,0,0,.28)), url("assets/images/artiste-patrick-bebey-bandeau.jpg"); background-position:center; }
.profile-hero.ronnie-lynn-patterson { background-image:linear-gradient(90deg,rgba(0,0,0,.8),rgba(0,0,0,.28)), url("assets/images/invite-ronnie-lynn-patterson-bandeau.jpg"); background-position:center; }
.profile-hero.tribute-to-michel-petrucciani { background-image:linear-gradient(90deg,rgba(0,0,0,.8),rgba(0,0,0,.28)), url("assets/images/formation-tribute-to-michel-petrucciani-bandeau.jpg"); background-position:center; }
.profile-hero.un-siecle-de-jazz { background-image:linear-gradient(90deg,rgba(0,0,0,.8),rgba(0,0,0,.28)), url("assets/images/formation-un-siecle-de-jazz-bandeau.jpg"); background-position:center; }

/* Fiches historiques importées : les visuels temporaires indiquent précisément les livrables attendus. */
.profile-hero.formation-import { background-image:linear-gradient(90deg,rgba(0,0,0,.8),rgba(0,0,0,.28)),var(--profile-hero-image); background-position:center; }
.profile-hero.formation-import h1 { white-space:normal; }
.profile-image--missing { border:1px solid var(--green); background:#171719; }
.profile-image--missing figcaption { padding:0 10px 10px; }
.artist-card--import img { background:#171719; object-fit:cover; }
.catalogue { padding:28px max(3.5vw, 32px) 80px; }
.filters { display:flex; flex-wrap:wrap; gap:5px; margin-bottom:14px; }
.filter { min-height:47px; padding:0 16px; border:2px solid var(--line); border-radius:0; background:transparent; color:var(--text); cursor:pointer; font:800 1rem/1 Arial, Helvetica, sans-serif; text-transform:uppercase; transition:background-color 180ms ease,color 180ms ease,border-color 180ms ease,transform 180ms ease; }
.filter:hover,.filter:focus-visible { border-color:var(--green); outline:none; transform:translateY(-1px); }
.filter.is-active { background:var(--accent); border-color:var(--accent); }
.artist-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; transition:opacity 150ms ease; }
.artist-grid.is-filtering { opacity:.3; }
.artist-card { position:relative; min-width:0; overflow:hidden; border-bottom:5px solid #4a4a4c; background:var(--panel); box-shadow:0 0 0 1px rgba(198,210,6,.82); cursor:pointer; transition:transform 200ms ease,box-shadow 200ms ease,border-color 200ms ease; animation:card-in 260ms both ease-out; }
.artist-card[hidden] { display:none; }
.artist-card img { display:block; width:100%; aspect-ratio:3 / 2; object-fit:cover; transition:transform 260ms ease,filter 260ms ease; }
.artist-card:hover,.artist-card:focus-within { border-bottom-color:var(--green); box-shadow:0 9px 22px rgba(0,0,0,.36),0 0 0 1px var(--green); transform:translateY(-4px); }
.artist-card:hover img,.artist-card:focus-within img { filter:brightness(1.08); transform:scale(1.035); }
.card-body { display:flex; min-height:164px; flex-direction:column; padding:11px 12px 13px; }
.card-body .category { font-size:.62rem; letter-spacing:.13em; }
.artist-card h3 { margin:7px 0 9px; font-size:1.02rem; line-height:1.05; text-transform:uppercase; }
.missing { margin:0 0 13px; color:#d6d6d6; font-size:.75rem; line-height:1.3; }
.missing.is-missing { color:#ffb5b5; font-weight:800; text-transform:uppercase; }
.artist-card a { margin-top:auto; color:var(--green); font-size:.78rem; font-weight:900; text-decoration:underline; text-underline-offset:3px; }
.artist-card a::after { position:absolute; inset:0; content:""; }
.artist-card a:hover,.artist-card a:focus-visible { color:#fff; outline:none; }
.preview-note { margin:34px 0 0; padding:15px 17px; border-left:3px solid var(--accent); background:#29292c; color:#ddd; font-size:.9rem; line-height:1.45; }
.profile { display:grid; grid-template-columns:minmax(0,1fr) minmax(380px,440px); gap:clamp(32px,5vw,76px); max-width:1400px; margin:0 auto; padding:clamp(44px,7vw,92px) max(4vw,28px) 88px; }
.profile-main h2 { margin:0 0 18px; color:var(--green); font-size:clamp(1.8rem,3vw,2.6rem); }
.profile-main h2:not(:first-child) { margin-top:52px; }
.formation-section-title { margin-top:0 !important; color:var(--green); font-size:clamp(1.55rem,2.4vw,2.15rem) !important; letter-spacing:.025em; text-transform:uppercase; }
.profile-main p { margin:0 0 19px; color:#e2e2e2; font-size:1.04rem; line-height:1.68; }
.compact-text p { margin-bottom:5px; }
.compact-text .compact-heading { margin-top:16px; color:var(--green); font-weight:900; }
.production-credits { margin:24px 0 30px; }
.production-credits p { margin:0 0 5px; }
.production-credits strong { color:var(--green); font-weight:900; }
.production-credits span { color:#e2e2e2; }
.profile-booking { margin:38px 0 0; padding:16px 0 0; border-top:2px solid var(--green); }
.profile-booking p { margin:0; color:#e2e2e2; font-size:.96rem; font-weight:700; line-height:1.55; }
.profile-booking strong { color:var(--green); font-weight:900; letter-spacing:.025em; }
.profile-booking a { color:#e2e2e2; text-decoration:none; }
.profile-booking a:hover,.profile-booking a:focus-visible { color:var(--green); outline:none; text-decoration:underline; text-underline-offset:3px; }
.profile-main .profile-signature { color:var(--muted); font-size:.96rem; font-style:italic; }
.career-lead { font-size:1.12rem !important; font-weight:700; }
.career-period,.career-heading { margin:32px 0 8px !important; color:var(--green) !important; font-size:.9rem !important; font-weight:900 !important; letter-spacing:.1em; line-height:1.3 !important; text-transform:uppercase; }
.career-heading { color:var(--blue) !important; }
.profile-main a { color:var(--green); font-weight:800; text-underline-offset:3px; }
.profile-main a:hover,.profile-main a:focus-visible { color:#fff; outline:none; }
.awards { font-size:.98rem !important; line-height:1.62 !important; }
.profile-image { margin:32px 0 42px; }
.profile-image img { display:block; width:100%; height:auto; }
.profile-image figcaption { margin-top:9px; color:var(--muted); font-size:.82rem; line-height:1.4; }
.profile-image--right { float:right; width:min(42%,330px); margin:0 0 24px 32px; }
.profile-image--original { width:min(100%,450px); }
.profile-image--poster-small { width:min(28%,190px); }
.profile-image--center { clear:both; width:100%; }
.profile-main::after { display:block; clear:both; content:""; }
.resource-links { display:grid; width:100%; gap:18px; margin:34px 0 30px; }
.resource-link { position:relative; display:block; width:100%; overflow:hidden; border:1px solid #515155; background:#080808; color:var(--text); text-decoration:none; transition:border-color 200ms ease,box-shadow 200ms ease,transform 200ms ease; }
.resource-link img { display:block; width:100%; height:auto; transition:transform 220ms ease,filter 220ms ease; }
.resource-link::after { position:absolute; inset:0; background:linear-gradient(0deg,rgba(0,0,0,.72),transparent 52%); content:""; pointer-events:none; }
.resource-link-label { position:absolute; z-index:1; right:16px; bottom:16px; padding:10px 14px; background:#242427; color:#fff; font-size:.82rem; font-weight:900; letter-spacing:.045em; text-transform:uppercase; }
.resource-link:hover,.resource-link:focus-visible { border-color:var(--green); box-shadow:0 7px 17px rgba(0,0,0,.34); outline:none; transform:translateY(-2px); }
.resource-link:hover img,.resource-link:focus-visible img { filter:brightness(.78); transform:scale(1.02); }
.lineup { margin:0; }
.lineup h2 { margin:0 0 18px; color:var(--blue); font-size:1.35rem; font-weight:500; }
.lineup p { margin:0 0 19px; font-size:1.04rem; line-height:1.68; }
.lineup strong { color:var(--blue); font-weight:500; }
.lineup span { color:#d6d6d8; }
.encounters { display:grid; grid-template-columns:145px minmax(0,1fr); gap:12px 22px; margin:0; }
.encounters dt { color:var(--green); font-size:.78rem; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }
.encounters dd { margin:0; color:#e2e2e2; font-size:.98rem; line-height:1.55; }
.profile-aside { align-self:start; display:grid; gap:9px; position:sticky; top:24px; }
.profile-panel { padding:clamp(11px,1.2vw,17px) clamp(22px,2.4vw,34px); border:2px solid #414145; background:#242427; }
.profile-panel h2 { margin:0 0 18px; color:var(--green); font-size:1.15rem; text-transform:uppercase; }
.profile-panel p { margin:0; color:#d7d7d7; line-height:1.48; }
.partners { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; align-items:stretch; }
.partner { display:grid; justify-items:center; padding:9px; border:1px solid #515155; background:#080808; text-decoration:none; transition:transform 200ms ease,border-color 200ms ease,box-shadow 200ms ease; }
.partner img { width:100%; height:auto; aspect-ratio:1 / 1; object-fit:contain; transition:transform 220ms ease,filter 220ms ease; }
.partner:hover,.partner:focus-visible { border-color:var(--green); box-shadow:0 5px 14px rgba(0,0,0,.32); outline:none; transform:translateY(-2px); }
.partner:hover img,.partner:focus-visible img { filter:brightness(1.12); transform:scale(1.035); }
.partner > span { display:none; }
.media-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.media-card { position:relative; display:block; overflow:hidden; aspect-ratio:1 / 1; border:1px solid #515155; background:#080808; color:#fff; text-decoration:none; }
.media-card img { display:block; width:100%; height:100%; object-fit:cover; transition:transform 220ms ease,filter 220ms ease; }
.media-card::after { position:absolute; inset:0; background:linear-gradient(0deg,rgba(0,0,0,.62),transparent 58%); content:""; pointer-events:none; }
.media-card-label { position:absolute; z-index:1; right:12px; bottom:12px; padding:9px 13px; background:#242427; color:#fff; font-size:.82rem; font-weight:900; letter-spacing:.05em; text-transform:uppercase; }
.media-play { position:absolute; z-index:2; top:50%; left:50%; width:58px; height:40px; border-radius:10px; background:#f00; box-shadow:0 4px 12px rgba(0,0,0,.42); transform:translate(-50%,-50%); }
.media-play::after { position:absolute; top:10px; left:23px; width:0; height:0; border-top:10px solid transparent; border-bottom:10px solid transparent; border-left:15px solid #fff; content:""; }
.media-card:hover img,.media-card:focus-visible img { filter:brightness(.75); transform:scale(1.035); }
.media-card:focus-visible { outline:3px solid var(--green); outline-offset:3px; }
.video-dialog { width:min(92vw,960px); padding:0; border:0; background:#080808; color:#fff; }
.video-dialog::backdrop { background:rgba(0,0,0,.82); }
.video-dialog-frame { aspect-ratio:16 / 9; }
.video-dialog-frame iframe { display:block; width:100%; height:100%; border:0; }
.video-dialog-close { position:absolute; z-index:1; top:-43px; right:0; width:34px; height:34px; border:1px solid #fff; background:#242427; color:#fff; font-size:1.6rem; line-height:1; cursor:pointer; }
.video-dialog-close:hover,.video-dialog-close:focus-visible { border-color:var(--green); background:var(--green); color:var(--ink); outline:none; }
.missing-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:0; padding:0; list-style:none; }
.missing-list li { display:flex; aspect-ratio:1 / 1; align-items:center; justify-content:center; padding:13px; border:1px solid #515155; background:#080808; color:#f0c2c2; font-size:.84rem; font-weight:800; line-height:1.3; text-align:center; text-transform:uppercase; }
.back-link { display:flex; width:100%; align-items:center; justify-content:center; min-height:46px; margin-top:1px; padding:0 22px; border:4px solid var(--line); color:var(--text); font-size:1.22rem; font-weight:900; letter-spacing:.025em; line-height:1.1; text-align:center; text-decoration:none; text-transform:uppercase; transition:background-color 180ms ease,border-color 180ms ease,color 180ms ease; }
.back-link:hover,.back-link:focus-visible { border-color:var(--green); background:var(--green); color:var(--ink); outline:none; }
.site-footer { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:1rem; margin:0; padding:2rem max(5vw,48px) 2.5rem; border-top:3px solid var(--line); background:#202023; color:var(--muted); }
.site-footer p { margin:0; }
.footer-credit { display:flex; align-items:center; gap:.5rem; white-space:nowrap; color:#999; font-size:.78rem !important; transform:scale(.72); transform-origin:left center; }
.footer-credit a { color:#a7b108; font-weight:900; text-decoration:none; }
.footer-credit .footer-home { color:#a7b108; }
.footer-credit a:hover,.footer-credit a:focus-visible { color:#fff; outline:none; }
.footer-nav { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:.6rem 1.2rem; text-align:right; }
.footer-nav span,.footer-nav a { color:var(--green); font-size:.78rem; font-weight:800; letter-spacing:.05em; text-decoration:none; text-transform:uppercase; }
.footer-nav a:hover,.footer-nav a:focus-visible { color:#fff; outline:none; }
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@keyframes card-in { from { opacity:0; transform:translateY(10px) scale(.985); } to { opacity:1; transform:none; } }
@media (max-width:1440px) { .artist-grid { grid-template-columns:repeat(5,minmax(0,1fr)); } }
@media (max-width:1120px) { .site-header { min-height:auto; flex-direction:column; align-items:flex-start; } .site-nav { justify-content:flex-start; } .artist-grid { grid-template-columns:repeat(4,minmax(0,1fr)); } }
@media (max-width:820px) { .hero { min-height:330px; } .artist-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:900px) { .profile { grid-template-columns:1fr; } .profile-aside { position:static; grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:620px) { .site-header { padding:20px 18px; } .brand img { width:120px; } .site-nav { font-size:.76rem; } .site-nav span { padding:9px 7px; } .hero-content { padding:38px 20px 44px; } .profile-hero,.profile-hero.tick-tick-boom,.profile-hero.formation-import { background-image:linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.32)),url("assets/images/artiste-bandeau-mobile.jpg"); background-position:center 42%; } .profile-hero h1 { font-size:clamp(1.15rem,6vw,1.7rem); } .catalogue { padding:20px 16px 52px; } .filters { gap:6px; } .filter { min-height:42px; padding:0 11px; font-size:.78rem; } .artist-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; } .card-body { min-height:150px; padding:10px; } .artist-card h3 { font-size:.94rem; } }
@media (max-width:620px) { .profile { padding:42px 20px 60px; } .profile-aside { grid-template-columns:1fr; } .encounters { grid-template-columns:1fr; gap:4px; } .encounters dd { margin-bottom:12px; } .profile-image--right { float:none; width:100%; margin:24px 0 30px; } .site-footer { grid-template-columns:1fr; padding:1.7rem 20px 2rem; } .footer-nav { justify-content:flex-start; text-align:left; } .footer-credit { white-space:normal; } }
@media (max-width:390px) { .artist-grid { grid-template-columns:1fr; } }
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto !important; animation-duration:.01ms !important; transition-duration:.01ms !important; } }

/* Footer officiel partagé par toutes les pages JACP. */
.site-footer { display:flex; align-items:center; justify-content:space-between; gap:24px; width:100%; margin:0; padding:28px clamp(28px,5vw,76px); border-top:1px solid #48484b; background:#171718; color:#999; }
.footer-credit { display:block; margin:0; color:#999; font-size:.78rem !important; line-height:1.4; white-space:nowrap; transform:scale(.72); transform-origin:left center; }
.footer-credit a { color:#a7b108; font-weight:800; text-decoration:none; }
.footer-credit a:hover,.footer-credit a:focus-visible { color:#fff; outline:none; }
.site-footer nav,.footer-nav { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:11px 22px; text-align:right; }
.site-footer nav a,.footer-nav a,.footer-nav span { color:#a7b108; font-size:.72rem; font-weight:800; letter-spacing:.025em; text-decoration:none; text-transform:uppercase; }
.site-footer nav a:hover,.site-footer nav a:focus-visible,.footer-nav a:hover,.footer-nav a:focus-visible { color:#fff; outline:none; }
@media (max-width:620px) { .site-footer { display:block; padding:24px 22px; } .footer-credit { margin-bottom:17px; white-space:normal; } .site-footer nav,.footer-nav { justify-content:flex-start; text-align:left; } }
