@charset "UTF-8";
:root{
  --ink:#080808;--ink-2:#111;--ink-3:#1b1b1b;--paper:#f5f1e8;--paper-2:#e8e0d2;
  --red:#c91624;--red-dark:#7f0912;--white:#fff;--muted:#b9b3aa;--line:rgba(255,255,255,.12);
  --shadow:0 28px 80px rgba(0,0,0,.42);--radius:24px;--max:1180px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--ink);color-scheme:dark}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--ink);color:var(--paper);line-height:1.6;overflow-x:hidden}
a{color:inherit}img{max-width:100%;display:block}.skip-link{position:fixed;left:16px;top:-100px;z-index:9999;background:var(--paper);color:var(--ink);padding:.8rem 1rem;border-radius:10px}.skip-link:focus{top:16px}
.noise{position:fixed;inset:0;pointer-events:none;z-index:200;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E")}
.wrap{width:min(calc(100% - 40px),var(--max));margin-inline:auto}.eyebrow{font-size:.75rem;letter-spacing:.22em;text-transform:uppercase;font-weight:800;color:#e05a63}.section{padding:110px 0;position:relative}.section.alt{background:var(--paper);color:var(--ink)}.section.deep{background:#0e0e0e}.kicker{font-family:Georgia,"Times New Roman",serif;font-style:italic;font-size:clamp(1.05rem,2vw,1.35rem);color:#d7d0c5}.display{font-family:Georgia,"Times New Roman",serif;font-size:clamp(2.4rem,7vw,6.2rem);line-height:.9;letter-spacing:-.055em;margin:.2em 0}.title{font-family:Georgia,"Times New Roman",serif;font-size:clamp(2.1rem,5vw,4.2rem);line-height:1;letter-spacing:-.04em;margin:.2em 0 .5em}.lead{font-size:clamp(1.06rem,1.7vw,1.3rem);max-width:760px;color:#d2ccc3}.alt .lead{color:#4b4945}.red{color:var(--red)}.muted{color:var(--muted)}.alt .muted{color:#6d6962}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.header{position:fixed;top:0;left:0;right:0;z-index:500;display:flex;align-items:center;justify-content:space-between;padding:18px 28px;transition:.3s;background:linear-gradient(to bottom,rgba(0,0,0,.72),transparent)}.header.scrolled{background:rgba(8,8,8,.92);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);padding-block:12px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-weight:900;letter-spacing:.12em;font-size:.78rem}.brand img{width:38px;height:38px;color:var(--paper)}.brand strong{display:block;font-size:.9rem}.brand small{display:block;color:#a49e95;letter-spacing:.18em;font-weight:650}.nav{display:flex;gap:26px;align-items:center}.nav a{text-decoration:none;font-size:.84rem;font-weight:760;letter-spacing:.04em;position:relative}.nav a:not(.btn)::after{content:"";position:absolute;left:0;right:100%;bottom:-6px;height:2px;background:var(--red);transition:.25s}.nav a:hover::after,.nav a:focus-visible::after{right:0}.menu-btn{display:none;width:48px;height:48px;border:1px solid var(--line);background:rgba(0,0,0,.3);border-radius:50%;color:var(--paper);align-items:center;justify-content:center;cursor:pointer}.menu-btn span,.menu-btn span::before,.menu-btn span::after{display:block;width:20px;height:2px;background:currentColor;content:"";position:relative;transition:.25s}.menu-btn span::before{position:absolute;top:-7px}.menu-btn span::after{position:absolute;top:7px}.menu-btn[aria-expanded="true"] span{background:transparent}.menu-btn[aria-expanded="true"] span::before{top:0;transform:rotate(45deg)}.menu-btn[aria-expanded="true"] span::after{top:0;transform:rotate(-45deg)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;padding:.95rem 1.25rem;border-radius:999px;text-decoration:none;font-weight:850;font-size:.9rem;border:1px solid transparent;transition:.25s;cursor:pointer}.btn.primary{background:var(--red);color:#fff}.btn.primary:hover{background:#e02031;transform:translateY(-2px)}.btn.ghost{border-color:rgba(255,255,255,.25);background:rgba(255,255,255,.04)}.alt .btn.ghost{border-color:rgba(0,0,0,.2)}.btn.ghost:hover{border-color:var(--red);color:#fff;background:var(--red)}.btn.small{padding:.7rem 1rem;font-size:.8rem}
.hero{min-height:100svh;display:grid;place-items:center;overflow:hidden;position:relative;background:radial-gradient(circle at 76% 42%,rgba(201,22,36,.2),transparent 24%),linear-gradient(110deg,#050505 0%,#090909 52%,#17100f 100%)}.hero::before{content:"";position:absolute;width:min(44vw,600px);aspect-ratio:1;border-radius:50%;background:var(--red);right:7%;top:13%;opacity:.9;box-shadow:0 0 130px rgba(201,22,36,.28)}.hero::after{content:"守";position:absolute;right:2vw;bottom:-10vh;font-family:serif;font-size:clamp(18rem,35vw,34rem);line-height:1;color:rgba(255,255,255,.028);font-weight:900}.hero-grid{width:min(calc(100% - 48px),1320px);display:grid;grid-template-columns:.95fr 1.05fr;align-items:center;min-height:100svh;position:relative;z-index:2;padding-top:80px}.hero-copy{padding:80px 0 50px}.hero-copy .display{max-width:760px}.hero-copy p{max-width:590px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}.hero-meta{display:flex;gap:28px;flex-wrap:wrap;margin-top:36px;font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:#b9b3aa}.hero-meta b{color:#fff}.hero-visual{align-self:stretch;position:relative;perspective:1000px;display:grid;place-items:center}.punch-stage{width:min(52vw,760px);max-height:92svh;display:grid;place-items:center;transform-style:preserve-3d;will-change:transform}.punch-stage img{width:100%;filter:drop-shadow(0 40px 45px rgba(0,0,0,.65));transform-origin:72% 62%;animation:punchIn 2.8s cubic-bezier(.16,.8,.25,1) .2s both, breathe 5.5s ease-in-out 3.1s infinite alternate}.impact-ring{position:absolute;width:38%;aspect-ratio:1;border:1px solid rgba(255,255,255,.18);border-radius:50%;right:5%;top:33%;animation:ring 2.6s ease-out 1s infinite;pointer-events:none}.hero-scroll{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);z-index:5;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:#a9a39a;text-decoration:none;display:flex;align-items:center;gap:10px}.hero-scroll::after{content:"";width:1px;height:44px;background:linear-gradient(var(--red),transparent)}
@keyframes punchIn{0%{opacity:0;transform:translate3d(80px,25px,-350px) scale(.62) rotate(-3deg)}55%{opacity:1;transform:translate3d(-8px,0,90px) scale(1.08) rotate(.5deg)}100%{transform:translate3d(0,0,0) scale(1)}}@keyframes breathe{to{transform:translate3d(10px,-8px,42px) scale(1.025)}}@keyframes ring{0%{transform:scale(.45);opacity:0}.2%{opacity:0}20%{opacity:.55}100%{transform:scale(1.55);opacity:0}}
.split{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center}.portrait-frame{position:relative}.portrait-frame img{border-radius:4px 4px 110px 4px;box-shadow:var(--shadow)}.portrait-frame::before{content:"";position:absolute;inset:-16px 18px 18px -16px;border:1px solid var(--red);z-index:-1}.portrait-frame::after{content:"ALPHA / LOUVE";position:absolute;right:-55px;bottom:85px;transform:rotate(90deg);letter-spacing:.24em;font-size:.66rem;font-weight:900;color:#817b72}.quote{font-family:Georgia,"Times New Roman",serif;font-size:clamp(1.7rem,3.2vw,3rem);line-height:1.12;margin:1.4rem 0}.quote::before{content:"“";color:var(--red);font-size:1.5em}.credentials{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.pill{padding:.65rem .85rem;border:1px solid rgba(0,0,0,.18);border-radius:999px;font-size:.76rem;font-weight:800;letter-spacing:.03em}.dark-pills .pill{border-color:var(--line)}
.manifesto-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:80px}.manifesto-number{font-family:Georgia,"Times New Roman",serif;font-size:clamp(7rem,18vw,17rem);line-height:.72;color:rgba(201,22,36,.18)}.principles{display:grid;grid-template-columns:1fr 1fr;gap:18px}.principle{padding:26px;border-top:1px solid var(--line);background:linear-gradient(135deg,rgba(255,255,255,.03),transparent)}.principle h3{margin:.2rem 0 .45rem;font-family:Georgia,"Times New Roman",serif;font-size:1.45rem}.principle p{margin:0;color:#bcb6ad;font-size:.94rem}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.card{border:1px solid var(--line);background:#121212;border-radius:var(--radius);overflow:hidden;min-height:320px;display:flex;flex-direction:column}.alt .card{background:#fff;border-color:rgba(0,0,0,.12)}.card-media{aspect-ratio:16/10;overflow:hidden}.card-media img{width:100%;height:100%;object-fit:cover;transition:.5s}.card:hover .card-media img{transform:scale(1.045)}.card-body{padding:24px;display:flex;flex-direction:column;flex:1}.card h3{font-family:Georgia,"Times New Roman",serif;font-size:1.65rem;line-height:1.05;margin:.2rem 0 .6rem}.card p{color:#bbb4ab;margin:.2rem 0}.alt .card p{color:#5b5752}.card .tag{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:#e75e68;font-weight:900}.card .grow{flex:1}.card ul{padding-left:1.1rem;color:#bbb4ab;font-size:.92rem}.alt .card ul{color:#5b5752}
.band{padding:32px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;background:#0c0c0c}.marquee{display:flex;width:max-content;gap:28px;animation:marquee 24s linear infinite;text-transform:uppercase;letter-spacing:.15em;font-weight:850;color:#e1d9cd}.marquee span::after{content:"●";color:var(--red);margin-left:28px}@keyframes marquee{to{transform:translateX(-50%)}}
.photo-break{min-height:76vh;position:relative;display:grid;align-items:end;background-size:cover;background-position:center}.photo-break::before{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.92),rgba(0,0,0,.12) 66%,rgba(0,0,0,.25))}.photo-break .wrap{position:relative;z-index:2;padding-bottom:70px}.photo-break .title{max-width:840px}.photo-kick{background-image:url('../img/side-kick-01.webp')}.photo-guard{background-image:url('../img/guard-krav-01.webp')}
.process{counter-reset:step;display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--line);border-left:1px solid var(--line)}.step{counter-increment:step;padding:30px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:220px}.step::before{content:"0" counter(step);font-family:Georgia,"Times New Roman",serif;font-size:2rem;color:var(--red)}.step h3{font-size:1.1rem;margin:1.1rem 0 .4rem}.step p{font-size:.9rem;color:#bbb4ab;margin:0}
.price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.price-card{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:var(--radius);padding:28px;position:relative;overflow:hidden}.price-card.featured{border-color:var(--red);box-shadow:0 18px 60px rgba(127,9,18,.12)}.price-card.featured::before{content:"PREMIUM";position:absolute;right:-37px;top:24px;transform:rotate(45deg);background:var(--red);color:#fff;padding:6px 42px;font-size:.62rem;letter-spacing:.16em;font-weight:900}.price-card h3{font-family:Georgia,"Times New Roman",serif;font-size:1.6rem;margin:.3rem 0}.price{font-size:2.35rem;font-weight:900;letter-spacing:-.05em;margin:.6rem 0}.price small{font-size:.78rem;font-weight:700;color:#777;letter-spacing:0}.price-card ul{padding-left:1.1rem;color:#514d48;font-size:.9rem}.notice{border-left:3px solid var(--red);padding:14px 18px;background:rgba(201,22,36,.08);font-size:.88rem;border-radius:0 10px 10px 0}
.gallery{display:grid;grid-template-columns:2fr 1fr 1fr;grid-auto-rows:250px;gap:10px}.gallery figure{margin:0;overflow:hidden;position:relative;background:#111}.gallery figure:first-child{grid-row:span 2}.gallery figure:nth-child(5){grid-column:span 2}.gallery img{width:100%;height:100%;object-fit:cover;transition:.5s}.gallery figure:hover img{transform:scale(1.04)}
.review-shell{display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center}.review-card{padding:34px;border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(145deg,#151515,#0d0d0d)}.stars{letter-spacing:.18em;color:#f0d57a;font-size:1.1rem}.review-card blockquote{font-family:Georgia,"Times New Roman",serif;font-size:1.6rem;line-height:1.24;margin:1rem 0}.google-mark{display:inline-flex;align-items:center;gap:8px;font-weight:850;font-size:.84rem}.google-g{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#fff;color:#1b1b1b;font-weight:900}
.faq{display:grid;grid-template-columns:.7fr 1.3fr;gap:70px}.faq details{border-top:1px solid rgba(0,0,0,.15);padding:20px 0}.faq details:last-child{border-bottom:1px solid rgba(0,0,0,.15)}.faq summary{cursor:pointer;font-weight:850;list-style:none;display:flex;justify-content:space-between;gap:20px}.faq summary::-webkit-details-marker{display:none}.faq summary::after{content:"+";color:var(--red);font-size:1.4rem}.faq details[open] summary::after{content:"−"}.faq details p{color:#5d5954;max-width:760px}
.team{display:grid;grid-template-columns:1fr 1fr;gap:30px}.team-card{display:grid;grid-template-columns:180px 1fr;gap:24px;align-items:center;border:1px solid var(--line);padding:20px;border-radius:var(--radius);background:#111}.team-card img{width:180px;height:220px;object-fit:cover;border-radius:15px}.team-card h3{font-family:Georgia,"Times New Roman",serif;font-size:1.7rem;margin:.2rem 0}.team-card p{color:#bbb4ab}.future-card{border:1px dashed rgba(255,255,255,.2);border-radius:var(--radius);padding:34px;display:grid;place-items:center;text-align:center;color:#aaa49a}
.location-grid{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:stretch}.map-art{min-height:420px;background:radial-gradient(circle at 52% 48%,rgba(201,22,36,.38),transparent 7%),linear-gradient(30deg,transparent 48%,rgba(255,255,255,.06) 49%,rgba(255,255,255,.06) 50%,transparent 51%) 0 0/46px 46px,#131313;border:1px solid var(--line);border-radius:var(--radius);position:relative;overflow:hidden}.map-art::before,.map-art::after{content:"";position:absolute;border:1px solid rgba(255,255,255,.08);border-radius:50%}.map-art::before{width:220px;height:220px;left:calc(50% - 110px);top:calc(50% - 110px)}.map-art::after{width:420px;height:420px;left:calc(50% - 210px);top:calc(50% - 210px)}.pin{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:24px;height:24px;border-radius:50% 50% 50% 0;background:var(--red);rotate:-45deg;box-shadow:0 0 0 10px rgba(201,22,36,.12)}.pin::after{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:#fff;left:8px;top:8px}.map-label{position:absolute;left:50%;top:60%;transform:translateX(-50%);font-weight:900;letter-spacing:.12em;text-transform:uppercase}.areas{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.area{border:1px solid var(--line);border-radius:999px;padding:.55rem .75rem;font-size:.78rem}
.contact-hero{background:var(--red);color:#fff;padding:90px 0;position:relative;overflow:hidden}.contact-hero::after{content:"狼";position:absolute;right:-2%;top:-35%;font-size:23rem;color:rgba(0,0,0,.08);font-family:serif}.contact-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:80px;position:relative;z-index:2}.contact-actions{display:flex;gap:12px;flex-wrap:wrap}.contact-hero .btn.primary{background:#fff;color:#111}.contact-hero .btn.ghost{border-color:rgba(255,255,255,.5)}
.footer{padding:55px 0 28px;background:#050505;border-top:1px solid var(--line)}.footer-grid{display:grid;grid-template-columns:1.2fr .8fr .8fr .8fr;gap:35px}.footer h4{font-size:.8rem;text-transform:uppercase;letter-spacing:.15em;color:#f2ede6}.footer a{display:block;text-decoration:none;color:#aaa49a;font-size:.88rem;margin:.45rem 0}.footer a:hover{color:#fff}.footer-bottom{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);margin-top:36px;padding-top:20px;color:#777;font-size:.75rem}.socials{display:flex;gap:8px;flex-wrap:wrap}.social{border:1px solid var(--line);padding:.55rem .7rem;border-radius:999px!important}.social[aria-disabled="true"]{opacity:.45;cursor:not-allowed}.provisional{font-size:.7rem;color:#8d867e}
.floating-whatsapp{position:fixed;right:18px;bottom:24px;z-index:650;display:flex;align-items:center;gap:10px;background:#111;color:#fff;border:1px solid rgba(255,255,255,.18);box-shadow:0 14px 45px rgba(0,0,0,.4);border-radius:999px;padding:8px;text-decoration:none}.floating-whatsapp span{max-width:0;overflow:hidden;white-space:nowrap;transition:.35s;font-size:.8rem;font-weight:800}.floating-whatsapp:hover span,.floating-whatsapp:focus-visible span{max-width:220px;padding-left:8px}.wa-icon{width:42px;height:42px;border-radius:50%;background:#25d366;display:grid;place-items:center;color:#06190c;font-weight:950}.scroll-tools{position:fixed;left:18px;bottom:24px;z-index:640;display:grid;gap:8px}.scroll-tool{width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.18);background:#111;color:#fff;cursor:pointer;font-size:1.1rem}.scroll-tool:hover{border-color:var(--red);background:var(--red)}
.cookie-banner{position:fixed;z-index:1000;left:20px;right:20px;bottom:20px;max-width:960px;margin:auto;background:#f7f2e9;color:#111;border-radius:20px;box-shadow:0 30px 100px rgba(0,0,0,.6);padding:20px 22px;display:none;grid-template-columns:1fr auto;gap:20px;align-items:center}.cookie-banner.show{display:grid}.cookie-banner p{margin:.35rem 0;color:#4c4844;font-size:.85rem}.cookie-actions{display:flex;gap:8px;flex-wrap:wrap}.cookie-banner button{font:inherit}.cookie-banner .btn.ghost{border-color:#bbb;color:#111}.cookie-banner a{color:#8b1019}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}.reveal.visible{opacity:1;transform:none}
.legal-hero{padding:150px 0 70px;background:linear-gradient(135deg,#080808,#17100f)}.legal{padding:60px 0 100px;background:var(--paper);color:var(--ink)}.legal article{max-width:900px}.legal h2{font-family:Georgia,"Times New Roman",serif;font-size:2rem;margin-top:2.2rem}.legal h3{margin-top:1.6rem}.legal p,.legal li{color:#4f4b46}.draft-banner{background:#ffedd0;color:#512e00;padding:12px 18px;text-align:center;font-weight:850;font-size:.82rem}.todo{background:#fff1cf;color:#6e4100;padding:.12rem .38rem;border-radius:5px;font-weight:800}.legal table{width:100%;border-collapse:collapse;margin:1.2rem 0}.legal th,.legal td{border-bottom:1px solid #d7d0c7;padding:.8rem;text-align:left;vertical-align:top}.dev-credit{display:grid;grid-template-columns:90px 1fr;gap:16px;align-items:center;padding:18px;border:1px solid #d7d0c7;border-radius:16px}.dev-credit img{width:90px;height:90px;border-radius:50%}
@media (max-width:980px){.nav{position:fixed;inset:0;background:rgba(8,8,8,.98);display:none;flex-direction:column;justify-content:center;align-items:center;gap:22px;font-size:1.2rem}.nav.open{display:flex}.nav a{font-size:1.08rem}.menu-btn{display:flex;z-index:2}.hero-grid{grid-template-columns:1fr;align-items:end}.hero-copy{z-index:2;padding:125px 0 20px;align-self:start}.hero-copy .display{font-size:clamp(3rem,13vw,6rem)}.hero-visual{position:absolute;inset:17% -23% -3% 30%;opacity:.7;align-items:end}.punch-stage{width:100%}.hero::before{right:-14%;top:20%;width:70vw}.split,.manifesto-grid,.faq,.review-shell,.location-grid,.contact-grid{grid-template-columns:1fr;gap:40px}.cards,.price-grid{grid-template-columns:1fr 1fr}.process{grid-template-columns:1fr 1fr}.team{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr 1fr}.gallery{grid-template-columns:1fr 1fr}.gallery figure:first-child{grid-row:span 1}.gallery figure:nth-child(5){grid-column:span 1}.manifesto-number{display:none}}
@media (max-width:650px){.wrap{width:min(calc(100% - 28px),var(--max))}.header{padding:13px 14px}.brand small{display:none}.section{padding:78px 0}.hero-grid{width:calc(100% - 28px)}.hero-copy{padding-top:116px}.hero-copy .lead{font-size:1rem;max-width:85%}.hero-actions{max-width:82%}.hero-meta{max-width:82%;font-size:.7rem;gap:10px 18px}.hero-visual{inset:25% -44% 0 14%;opacity:.58}.impact-ring{right:18%;top:36%}.hero-scroll{display:none}.principles,.cards,.price-grid,.process,.footer-grid{grid-template-columns:1fr}.gallery{grid-template-columns:1fr;grid-auto-rows:330px}.team-card{grid-template-columns:1fr}.team-card img{width:100%;height:320px}.contact-grid{gap:30px}.footer-bottom{flex-direction:column}.cookie-banner{left:10px;right:10px;bottom:10px;grid-template-columns:1fr}.cookie-actions{width:100%}.cookie-actions .btn{flex:1}.floating-whatsapp{right:12px;bottom:18px}.scroll-tools{left:12px;bottom:18px}.portrait-frame::after{display:none}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.punch-stage img,.impact-ring,.marquee{animation:none!important}.reveal{opacity:1;transform:none;transition:none}.card-media img{transition:none}}

/* =========================================================
   V2 — AJOUTS UNIQUEMENT
   La base V1 reste intacte : effets premium + galerie + compétition.
   ========================================================= */

/* Photos demandées : zoom au survol + halo néon rouge. */
.neon-photo img{
  transition:transform .55s cubic-bezier(.2,.75,.25,1),box-shadow .45s ease,filter .45s ease;
  box-shadow:var(--shadow),0 0 14px rgba(201,22,36,.28),0 0 32px rgba(201,22,36,.16);
  will-change:transform;
}
.neon-photo:hover img,.neon-photo:focus-within img{
  transform:scale(1.045);
  box-shadow:var(--shadow),0 0 8px rgba(255,55,70,.9),0 0 26px rgba(201,22,36,.62),0 0 58px rgba(201,22,36,.36);
  filter:saturate(1.03) contrast(1.02);
}
.neon-photo::before{
  box-shadow:0 0 12px rgba(201,22,36,.45),0 0 30px rgba(201,22,36,.22);
  transition:box-shadow .45s ease,border-color .45s ease;
}
.neon-photo:hover::before{
  border-color:#ff3140;
  box-shadow:0 0 12px rgba(255,49,64,.8),0 0 34px rgba(201,22,36,.55),0 0 70px rgba(201,22,36,.25);
}

/* Parallax V2.8 : l'image vit sur un calque dédié et glisse réellement au scroll.
   Le texte reste fixe ; seul le visuel de fond se déplace. */
.parallax-photo{
  background-image:none!important;
  background:#080808;
  overflow:hidden;
  isolation:isolate;
  --parallax-y:0px;
}
.parallax-photo::after{
  content:"";
  position:absolute;
  inset:-18% -3%;
  z-index:0;
  background-image:url('../img/side-kick-01.webp');
  background-size:cover;
  background-position:center center;
  transform:translate3d(0,var(--parallax-y),0) scale(1.08);
  will-change:transform;
  pointer-events:none;
}
.parallax-photo::before{z-index:1;}
.parallax-photo .wrap{z-index:2;}

/* Cartes des prestations : cadre néon premium, sans changer la grille. */
#prestations .card{
  transition:transform .4s cubic-bezier(.2,.75,.25,1),border-color .4s ease,box-shadow .4s ease;
  border-color:rgba(201,22,36,.36);
  box-shadow:0 0 0 1px rgba(201,22,36,.06),0 0 18px rgba(201,22,36,.08);
}
#prestations .card:hover{
  transform:translateY(-5px);
  border-color:rgba(255,54,68,.92);
  box-shadow:0 0 8px rgba(255,54,68,.55),0 0 26px rgba(201,22,36,.32),0 22px 55px rgba(0,0,0,.38);
}

/* Tarifs : zoom + néon au survol. */
#tarifs .price-card{
  transition:transform .42s cubic-bezier(.2,.75,.25,1),box-shadow .42s ease,border-color .42s ease;
  will-change:transform;
}
#tarifs .price-card:hover{
  transform:translateY(-6px) scale(1.025);
  border-color:rgba(201,22,36,.82);
  box-shadow:0 0 8px rgba(255,52,67,.58),0 0 28px rgba(201,22,36,.28),0 24px 60px rgba(91,7,15,.16);
  z-index:3;
}
#tarifs .price-card.featured:hover{
  box-shadow:0 0 10px rgba(255,52,67,.72),0 0 34px rgba(201,22,36,.36),0 24px 65px rgba(91,7,15,.22);
}

/* Équipe : zoom uniquement sur le portrait, comme demandé. */
#equipe .team-card img{
  transition:transform .5s cubic-bezier(.2,.75,.25,1),filter .45s ease;
  will-change:transform;
}
#equipe .team-card:hover img{transform:scale(1.06);filter:contrast(1.03) saturate(1.03);}

/* Galerie : composition initiale inchangée, indication discrète qu'elle est cliquable. */
.gallery figure{cursor:zoom-in;outline:none;}
.gallery figure:focus-visible{box-shadow:0 0 0 2px var(--red),0 0 28px rgba(201,22,36,.45);}
.gallery figure::after{
  content:"＋";position:absolute;right:12px;bottom:12px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;
  background:rgba(8,8,8,.72);border:1px solid rgba(255,255,255,.25);color:#fff;font-size:1rem;opacity:0;transform:scale(.8);
  transition:.28s;backdrop-filter:blur(8px);pointer-events:none;
}
.gallery figure:hover::after,.gallery figure:focus-visible::after{opacity:1;transform:scale(1);}

/* Lightbox / carrousel créé au clic : absent visuellement au chargement. */
.gallery-lightbox{position:fixed;inset:0;z-index:1400;display:none;place-items:center;background:rgba(0,0,0,.94);backdrop-filter:blur(14px);padding:32px;}
.gallery-lightbox.open{display:grid;animation:lightboxIn .25s ease both;}
@keyframes lightboxIn{from{opacity:0}to{opacity:1}}
.gallery-lightbox__stage{width:min(1160px,92vw);height:min(82vh,900px);display:grid;place-items:center;position:relative;}
.gallery-lightbox__image{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;box-shadow:0 30px 100px rgba(0,0,0,.72),0 0 34px rgba(201,22,36,.22);border-radius:6px;user-select:none;}
.gallery-lightbox__close,.gallery-lightbox__prev,.gallery-lightbox__next{position:absolute;border:1px solid rgba(255,255,255,.24);background:rgba(12,12,12,.74);color:#fff;display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(10px);transition:.25s;z-index:2;}
.gallery-lightbox__close:hover,.gallery-lightbox__prev:hover,.gallery-lightbox__next:hover{background:var(--red);border-color:var(--red);box-shadow:0 0 22px rgba(201,22,36,.45);}
.gallery-lightbox__close{right:20px;top:20px;width:48px;height:48px;border-radius:50%;font-size:1.55rem;}
.gallery-lightbox__prev,.gallery-lightbox__next{top:50%;transform:translateY(-50%);width:54px;height:70px;border-radius:14px;font-size:2rem;}
.gallery-lightbox__prev{left:20px}.gallery-lightbox__next{right:20px}
.gallery-lightbox__meta{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);max-width:min(800px,80vw);padding:9px 14px;border-radius:999px;background:rgba(8,8,8,.7);border:1px solid rgba(255,255,255,.14);color:#d9d2c8;text-align:center;font-size:.78rem;letter-spacing:.04em;backdrop-filter:blur(9px);}

/* Section Compétition — ajout autonome, style cohérent avec la base. */
.competition-grid{display:grid;grid-template-columns:.72fr 1.28fr;gap:72px;align-items:center;}
.competition-mark{min-height:430px;border:1px solid rgba(201,22,36,.42);border-radius:var(--radius);display:grid;place-items:center;align-content:center;position:relative;overflow:hidden;background:radial-gradient(circle at 50% 45%,rgba(201,22,36,.13),transparent 42%),#fff;box-shadow:0 0 22px rgba(201,22,36,.12);}
.competition-mark::before{content:"";position:absolute;width:280px;aspect-ratio:1;border-radius:50%;border:22px solid var(--red);opacity:.88;filter:drop-shadow(0 0 18px rgba(201,22,36,.28));}
.competition-mark span{position:relative;z-index:2;font-family:Georgia,"Times New Roman",serif;font-size:10rem;line-height:.85;color:var(--ink);}
.competition-mark small{position:relative;z-index:2;margin-top:36px;letter-spacing:.3em;font-weight:900;font-size:.68rem;color:#6d6862;}
.competition-meta{display:flex;flex-wrap:wrap;gap:9px;margin-top:26px;}
.competition-meta span{border:1px solid rgba(0,0,0,.16);border-radius:999px;padding:.6rem .8rem;font-size:.74rem;font-weight:800;letter-spacing:.03em;}

@media (max-width:980px){.competition-grid{grid-template-columns:1fr;gap:38px}.competition-mark{min-height:320px}.competition-mark::before{width:220px}.competition-mark span{font-size:7.5rem}}
@media (max-width:650px){.gallery-lightbox{padding:12px}.gallery-lightbox__stage{width:100%;height:80vh}.gallery-lightbox__close{right:8px;top:8px}.gallery-lightbox__prev{left:6px}.gallery-lightbox__next{right:6px}.gallery-lightbox__prev,.gallery-lightbox__next{width:46px;height:58px}.gallery-lightbox__meta{bottom:10px;max-width:88vw}.competition-mark{min-height:270px}.competition-mark::before{width:180px}.competition-mark span{font-size:6rem}}
@media (prefers-reduced-motion:reduce){.neon-photo img,#prestations .card,#tarifs .price-card,#equipe .team-card img{transition:none}.gallery-lightbox.open{animation:none}}

/* =========================================================
   V2.1 — AJOUTS DEMANDÉS, SANS MODIFIER LA COMPOSITION V2
   ========================================================= */

/* Les images restent centrées dans leurs cadres d'origine. */
.card-media img,
.portrait-frame img,
.team-card img,
.gallery img,
.video-card__media img{object-position:center center;}
.gallery img{display:block;}

/* Galerie photo : la mosaïque est inchangée, mais la photo ouverte
   est toujours visible en entier, quelle que soit son orientation. */
.gallery-lightbox{padding:14px;}
.gallery-lightbox__stage{
  width:min(1500px,96vw);
  height:min(94vh,1120px);
  padding:54px 82px 66px;
  box-sizing:border-box;
}
.gallery-lightbox__image{
  width:100%;
  height:100%;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  object-position:center center;
}

/* Section vidéos — prête à recevoir les fichiers de Louison. */
.video-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.video-card{appearance:none;-webkit-appearance:none;border:1px solid var(--line);background:#111;color:var(--paper);border-radius:var(--radius);overflow:hidden;padding:0;text-align:left;font:inherit;cursor:pointer;transition:transform .3s ease,border-color .3s ease,box-shadow .3s ease;}
.video-card:hover,.video-card:focus-visible{transform:translateY(-4px);border-color:rgba(201,22,36,.72);box-shadow:0 0 0 1px rgba(201,22,36,.12),0 0 30px rgba(201,22,36,.18),0 22px 54px rgba(0,0,0,.34);outline:none;}
.video-card__media{display:block;aspect-ratio:16/10;position:relative;overflow:hidden;background:#080808;}
.video-card__media::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.64),transparent 55%);}
.video-card__media img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease,filter .5s ease;}
.video-card:hover .video-card__media img,.video-card:focus-visible .video-card__media img{transform:scale(1.04);filter:contrast(1.04);}
.video-card__play{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,-50%);width:62px;height:62px;border-radius:50%;display:grid;place-items:center;padding-left:4px;background:rgba(201,22,36,.9);color:#fff;border:1px solid rgba(255,255,255,.28);box-shadow:0 0 26px rgba(201,22,36,.42);font-size:1.1rem;}
.video-card__body{display:grid;gap:5px;padding:20px 22px 22px;}
.video-card__body .tag{font-size:.67rem;letter-spacing:.14em;text-transform:uppercase;color:#e75e68;font-weight:900;}
.video-card__body strong{font-family:Georgia,"Times New Roman",serif;font-size:1.3rem;line-height:1.15;}
.video-card__body small{color:#aaa49a;font-size:.8rem;}
.video-card[data-video-src=""]{cursor:default;}
.video-card[data-video-src=""] .video-card__play{opacity:.55;}
.video-note{margin-top:18px;color:#8f8980;font-size:.82rem;}

.video-lightbox{position:fixed;inset:0;z-index:1450;display:none;place-items:center;background:rgba(0,0,0,.95);backdrop-filter:blur(14px);padding:14px;}
.video-lightbox.open{display:grid;animation:lightboxIn .25s ease both;}
.video-lightbox__stage{width:min(1500px,96vw);height:min(92vh,1040px);padding:58px 86px 64px;box-sizing:border-box;display:grid;place-items:center;position:relative;}
.video-lightbox__media{width:100%;height:100%;display:grid;place-items:center;min-width:0;min-height:0;}
.video-lightbox__player,.video-lightbox__iframe{width:100%;height:100%;max-width:100%;max-height:100%;background:#000;border:0;border-radius:8px;box-shadow:0 30px 100px rgba(0,0,0,.74),0 0 34px rgba(201,22,36,.18);}
.video-lightbox__player{object-fit:contain;}
.video-lightbox__iframe{aspect-ratio:16/9;}
.video-lightbox__player[hidden],.video-lightbox__iframe[hidden]{display:none!important;}
.video-lightbox__close,.video-lightbox__prev,.video-lightbox__next{position:absolute;border:1px solid rgba(255,255,255,.24);background:rgba(12,12,12,.78);color:#fff;display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(10px);transition:.25s;z-index:2;}
.video-lightbox__close:hover,.video-lightbox__prev:hover,.video-lightbox__next:hover{background:var(--red);border-color:var(--red);box-shadow:0 0 22px rgba(201,22,36,.45);}
.video-lightbox__close{right:20px;top:20px;width:48px;height:48px;border-radius:50%;font-size:1.55rem;}
.video-lightbox__prev,.video-lightbox__next{top:50%;transform:translateY(-50%);width:54px;height:70px;border-radius:14px;font-size:2rem;}
.video-lightbox__prev{left:20px}.video-lightbox__next{right:20px}
.video-lightbox__meta{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);max-width:min(800px,80vw);padding:9px 14px;border-radius:999px;background:rgba(8,8,8,.74);border:1px solid rgba(255,255,255,.14);color:#d9d2c8;text-align:center;font-size:.78rem;letter-spacing:.04em;backdrop-filter:blur(9px);}

/* Liens vers les autres sites de l'univers Louison. */
.footer-network{border-top:1px solid var(--line);margin-top:38px;padding-top:28px;}
.footer-network h4{margin:0 0 15px;}
.footer-network__links{display:flex;flex-wrap:wrap;gap:8px 10px;}
.footer-network__links a,.footer-network__pending{display:inline-flex!important;align-items:center;margin:0!important;padding:.62rem .82rem;border:1px solid var(--line);border-radius:999px;color:#aaa49a;font-size:.78rem;text-decoration:none;transition:.25s;}
.footer-network__links a:hover{color:#fff;border-color:rgba(201,22,36,.72);box-shadow:0 0 20px rgba(201,22,36,.14);}
.footer-network__pending{opacity:.5;cursor:not-allowed;}
.footer-bottom .creator-link{display:inline!important;margin:0!important;color:#d5cec5;font-weight:800;}
.footer-bottom .creator-link:hover{color:#fff;}

/* Menu plus riche : bascule en burger un peu plus tôt pour éviter tout chevauchement. */
@media (max-width:1180px){
  .nav{position:fixed;inset:0;background:rgba(8,8,8,.98);display:none;flex-direction:column;justify-content:center;align-items:center;gap:18px;font-size:1.2rem;overflow:auto;padding:90px 20px 30px;}
  .nav.open{display:flex}.nav a{font-size:1.03rem}.menu-btn{display:flex;z-index:2}
}
@media (min-width:1181px){.nav{gap:18px}.nav a{font-size:.78rem}}
@media (max-width:980px){.video-gallery{grid-template-columns:1fr 1fr}}
@media (max-width:650px){
  .gallery-lightbox__stage{width:100%;height:86vh;padding:54px 42px 58px;}
  .gallery-lightbox__image{width:100%;height:100%;object-fit:contain;}
  .video-gallery{grid-template-columns:1fr;}
  .video-lightbox__stage{width:100%;height:86vh;padding:56px 42px 58px;}
  .video-lightbox__close{right:8px;top:8px}.video-lightbox__prev{left:6px}.video-lightbox__next{right:6px}.video-lightbox__prev,.video-lightbox__next{width:46px;height:58px}.video-lightbox__meta{bottom:10px;max-width:88vw}
}
@media (prefers-reduced-motion:reduce){.video-card,.video-card__media img{transition:none}.video-lightbox.open{animation:none}}


/* =========================================================
   V2.2 — AJUSTEMENTS VISUELS & UNIVERS DE LOUISON
   Aucun bloc existant n'est supprimé : centrage des sujets,
   halos rouges persistants, lightbox réellement "contain",
   et section visible vers les autres sites.
   ========================================================= */

/* Centrage éditorial : on centre le SUJET dans les cadres, pas seulement
   le fichier source. Les cadrages verticaux sont donc remontés quand nécessaire. */
#prestations .card:nth-child(1) .card-media img{object-position:52% 27%;}
#prestations .card:nth-child(2) .card-media img{object-position:50% 48%;}
#prestations .card:nth-child(3) .card-media img{object-position:50% 34%;}
#prestations .card:nth-child(4) .card-media img{object-position:55% 32%;}
#prestations .card:nth-child(5) .card-media img{object-position:52% 20%;}
#prestations .card:nth-child(6) .card-media img{object-position:52% 38%;}
#prestations .card:nth-child(7) .card-media img{object-position:50% 33%;}

/* Les aperçus vidéo reprennent les mêmes points focaux. */
.video-card:nth-child(1) .video-card__media img{object-position:50% 48%;}
.video-card:nth-child(2) .video-card__media img{object-position:52% 27%;}
.video-card:nth-child(3) .video-card__media img{object-position:50% 42%;}

/* Mosaïque photo inchangée, mais chaque sujet est mieux centré dans sa case. */
.gallery figure:nth-child(1) img{object-position:50% 48%;}
.gallery figure:nth-child(2) img{object-position:50% 40%;}
.gallery figure:nth-child(3) img{object-position:50% 50%;}
.gallery figure:nth-child(4) img{object-position:50% 34%;}
.gallery figure:nth-child(5) img{object-position:50% 44%;}
.gallery figure:nth-child(6) img{object-position:50% 35%;}
#equipe .team-card img{object-position:50% 30%;}

/* Le filet rouge ne disparaît plus : présence discrète en permanence,
   puis halo plus intense au survol. */
#prestations .card{border-color:rgba(201,22,36,.58);box-shadow:0 0 0 1px rgba(201,22,36,.07),0 0 18px rgba(201,22,36,.11);}
#prestations .card-media{box-shadow:inset 0 0 0 1px rgba(255,54,68,.40);}
.neon-photo img{outline:1px solid rgba(255,54,68,.55);outline-offset:0;}
.neon-photo::before{border-color:rgba(255,54,68,.78)!important;box-shadow:0 0 12px rgba(201,22,36,.42),0 0 28px rgba(201,22,36,.18)!important;}
#equipe .team-card img{outline:1px solid rgba(255,54,68,.46);box-shadow:0 0 18px rgba(201,22,36,.12);}
.gallery figure{border:1px solid rgba(255,54,68,.52);box-shadow:0 0 16px rgba(201,22,36,.10);}
.video-card{border-color:rgba(201,22,36,.50);box-shadow:0 0 16px rgba(201,22,36,.08);}

/* Lightbox photo : taille intrinsèque conservée. La photo complète tient
   réellement dans la fenêtre, sans étirement ni débordement vertical. */
.gallery-lightbox{padding:18px 78px 24px;}
.gallery-lightbox__stage{
  width:100%;
  height:100%;
  max-width:none;
  max-height:none;
  padding:58px 24px 70px;
  box-sizing:border-box;
  display:flex;
  align-items:center;
  justify-content:center;
}
.gallery-lightbox__image{
  display:block;
  width:auto!important;
  height:auto!important;
  max-width:min(1400px,calc(100vw - 210px))!important;
  max-height:calc(100vh - 160px)!important;
  object-fit:contain!important;
  object-position:center center!important;
  margin:auto;
}

/* Les autres univers : section volontairement visible mais cohérente avec
   l'esthétique premium du site. */
.univers-section{overflow:hidden;}
.univers-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;}
.univers-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;padding:22px 24px;border:1px solid rgba(0,0,0,.16);border-radius:18px;background:#fff;color:var(--ink);text-decoration:none;transition:transform .32s ease,border-color .32s ease,box-shadow .32s ease;}
.univers-card__index{font-size:.68rem;letter-spacing:.16em;font-weight:900;color:var(--red);}
.univers-card strong{display:block;font-family:Georgia,"Times New Roman",serif;font-size:1.28rem;line-height:1.1;}
.univers-card small{display:block;margin-top:5px;color:#6b665f;font-size:.78rem;line-height:1.4;}
.univers-card b{font-size:1.2rem;color:var(--red);}
.univers-card:hover,.univers-card:focus-visible{transform:translateY(-3px);border-color:rgba(201,22,36,.72);box-shadow:0 0 0 1px rgba(201,22,36,.08),0 0 28px rgba(201,22,36,.15),0 18px 46px rgba(90,12,18,.10);outline:none;}

@media (max-width:980px){
  .univers-grid{grid-template-columns:1fr;}
  .gallery-lightbox{padding:12px 58px 18px;}
  .gallery-lightbox__image{max-width:calc(100vw - 150px)!important;max-height:calc(100vh - 140px)!important;}
}
@media (max-width:650px){
  .univers-card{padding:18px 16px;gap:12px;}
  .gallery-lightbox{padding:8px 48px 12px;}
  .gallery-lightbox__stage{padding:52px 0 62px;}
  .gallery-lightbox__image{max-width:calc(100vw - 104px)!important;max-height:calc(100vh - 126px)!important;}
}

/* =========================================================
   V2.3 — AJOUT PHOTOS PRÉPARATION PHYSIQUE / COURSE À PIED
   La mosaïque existante reste inchangée : les 5 nouveaux
   visuels sont ajoutés à la suite avec centrage du sujet.
   ========================================================= */
.gallery figure:nth-child(7) img{object-position:50% 45%;}
.gallery figure:nth-child(8) img{object-position:50% 46%;}
.gallery figure:nth-child(9) img{object-position:50% 45%;}
.gallery figure:nth-child(10) img{object-position:50% 43%;}
.gallery figure:nth-child(11) img{object-position:50% 44%;}

/* V2.4 — LE GRAND STAGE : ajout photo dédié, sans modifier les galeries existantes. */
.grand-stage-block{
  margin-top:72px;
  padding-top:54px;
  border-top:1px solid rgba(201,22,36,.20);
}
.grand-stage-heading{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(280px,.95fr);
  gap:44px;
  align-items:end;
}
.grand-stage-title{
  margin:.3rem 0 0;
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(2rem,4.2vw,4.2rem);
  line-height:.96;
  letter-spacing:-.035em;
  color:var(--ink);
}
.grand-stage-heading p{
  margin:0;
  max-width:620px;
  color:#5f5a54;
  font-size:1rem;
  line-height:1.8;
}
.stage-gallery{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  grid-auto-rows:230px;
  gap:12px;
}
.stage-gallery figure{
  margin:0;
  overflow:hidden;
  position:relative;
  background:#0b0b0b;
  border:1px solid rgba(255,54,68,.58);
  border-radius:12px;
  box-shadow:0 0 16px rgba(201,22,36,.12);
  cursor:zoom-in;
  outline:none;
}
.stage-gallery figure:nth-child(1),
.stage-gallery figure:nth-child(11),
.stage-gallery figure:nth-child(12),
.stage-gallery figure:nth-child(14),
.stage-gallery figure:nth-child(15),
.stage-gallery figure:nth-child(16){grid-column:span 2;}
.stage-gallery figure:nth-child(3),
.stage-gallery figure:nth-child(4),
.stage-gallery figure:nth-child(5),
.stage-gallery figure:nth-child(6),
.stage-gallery figure:nth-child(7){grid-row:span 2;}
.stage-gallery img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  object-position:center center;
  transition:transform .5s ease,filter .35s ease;
}
.stage-gallery figure::after{
  content:"↗";
  position:absolute;
  right:12px;
  bottom:12px;
  width:36px;
  height:36px;
  display:grid;
  place-items:center;
  border-radius:50%;
  color:#fff;
  background:rgba(7,7,7,.74);
  border:1px solid rgba(255,255,255,.24);
  opacity:.82;
  transform:scale(.94);
  transition:.25s ease;
  pointer-events:none;
}
.stage-gallery figure:hover,
.stage-gallery figure:focus-visible{
  border-color:rgba(255,54,68,.92);
  box-shadow:0 0 18px rgba(201,22,36,.42),0 0 42px rgba(201,22,36,.16);
}
.stage-gallery figure:hover img,
.stage-gallery figure:focus-visible img{transform:scale(1.045);filter:contrast(1.02);}
.stage-gallery figure:hover::after,
.stage-gallery figure:focus-visible::after{background:var(--red);border-color:var(--red);transform:scale(1);}

@media (max-width:980px){
  .grand-stage-heading{grid-template-columns:1fr;gap:22px;}
  .stage-gallery{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:260px;}
  .stage-gallery figure:nth-child(n){grid-column:span 1;grid-row:span 1;}
  .stage-gallery figure:nth-child(1),.stage-gallery figure:nth-child(11),.stage-gallery figure:nth-child(12),.stage-gallery figure:nth-child(14),.stage-gallery figure:nth-child(15),.stage-gallery figure:nth-child(16){grid-column:span 2;}
}
@media (max-width:650px){
  .grand-stage-block{margin-top:52px;padding-top:42px;}
  .stage-gallery{grid-template-columns:1fr;grid-auto-rows:330px;}
  .stage-gallery figure:nth-child(n){grid-column:span 1;grid-row:span 1;}
}
@media (prefers-reduced-motion:reduce){.stage-gallery img{transition:none;}}


/* =========================================================
   V2.5 — FRACTURE EN COMPÉTITION / CONTENU SENSIBLE
   Les originaux restent intacts : le flou est appliqué en CSS
   et ne disparaît qu'après une action volontaire du visiteur.
   ========================================================= */
.ankle-story-block{
  margin-top:72px;
  padding-top:54px;
  border-top:1px solid rgba(201,22,36,.20);
}
.ankle-story-heading{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(300px,.95fr);
  gap:44px;
  align-items:end;
}
.ankle-story-copy p{margin:0;color:#5f5a54;font-size:1rem;line-height:1.8;}
.ankle-story-copy p+p{margin-top:14px;}
.sensitive-note{
  padding:14px 16px;
  border-left:3px solid var(--red);
  background:rgba(201,22,36,.055);
  border-radius:0 10px 10px 0;
}
.sensitive-gallery{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
}
.sensitive-photo{position:relative;margin:0;min-width:0;}
.sensitive-photo__media{
  position:relative;
  height:320px;
  overflow:hidden;
  border-radius:12px;
  background:#0a0a0a;
  border:1px solid rgba(255,54,68,.68);
  box-shadow:0 0 16px rgba(201,22,36,.16),0 0 34px rgba(201,22,36,.08);
}
.sensitive-photo__media img{
  width:100%;height:100%;display:block;object-fit:cover;object-position:center;
  filter:blur(22px) saturate(.72) brightness(.72);
  transform:scale(1.10);
  transition:filter .45s ease,transform .55s ease;
}
.sensitive-photo__cover{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:8px;padding:24px;text-align:center;background:linear-gradient(180deg,rgba(8,8,8,.24),rgba(8,8,8,.58));
  color:#fff;transition:opacity .3s ease,visibility .3s ease;
}
.sensitive-photo__warning{font-weight:900;letter-spacing:.055em;text-transform:uppercase;font-size:.74rem;}
.sensitive-photo__cover small{color:#d8d1c8;font-size:.76rem;}
.sensitive-photo__toggle,.sensitive-photo__rehide{
  border:1px solid rgba(255,255,255,.35);background:rgba(8,8,8,.82);color:#fff;border-radius:999px;
  padding:10px 15px;font:inherit;font-size:.76rem;font-weight:850;letter-spacing:.04em;cursor:pointer;
  transition:.25s ease;
}
.sensitive-photo__toggle{margin-top:6px;}
.sensitive-photo__toggle:hover,.sensitive-photo__toggle:focus-visible,
.sensitive-photo__rehide:hover,.sensitive-photo__rehide:focus-visible{
  background:var(--red);border-color:var(--red);box-shadow:0 0 22px rgba(201,22,36,.42);outline:none;
}
.sensitive-photo__rehide{
  position:absolute;z-index:3;right:10px;top:10px;opacity:0;visibility:hidden;pointer-events:none;
  padding:8px 11px;background:rgba(8,8,8,.78);backdrop-filter:blur(8px);
}
.sensitive-photo.is-revealed .sensitive-photo__media img{filter:none;transform:scale(1);}
.sensitive-photo.is-revealed .sensitive-photo__cover{opacity:0;visibility:hidden;pointer-events:none;}
.sensitive-photo.is-revealed .sensitive-photo__rehide{opacity:1;visibility:visible;pointer-events:auto;}
.sensitive-photo:nth-child(1),.sensitive-photo:nth-child(5),.sensitive-photo:nth-child(8),.sensitive-photo:nth-child(9),.sensitive-photo:nth-child(10){grid-column:span 2;}
.sensitive-photo:nth-child(1) .sensitive-photo__media,
.sensitive-photo:nth-child(5) .sensitive-photo__media,
.sensitive-photo:nth-child(8) .sensitive-photo__media,
.sensitive-photo:nth-child(9) .sensitive-photo__media,
.sensitive-photo:nth-child(10) .sensitive-photo__media{height:300px;}

@media (max-width:980px){
  .ankle-story-heading{grid-template-columns:1fr;gap:22px;}
  .sensitive-gallery{grid-template-columns:repeat(2,minmax(0,1fr));}
  .sensitive-photo:nth-child(n){grid-column:span 1;}
  .sensitive-photo__media,.sensitive-photo:nth-child(n) .sensitive-photo__media{height:360px;}
}
@media (max-width:650px){
  .ankle-story-block{margin-top:52px;padding-top:42px;}
  .sensitive-gallery{grid-template-columns:1fr;}
  .sensitive-photo__media,.sensitive-photo:nth-child(n) .sensitive-photo__media{height:420px;}
}
@media (prefers-reduced-motion:reduce){
  .sensitive-photo__media img,.sensitive-photo__cover{transition:none;}
}


/* V2.7 — citation entraînement */
.training-quote{max-width:780px;margin:1.25rem 0 0;color:#f3eee7;text-shadow:0 2px 18px rgba(0,0,0,.65)}
.training-quote::before{color:var(--red)}


/* V2.8 — accessibilité : si l'utilisateur demande moins d'animations, le fond reste fixe. */
@media (prefers-reduced-motion:reduce){
  .parallax-photo::after{transform:scale(1.08)!important;will-change:auto;}
}

/* V2.14 — Parallax plein cadre : l'image principale reste visible dans son intégralité.
   Un fond assombri remplit la largeur ; la photo nette, en contain, glisse par-dessus. */
.parallax-photo{
  min-height:92vh;
  background-image:
    linear-gradient(90deg,rgba(8,8,8,.78),rgba(8,8,8,.38) 34%,rgba(8,8,8,.38) 66%,rgba(8,8,8,.78)),
    url('../img/side-kick-01.webp')!important;
  background-size:cover!important;
  background-position:center center!important;
  background-repeat:no-repeat!important;
}
.parallax-photo::after{
  inset:0;
  background-image:url('../img/side-kick-01.webp');
  background-size:auto calc(100% - 120px);
  background-repeat:no-repeat;
  background-position:center center;
  transform:translate3d(0,var(--parallax-y),0);
  filter:drop-shadow(0 28px 50px rgba(0,0,0,.58));
  opacity:.98;
}
.parallax-photo::before{
  background:linear-gradient(to top,rgba(0,0,0,.93),rgba(0,0,0,.24) 56%,rgba(0,0,0,.38));
}

/* V2.14 — Galerie personnelle MP4 + bloc YouTube séparé. */
.video-card--placeholder{
  border-color:rgba(201,22,36,.42);
  box-shadow:0 0 0 1px rgba(201,22,36,.06),0 0 18px rgba(201,22,36,.08);
}
.video-card--placeholder .video-card__play{opacity:.72;}
.video-card--placeholder[aria-disabled="true"]{cursor:default;}
.video-card--placeholder[aria-disabled="true"]:hover,
.video-card--placeholder[aria-disabled="true"]:focus-visible{
  transform:none;
  border-color:rgba(201,22,36,.52);
  box-shadow:0 0 18px rgba(201,22,36,.10);
}
.video-card--placeholder[aria-disabled="true"]:hover .video-card__media img,
.video-card--placeholder[aria-disabled="true"]:focus-visible .video-card__media img{
  transform:none;
  filter:none;
}

.youtube-stage-block{
  margin-top:78px;
  padding-top:62px;
  border-top:1px solid rgba(255,255,255,.09);
  position:relative;
}
.youtube-stage-block::before{
  content:"";
  position:absolute;
  left:0;
  top:-1px;
  width:130px;
  height:1px;
  background:linear-gradient(90deg,var(--red),transparent);
  box-shadow:0 0 18px rgba(201,22,36,.5);
}
.youtube-stage-title{
  margin:.35rem 0 .85rem;
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(1.9rem,3.3vw,3.2rem);
  line-height:1.02;
}
.youtube-stage-intro{max-width:760px;color:#aaa49a;margin:0;}
.youtube-stage-gallery{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px;
  margin-top:30px;
}
.youtube-stage-card{
  display:block;
  color:var(--paper);
  text-decoration:none;
  border:1px solid rgba(201,22,36,.5);
  background:#111;
  border-radius:var(--radius);
  overflow:hidden;
  box-shadow:0 0 16px rgba(201,22,36,.08);
  transition:transform .3s ease,border-color .3s ease,box-shadow .3s ease;
}
.youtube-stage-card:hover,.youtube-stage-card:focus-visible{
  transform:translateY(-4px);
  border-color:rgba(255,54,68,.9);
  box-shadow:0 0 0 1px rgba(201,22,36,.12),0 0 32px rgba(201,22,36,.2),0 22px 54px rgba(0,0,0,.34);
  outline:none;
}
.youtube-stage-card__media{
  display:block;
  aspect-ratio:16/10;
  position:relative;
  overflow:hidden;
  background:#080808;
}
.youtube-stage-card__media::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(to top,rgba(0,0,0,.65),transparent 55%);
}
.youtube-stage-card__media img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center center;
  transition:transform .5s ease,filter .5s ease;
}
.youtube-stage-card:hover .youtube-stage-card__media img,
.youtube-stage-card:focus-visible .youtube-stage-card__media img{
  transform:scale(1.04);
  filter:contrast(1.05);
}
.youtube-stage-card__play{
  position:absolute;
  z-index:2;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  width:62px;
  height:62px;
  border-radius:50%;
  display:grid;
  place-items:center;
  padding-left:4px;
  background:rgba(201,22,36,.92);
  color:#fff;
  border:1px solid rgba(255,255,255,.28);
  box-shadow:0 0 26px rgba(201,22,36,.42);
}
.youtube-stage-card__body{display:grid;gap:5px;padding:20px 22px 22px;}
.youtube-stage-card__body .tag{font-size:.67rem;letter-spacing:.14em;text-transform:uppercase;color:#e75e68;font-weight:900;}
.youtube-stage-card__body strong{font-family:Georgia,"Times New Roman",serif;font-size:1.3rem;line-height:1.15;}
.youtube-stage-card__body small{color:#aaa49a;font-size:.8rem;}

@media (max-width:980px){
  .youtube-stage-gallery{grid-template-columns:1fr 1fr;}
  .parallax-photo::after{background-size:auto calc(100% - 100px);}
}
@media (max-width:650px){
  .youtube-stage-block{margin-top:58px;padding-top:46px;}
  .youtube-stage-gallery{grid-template-columns:1fr;}
  .parallax-photo{min-height:86vh;}
  .parallax-photo::after{background-size:auto calc(100% - 78px);}
}
@media (prefers-reduced-motion:reduce){
  .parallax-photo::after{transform:none!important;}
  .youtube-stage-card,.youtube-stage-card__media img{transition:none;}
}


/* V2.15 — Aperçus vidéo parfaitement centrés + miniatures YouTube officielles. */
#videos .video-card__media,
#videos .youtube-stage-card__media{
  display:grid;
  place-items:center;
}
#videos .video-card__media img,
#videos .youtube-stage-card__media img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:50% 50% !important;
  margin:auto;
}
/* Neutralise les anciens points focaux spécifiques : les aperçus vidéo sont centrés. */
#videos .video-card:nth-child(1) .video-card__media img,
#videos .video-card:nth-child(2) .video-card__media img,
#videos .video-card:nth-child(3) .video-card__media img{
  object-position:50% 50% !important;
}
/* Les miniatures YouTube sont au format 16:9 et restent centrées dans leur carte. */
#videos .youtube-stage-card__media{aspect-ratio:16/9;}

/* V2.20 — Lecteur vidéo local : centrage réel dans la lightbox, sans recadrage. */
.video-lightbox__media{
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}
.video-lightbox__player{
  display:block;
  width:auto;
  height:auto;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  object-position:50% 50%;
  margin:auto;
}


/* =========================================================
   V2.21 — CORRECTION DÉFINITIVE DU CENTRAGE DES VIDÉOS
   La vidéo locale reste entière, centrée horizontalement et
   verticalement, sans recadrage ni débordement de la fenêtre.
   ========================================================= */
.video-lightbox{
  padding:0 !important;
  overflow:hidden;
}
.video-lightbox__stage{
  width:100vw !important;
  height:100vh !important;
  height:100dvh !important;
  max-width:none !important;
  max-height:none !important;
  box-sizing:border-box;
  padding:74px 96px 78px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:hidden;
}
.video-lightbox__media{
  position:relative;
  width:100% !important;
  height:100% !important;
  min-width:0;
  min-height:0;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:hidden !important;
}
.video-lightbox__player{
  position:static !important;
  display:block !important;
  width:auto !important;
  height:auto !important;
  max-width:100% !important;
  max-height:100% !important;
  object-fit:contain !important;
  object-position:center center !important;
  margin:auto !important;
  flex:0 1 auto;
}
.video-lightbox__iframe{
  max-width:100% !important;
  max-height:100% !important;
  margin:auto !important;
}
.video-lightbox__player[hidden],
.video-lightbox__iframe[hidden]{display:none !important;}

@media (max-width:760px){
  .video-lightbox__stage{
    padding:62px 54px 70px !important;
  }
}
@media (max-width:520px){
  .video-lightbox__stage{
    padding:58px 46px 68px !important;
  }
}


/* =========================================================
   V2.22 — LECTEUR MP4 RESPONSIVE TOUS ÉCRANS
   Le lecteur local est centré dans la fenêtre sur ordinateur,
   tablette et mobile. Aucun recadrage : la vidéo reste entière.
   Le JS calcule ensuite sa taille exacte d'après son ratio natif.
   ========================================================= */
.video-lightbox{
  padding:0 !important;
  overflow:hidden !important;
}
.video-lightbox__stage{
  width:100vw !important;
  height:100vh !important;
  height:100dvh !important;
  max-width:none !important;
  max-height:none !important;
  box-sizing:border-box !important;
  padding:
    max(64px, env(safe-area-inset-top))
    max(78px, env(safe-area-inset-right))
    max(72px, env(safe-area-inset-bottom))
    max(78px, env(safe-area-inset-left)) !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:hidden !important;
}
.video-lightbox__media{
  position:relative !important;
  width:100% !important;
  height:100% !important;
  min-width:0 !important;
  min-height:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:hidden !important;
}
.video-lightbox__player{
  position:relative !important;
  display:block !important;
  width:100%;
  height:100%;
  max-width:100% !important;
  max-height:100% !important;
  object-fit:contain !important;
  object-position:50% 50% !important;
  margin:auto !important;
  flex:none !important;
  background:#000 !important;
}
.video-lightbox__iframe{
  width:min(100%, 1280px) !important;
  height:auto !important;
  aspect-ratio:16 / 9 !important;
  max-width:100% !important;
  max-height:100% !important;
  margin:auto !important;
}
.video-lightbox__player[hidden],
.video-lightbox__iframe[hidden]{display:none !important;}

@media (max-width:900px){
  .video-lightbox__stage{
    padding:
      max(58px, env(safe-area-inset-top))
      max(54px, env(safe-area-inset-right))
      max(66px, env(safe-area-inset-bottom))
      max(54px, env(safe-area-inset-left)) !important;
  }
}
@media (max-width:520px){
  .video-lightbox__stage{
    padding:
      max(54px, env(safe-area-inset-top))
      max(42px, env(safe-area-inset-right))
      max(64px, env(safe-area-inset-bottom))
      max(42px, env(safe-area-inset-left)) !important;
  }
}

/* V2.23 — Expérience de Louison */
.experience-section{padding-top:10px;background:linear-gradient(180deg,#f4f0e8 0%,#fff 100%)}
.experience-heading{max-width:850px;margin-bottom:34px}
.experience-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.experience-card{position:relative;padding:28px;border:1px solid rgba(0,0,0,.14);border-radius:var(--radius);background:rgba(255,255,255,.82);box-shadow:0 16px 38px rgba(0,0,0,.06);overflow:hidden}
.experience-card::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--red)}
.experience-card h3{font-family:Georgia,"Times New Roman",serif;font-size:1.5rem;margin:.35rem 0 .7rem}
.experience-card p{margin:0;color:#4c4741;line-height:1.75}
@media (max-width:760px){.experience-grid{grid-template-columns:1fr}.experience-card{padding:24px}}

/* =========================================================
   V2.31 — POLISSAGE VISUEL + ÉCRAN D'ENTRÉE + RESPONSIVE
   Aucune section ni information existante supprimée.
   ========================================================= */
.site-intro[hidden]{display:none!important}
.site-intro{position:fixed;inset:0;z-index:3000;display:grid;place-items:center;padding:clamp(18px,4vw,48px);background:radial-gradient(circle at 50% 40%,rgba(201,22,36,.22),transparent 34%),radial-gradient(circle at 50% 100%,rgba(201,22,36,.10),transparent 42%),#050505;opacity:0;visibility:hidden;transition:opacity .55s ease,visibility .55s ease;overflow:auto}
.site-intro::before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.025),transparent 38%,rgba(201,22,36,.035))}
.site-intro.is-visible{opacity:1;visibility:visible}.site-intro.is-leaving{opacity:0;visibility:hidden;pointer-events:none}body.intro-open{overflow:hidden}
.site-intro__inner{position:relative;width:min(92vw,760px);display:grid;justify-items:center;gap:16px;text-align:center}
.site-intro__logo-wrap{width:min(74vw,600px);aspect-ratio:1;display:grid;place-items:center;filter:drop-shadow(0 30px 55px rgba(0,0,0,.55));animation:introFloat 5.5s ease-in-out infinite alternate}
.site-intro__logo{width:100%;height:100%;object-fit:contain;border-radius:18px;box-shadow:0 0 0 1px rgba(255,255,255,.06),0 0 56px rgba(201,22,36,.12)}
.site-intro__tagline{margin:4px 0 0;color:#d6d0c8;font-size:clamp(.72rem,1.5vw,.9rem);font-weight:800;letter-spacing:.18em;text-transform:uppercase}
.site-intro__enter{margin-top:4px;border:1px solid rgba(255,255,255,.24);background:rgba(255,255,255,.035);color:#fff;border-radius:999px;padding:13px 24px;font:inherit;font-size:.85rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;transition:transform .25s ease,background .25s ease,border-color .25s ease,box-shadow .25s ease}
.site-intro__enter span{color:#ff3443;margin-left:7px}.site-intro__enter:hover,.site-intro__enter:focus-visible{transform:translateY(-2px);background:var(--red);border-color:var(--red);box-shadow:0 0 28px rgba(201,22,36,.34);outline:none}
@keyframes introFloat{to{transform:translateY(-7px)}}
section[id]{scroll-margin-top:84px}
@media (min-width:981px){.nav{gap:clamp(10px,1.05vw,17px)}.nav a{font-size:clamp(.70rem,.66vw,.79rem)}.nav .btn.small{padding:.68rem .9rem}}
.wisdom-quote{margin-top:36px;max-width:900px;padding:24px 26px 24px 28px;border-left:3px solid var(--red);background:linear-gradient(90deg,rgba(201,22,36,.10),rgba(255,255,255,.025));border-radius:0 18px 18px 0}
.wisdom-quote p{margin:0;font-family:Georgia,"Times New Roman",serif;font-size:clamp(1.28rem,2.5vw,2rem);line-height:1.25;color:#f3eee7}.wisdom-quote small{display:block;margin-top:12px;color:#aaa49a;line-height:1.6}
.experience-section{padding-top:82px;padding-bottom:100px}.experience-heading{margin-bottom:38px}
.parallax-photo{min-height:92vh!important}.parallax-photo::after{background-size:auto calc(100% - 150px)!important;background-position:center center!important;background-repeat:no-repeat!important}
@media (max-width:980px){.parallax-photo::after{background-size:auto calc(100% - 116px)!important}}
@media (max-width:650px){.parallax-photo{min-height:84vh!important}.parallax-photo::after{background-size:auto calc(100% - 94px)!important}}
.video-lightbox:not(.open){display:none!important}.video-lightbox.open{display:grid!important;place-items:center!important}.video-lightbox__stage{position:relative!important;inset:auto!important;width:100vw!important;height:100dvh!important;display:grid!important;place-items:center!important;padding:clamp(62px,7vh,86px) clamp(54px,7vw,128px) clamp(70px,8vh,92px)!important}.video-lightbox__media{width:100%!important;height:100%!important;max-width:1440px!important;max-height:100%!important;display:grid!important;place-items:center!important;overflow:hidden!important}.video-lightbox__player{display:block!important;width:auto!important;height:auto!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important;object-position:center center!important;margin:auto!important;background:#000!important}.video-lightbox__iframe{width:min(100%,1280px)!important;height:auto!important;aspect-ratio:16/9!important;max-height:100%!important;margin:auto!important}
@media (max-width:700px){.video-lightbox__stage{padding:58px 44px 68px!important}}@media (max-width:430px){.video-lightbox__stage{padding:54px 34px 64px!important}}
.nav a:focus-visible,.brand:focus-visible,.hero-scroll:focus-visible{outline:2px solid #ff3443;outline-offset:6px;border-radius:8px}
@media (max-width:650px){.site-intro__inner{width:100%;gap:13px}.site-intro__logo-wrap{width:min(88vw,520px)}.site-intro__tagline{letter-spacing:.12em;line-height:1.6}.wisdom-quote{padding:20px 20px 20px 22px}.experience-section{padding-top:68px;padding-bottom:82px}}
@media (prefers-reduced-motion:reduce){.site-intro,.site-intro__logo-wrap,.site-intro__enter{transition:none!important;animation:none!important}}


/* V2.33 — Navigation et hub photos : ordre du menu aligné sur le défilement,
   accès Photos placé au début de l'ensemble des galeries. */
section[id], div[id]{scroll-margin-top:88px;}
.photo-hub{
  margin-top:54px;
  padding-top:50px;
  padding-bottom:8px;
  border-top:1px solid rgba(0,0,0,.13);
}
.photo-hub .lead{max-width:860px;}
.photo-hub__links{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px;}
.photo-hub__links .btn{color:inherit;}
@media (max-width:650px){
  .photo-hub{margin-top:42px;padding-top:38px;}
  .photo-hub__links{gap:8px;}
  .photo-hub__links .btn{flex:1 1 calc(50% - 8px);min-width:0;padding:.72rem .82rem;}
}

/* =========================================================
   V2.35 — GALERIE PHOTO EN ALBUMS
   Une seule entrée Photos, 8 albums, aucune photo supprimée.
   L'effet du poing de l'accueil n'est pas modifié.
   ========================================================= */
.photo-hub{padding-bottom:34px;}
.photo-hub .lead{max-width:940px;}
.photo-album-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
  margin-top:34px;
}
.photo-album-card{
  position:relative;
  min-height:290px;
  overflow:hidden;
  border-radius:18px;
  background:#0b0b0b;
  border:1px solid rgba(201,22,36,.28);
  box-shadow:0 18px 48px rgba(0,0,0,.12);
  color:#fff;
  text-decoration:none;
  isolation:isolate;
  transition:transform .3s ease,border-color .3s ease,box-shadow .3s ease;
}
.photo-album-card::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.03) 18%,rgba(0,0,0,.24) 46%,rgba(0,0,0,.94) 100%);
}
.photo-album-card__media{position:absolute;inset:0;display:block;}
.photo-album-card__media img{
  width:100%;height:100%;object-fit:cover;object-position:center;
  transform:scale(1.002);
  transition:transform .55s cubic-bezier(.2,.75,.25,1),filter .4s ease;
}
.photo-album-card__overlay{
  position:absolute;
  z-index:2;
  inset:auto 0 0;
  display:flex;
  flex-direction:column;
  gap:4px;
  padding:22px 20px 18px;
}
.photo-album-card__type{
  display:block;
  color:#ff6b75;
  font-size:.66rem;
  font-weight:900;
  letter-spacing:.13em;
  text-transform:uppercase;
}
.photo-album-card strong{
  display:block;
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(1.2rem,1.65vw,1.65rem);
  line-height:1.03;
  letter-spacing:-.025em;
}
.photo-album-card small{display:block;color:#d1cbc3;font-size:.75rem;line-height:1.45;}
.photo-album-card__action{
  display:inline-flex;
  align-items:center;
  width:max-content;
  margin-top:8px;
  color:#fff;
  font-size:.72rem;
  font-weight:900;
  letter-spacing:.05em;
  text-transform:uppercase;
  border-bottom:1px solid rgba(255,255,255,.38);
}
.photo-album-card:hover,.photo-album-card:focus-visible{
  transform:translateY(-5px);
  border-color:rgba(201,22,36,.9);
  box-shadow:0 22px 62px rgba(0,0,0,.18),0 0 34px rgba(201,22,36,.18);
  outline:none;
}
.photo-album-card:hover .photo-album-card__media img,
.photo-album-card:focus-visible .photo-album-card__media img{transform:scale(1.055);filter:contrast(1.04);}
.photo-album-card[aria-current="true"]{border-color:var(--red);box-shadow:0 0 0 2px rgba(201,22,36,.18),0 20px 55px rgba(0,0,0,.16);}
.photo-album-card--story .photo-album-card__media img{filter:saturate(.72) contrast(1.05);}
.photo-hub__hint{
  margin:18px 0 0;
  color:#6a655f;
  font-size:.82rem;
  line-height:1.6;
}

/* Avec JavaScript : les albums ne s'empilent plus tous sur la page. */
.photos-section.photo-albums-ready .photo-album-panel{display:none;}
.photos-section.photo-albums-ready .photo-album-panel.is-active{display:block;animation:photoAlbumIn .38s ease both;}
@keyframes photoAlbumIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.photo-album-panel.is-active{scroll-margin-top:104px;}
.photo-album-back{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin:0 0 22px;
  padding:10px 15px;
  border:1px solid rgba(0,0,0,.18);
  border-radius:999px;
  background:rgba(255,255,255,.5);
  color:#24211e;
  font:inherit;
  font-size:.76rem;
  font-weight:900;
  letter-spacing:.04em;
  cursor:pointer;
  transition:.25s ease;
}
.photo-album-back:hover,.photo-album-back:focus-visible{background:var(--red);border-color:var(--red);color:#fff;outline:none;transform:translateX(-2px);}

/* Mosaïque adaptative : le format réel des photos guide la mise en page. */
.photo-album-panel .stage-gallery{grid-auto-flow:dense;}
.photo-album-panel .stage-gallery figure:nth-child(n){grid-column:span 1;grid-row:span 1;}
.photo-album-panel .stage-gallery figure.is-wide{grid-column:span 2;}
.photo-album-panel .stage-gallery figure.is-tall{grid-row:span 2;}
.photo-album-panel .stage-gallery figure.is-featured{grid-column:span 2;grid-row:span 2;}

@media (max-width:980px){
  .photo-album-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .photo-album-card{min-height:310px;}
  .photo-album-panel .stage-gallery figure.is-featured{grid-row:span 1;}
}
@media (max-width:650px){
  .photo-hub{padding-bottom:18px;}
  .photo-album-grid{grid-template-columns:1fr;gap:12px;margin-top:26px;}
  .photo-album-card{min-height:255px;border-radius:15px;}
  .photo-album-card__overlay{padding:20px 18px 17px;}
  .photo-album-card strong{font-size:1.38rem;}
  .photo-album-panel .stage-gallery figure:nth-child(n),
  .photo-album-panel .stage-gallery figure.is-wide,
  .photo-album-panel .stage-gallery figure.is-tall,
  .photo-album-panel .stage-gallery figure.is-featured{grid-column:span 1;grid-row:span 1;}
  .photo-album-back{margin-bottom:18px;}
}
@media (prefers-reduced-motion:reduce){
  .photo-album-card,.photo-album-card__media img,.photo-album-panel.is-active{transition:none!important;animation:none!important;}
}
