:root{
  --bg:#FBF9F4; --paper:#F3EEE4; --ink:#1C1A17; --ink-2:#3D3830; --muted:#5E574D; --line:#E3DCCF;
  --accent:#A8321F; --accent-ink:#FFFFFF; --dark:#1C1A17; --on-dark:#F3EEE4; --on-dark-2:#D9D2C5;
  --tint:#F4E2DC; --tint-ink:#8A2818;
  --display:'Fraunces',Georgia,'Times New Roman',serif; --body:'Source Sans 3','Segoe UI',system-ui,sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:19px;line-height:1.55}
img{max-width:100%;display:block;background:var(--paper)}
a{color:inherit}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
h1,h2,h3{font-family:var(--display);font-weight:400;text-wrap:balance;margin:0;line-height:1.08}
.wrap{max-width:1280px;margin:0 auto;padding-inline:clamp(16px,5vw,64px)}
.eyebrow{font-size:14px;letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:var(--accent);margin:0}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:12px 26px;font-weight:700;font-size:18px;text-decoration:none;border:2px solid var(--ink)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.credit{font-size:14px;background:var(--dark);color:var(--on-dark);padding:6px 12px}
section,.page{scroll-margin-top:96px}

#loader{display:none}
.js #loader{position:fixed;inset:0;z-index:100;background:var(--bg);display:grid;place-content:center;justify-items:center;gap:14px;font-weight:700;color:var(--muted);transition:opacity .2s}
#loader.done{opacity:0;pointer-events:none}

.demo{background:var(--paper);color:var(--muted);font-size:15px;text-align:center;padding:8px 16px;border-bottom:1px solid var(--line);margin:0}

header.site{position:sticky;top:env(safe-area-inset-top,0px);z-index:10;background:var(--bg);border-bottom:1px solid var(--line)}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:88px}
.logo{display:flex;align-items:center;gap:14px;text-decoration:none}
.logo-mark{width:48px;height:48px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;font-family:var(--display);font-size:26px}
.logo b{display:block;font-family:var(--display);font-weight:600;font-size:21px;line-height:1.1}
.logo small{display:block;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
nav.main{display:flex;align-items:center;gap:22px;font-weight:700;font-size:17px}
nav.main a{text-decoration:none;padding:8px 0}
nav.main a:hover{color:var(--accent)}
.tools{display:flex;align-items:center;gap:10px}
.langs{display:flex;gap:6px}
.langs button{width:46px;height:44px;display:grid;place-items:center;background:var(--bg);border:2px solid transparent;cursor:pointer;padding:0}
.langs button[aria-pressed="true"]{border-color:var(--ink)}
.menu{display:none}
.menu summary{list-style:none;cursor:pointer;font-weight:700;border:2px solid var(--ink);padding:8px 14px}
.menu summary::-webkit-details-marker{display:none}
.menu nav{position:absolute;left:0;right:0;top:100%;background:var(--bg);border-bottom:1px solid var(--line);display:flex;flex-direction:column;padding:8px 16px 16px}
.menu nav a{padding:14px 0;border-bottom:1px solid var(--line);text-decoration:none;font-weight:700}

.hero{position:relative;background:#11100E}
.hero img{width:100%;height:clamp(420px,62vw,720px);object-fit:cover;opacity:.92}
.hero .card{position:absolute;left:clamp(16px,5vw,64px);bottom:clamp(90px,10vw,130px);max-width:640px;background:var(--bg);padding:clamp(24px,3.5vw,44px);display:flex;flex-direction:column;gap:14px}
.hero h1{font-size:clamp(34px,4.6vw,60px)}
.hero .card p{margin:0;color:var(--ink-2)}
.hero .credit{position:absolute;right:clamp(16px,5vw,64px);top:20px}

.actions{position:relative;margin-top:-64px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.actions a{display:flex;flex-direction:column;gap:14px;min-height:140px;padding:24px;text-decoration:none;background:var(--dark);color:var(--on-dark);font-size:21px;font-weight:700;line-height:1.25}
.actions a:first-child{background:var(--accent);color:var(--accent-ink)}
.actions a:hover span{text-decoration:underline;text-underline-offset:4px}
.actions svg{width:34px;height:34px;stroke:currentColor;fill:none;stroke-width:1.8}

section{padding-block:clamp(56px,7vw,96px)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:var(--bg);padding:10px 16px;z-index:200}
.skip:focus{left:8px}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:32px}
.head h2{font-size:clamp(32px,3.6vw,48px)}
.head a{font-weight:700}

.news{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:22px}
.news a{text-decoration:none;border:1px solid var(--line);display:flex;flex-direction:column}
.news a:hover h3{text-decoration:underline;text-underline-offset:3px}
.news img{aspect-ratio:3/2;object-fit:cover;width:100%}
.news div{padding:18px 20px 22px;display:flex;flex-direction:column;gap:8px}
.tag{display:flex;gap:10px;font-size:14px;font-weight:700;align-items:center;margin:0}
.tag span:first-child{background:var(--tint);color:var(--tint-ink);padding:3px 9px}
.tag span:last-child{color:var(--muted)}
.news h3{font-family:var(--body);font-weight:700;font-size:20px;line-height:1.3}

.salon{background:var(--paper)}
.salon .wrap{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,72px);align-items:center}
.salon h2{font-size:clamp(34px,3.8vw,50px);margin:12px 0 16px}
.salon p{margin:0 0 20px;color:var(--ink-2);max-width:34em}
.salon dl{display:grid;grid-template-columns:auto 1fr;gap:8px 20px;margin:0 0 24px;padding-block:16px;border-block:1px solid #DDD5C7;font-size:17px}
.salon dt{color:var(--muted)}
.salon dd{margin:0;font-weight:700}
.row{display:flex;gap:12px;flex-wrap:wrap}
.salon figure{margin:0;position:relative}
.salon figure img{width:100%;aspect-ratio:4/3;object-fit:cover}
.salon figcaption{position:absolute;left:14px;bottom:14px}

.do{border-top:1px solid var(--line)}
.do div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);gap:24px;align-items:baseline;padding:28px 0;border-bottom:1px solid var(--line)}
.do h3{font-size:30px}
.do p{margin:0;color:var(--ink-2)}
.do a{font-weight:700;justify-self:end}

.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.tiles a{position:relative;display:block;text-decoration:none}
.tiles img{width:100%;aspect-ratio:3/2;object-fit:cover}
.tiles span{position:absolute;left:16px;bottom:16px;background:var(--bg);padding:10px 16px;font-weight:700;font-size:19px}
.tiles a:hover span{text-decoration:underline;text-underline-offset:3px}

.join{background:var(--accent);color:var(--accent-ink)}
.join .wrap{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;align-items:center}
.join h2{font-size:clamp(32px,3.6vw,48px);margin-bottom:12px}
.join p{margin:0}
.join .btn{background:var(--bg);color:var(--ink);border-color:var(--bg)}
.facts{display:grid;gap:10px;font-size:18px}
.facts div{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid rgba(255,255,255,.35);padding-bottom:10px}

.letter .wrap{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center}
.letter h2{font-size:clamp(28px,3vw,40px);margin-bottom:8px}
.letter p{margin:0;color:var(--ink-2)}
.letter form{display:flex;gap:10px;flex-wrap:wrap}
.letter input{flex:1 1 240px;min-height:54px;font:inherit;padding:0 16px;border:2px solid var(--ink);background:#FFFFFF;color:var(--ink)}
.letter button{min-height:54px;padding:0 26px;font:inherit;font-weight:700;background:var(--ink);color:var(--bg);border:0;cursor:pointer}
.letter .note{grid-column:2;font-size:15px;color:var(--muted)}
.letter .ok{grid-column:2;font-weight:700;color:#2F6B4F}

.page .wrap{max-width:820px}
.page{padding-block:clamp(40px,6vw,80px)}
.page h1{font-size:clamp(36px,4.4vw,54px);margin:14px 0 8px}
.page h2{font-size:28px;margin:40px 0 10px}
.page p{margin:0 0 12px;color:var(--ink-2)}
.page .back{font-weight:700}
.page .updated{color:var(--muted);font-size:16px}
mark.tbc{background:var(--tint);color:var(--tint-ink);padding:0 5px;font-weight:700}

footer{background:var(--dark);color:var(--on-dark-2);padding-block:56px 28px;font-size:17px}
footer .cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px}
footer b{color:var(--on-dark);display:block;margin-bottom:6px}
footer .brand{font-family:var(--display);font-size:24px;color:var(--on-dark);margin-bottom:6px}
footer a{color:var(--on-dark)}
footer .legal{border-top:1px solid #3A3631;margin-top:36px;padding-top:20px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:15px}

@media (max-width:1180px){
  nav.main{display:none}
  .menu{display:block}
  .actions{grid-template-columns:repeat(2,minmax(0,1fr))}
  .news{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  body{font-size:18px}
  .logo small{display:none}
  .hero .card{position:relative;left:auto;bottom:auto;max-width:none;margin:-40px 16px 0}
  .hero img{height:300px}
  .actions{margin-top:20px}
  .actions a{min-height:112px;font-size:19px}
  .salon .wrap,.join .wrap,.letter .wrap{grid-template-columns:1fr}
  .letter .note,.letter .ok{grid-column:auto}
  .do div{grid-template-columns:1fr;gap:8px}
  .do a{justify-self:start}
  .tiles{grid-template-columns:1fr}
  footer .cols{grid-template-columns:1fr 1fr}
}
@media (max-width:480px){.news,footer .cols{grid-template-columns:1fr}.actions a{min-height:100px;padding:18px;font-size:17px}.logo b{font-size:17px}.logo-mark{width:40px;height:40px;font-size:22px}.hero{background:var(--bg)}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* Pages intérieures */
nav.main a[aria-current="page"]{color:var(--accent);border-bottom:2px solid var(--accent)}
.page-head{background:var(--paper);padding-block:clamp(36px,5vw,64px)}
.crumb{margin:0 0 14px;font-size:16px;color:var(--muted)}
.crumb a{color:var(--muted)}
.page-head h1{font-size:clamp(36px,4.6vw,60px);margin-bottom:12px}
.lead{margin:0;max-width:40em;font-size:21px;color:var(--ink-2)}
.prose{padding-block:clamp(40px,5vw,72px)}
.narrow{max-width:820px}
.prose h2{font-size:clamp(26px,3vw,34px);margin:44px 0 12px}
.prose .wrap > h2:first-child,.prose .narrow > h2:first-child{margin-top:0}
.prose p{margin:0 0 14px;color:var(--ink-2)}
.timeline{list-style:none;margin:0;padding:0;border-left:3px solid var(--accent)}
.timeline li{padding:6px 0 18px 22px;display:grid;gap:4px}
.timeline b{font-family:var(--display);font-size:22px;font-weight:600}
.month-nav{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:36px}
.month-nav a{border:2px solid var(--ink);padding:8px 16px;font-weight:700;text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
.month-nav a:hover{background:var(--ink);color:var(--bg)}
.post{padding-bottom:40px;margin-bottom:40px;border-bottom:1px solid var(--line)}
.post h2{margin-top:10px}
.shot{margin:0 0 18px}
.shot img{width:100%;aspect-ratio:3/2;object-fit:cover}
.shot figcaption{font-size:15px;color:var(--muted);margin-top:8px}
.verif{background:var(--tint);color:var(--tint-ink);padding:14px 18px;margin:0 0 32px;font-weight:600}
.groupe h2{font-size:clamp(26px,3vw,36px);margin:44px 0 20px}
.groupe h2 small{font-family:var(--body);font-size:18px;color:var(--muted);font-weight:400}
.contests{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px}
.contest{border:1px solid var(--line);background:var(--bg);padding:20px 22px 24px;display:flex;flex-direction:column;gap:10px}
.contest[hidden]{display:none}
.contest h3{font-size:22px;line-height:1.2;margin:0}
.contest .tag{flex-wrap:wrap}
.contest .tag span:first-child{background:var(--paper);color:var(--ink-2)}
.contest .reserve{color:var(--accent);font-weight:700}
.contest .dates{margin:0;font-weight:700;color:var(--ink)}
.contest dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:17px}
.contest dt{color:var(--muted)}
.contest dd{margin:0;overflow-wrap:anywhere}
.contest .note{font-size:16px;color:var(--muted);margin:0}
.contest .btn{margin-top:auto;align-self:flex-start;min-height:46px;font-size:17px}
.worldlist{list-style:none;margin:0;padding:0}
.worldlist li{padding:24px 0;border-bottom:1px solid var(--line)}
.worldlist h3{font-size:24px;margin:6px 0 8px}
.worldlist h3 a{color:var(--ink)}
.worldlist .src{font-size:15px;color:var(--muted);margin:0}
header.site nav.main{flex-wrap:wrap;gap:6px 20px;justify-content:center}

/* Résultats */
.viewswitch{display:flex;gap:0;margin-bottom:24px}
.viewswitch button{font:inherit;font-weight:700;min-height:48px;padding:0 24px;background:var(--bg);color:var(--ink);border:2px solid var(--ink);cursor:pointer}
.viewswitch button + button{border-left:0}
.viewswitch button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.year h2{margin:40px 0 14px}
.year h2 small{font-family:var(--body);font-size:18px;color:var(--muted);font-weight:400}
details.comp{border:1px solid var(--line);margin-bottom:10px;background:var(--bg)}
details.comp summary{cursor:pointer;display:grid;grid-template-columns:170px 1fr auto;gap:16px;align-items:baseline;padding:14px 18px;font-weight:600;list-style:none}
details.comp summary::-webkit-details-marker{display:none}
details.comp summary::before{content:"+";font-weight:700;color:var(--accent);position:absolute;margin-left:-14px}
details.comp[open] summary::before{content:"\2212"}
details.comp summary .d{color:var(--muted);font-weight:400}
details.comp summary .n{color:var(--muted);font-weight:400;font-size:16px;white-space:nowrap}
#v-photographe details.comp summary{grid-template-columns:1fr auto}
.tablewrap{overflow-x:auto;padding:0 18px 8px}
.tablewrap table{border-collapse:collapse;width:100%;font-size:17px}
.tablewrap th,.tablewrap td{text-align:left;padding:8px 12px 8px 0;border-bottom:1px solid var(--line);vertical-align:top}
.tablewrap th{font-size:15px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.classement-lien{padding:6px 18px 16px;margin:0}
.note-small{font-size:16px;color:var(--muted)}
@media (max-width:760px){details.comp summary{grid-template-columns:1fr;gap:2px}}

/* Journal */
.edito{font-family:var(--display);font-size:clamp(21px,2.4vw,26px);line-height:1.35;color:var(--ink);margin-bottom:28px}
.jrub{margin-top:48px}
.jrub > h2{border-bottom:2px solid var(--ink);padding-bottom:8px;margin:0 0 8px}
.jitem{padding:22px 0;border-bottom:1px solid var(--line)}
.jitem h3{font-size:24px;margin:0 0 8px}
.jtxt ol{margin:0 0 12px;padding-left:1.3em;color:var(--ink-2)}
.jtxt li{margin-bottom:8px}
.src{font-size:16px;color:var(--muted)!important;margin:0}
.photographe h3{font-size:30px;margin:18px 0 6px}
.lead2{font-size:20px;color:var(--ink)!important}
.archive{list-style:none;margin:0;padding:0}
.archive li{padding:10px 0;border-bottom:1px solid var(--line)}
.amp{font-family:var(--body)}

/* Journal : mise en page de presse */
.paper{background:var(--bg)}
.mast{padding-top:20px}
.mast-top{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:15px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-top:4px solid var(--ink);border-bottom:1px solid var(--ink);padding:8px 0}
.mast h1{font-size:clamp(46px,9vw,112px);text-align:center;margin:18px 0 6px;line-height:1;letter-spacing:-.01em;font-weight:600}
.mast-sub{text-align:center;color:var(--muted);margin:0 0 14px;font-size:17px}
.mast-nav{display:flex;justify-content:center;flex-wrap:wrap;gap:4px 28px;border-top:1px solid var(--ink);border-bottom:4px double var(--ink);padding:10px 0}
.mast-nav a{font-weight:700;text-decoration:none;text-transform:uppercase;letter-spacing:.07em;font-size:15px;padding:6px 0}
.mast-nav a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:4px}
.front{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:0;margin-top:32px}
.front-main{padding-right:36px;border-right:1px solid var(--ink)}
.front-side{padding-left:32px}
.kicker{margin:0 0 10px;font-size:14px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.une h2{font-size:clamp(34px,4.6vw,58px);line-height:1.04;margin:0 0 16px;font-weight:600}
.chapeau{font-family:var(--display);font-size:clamp(20px,2vw,24px);line-height:1.4;color:var(--ink-2)!important;margin:0 0 18px!important}
.une .jtxt p{font-size:20px;color:var(--ink)}
.une .jtxt p:first-child::first-letter{font-family:var(--display);float:left;font-size:4.2em;line-height:.8;padding:6px 10px 0 0;color:var(--accent);font-weight:600}
.rub{font-family:var(--body);font-size:15px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;border-top:3px solid var(--ink);border-bottom:1px solid var(--ink);padding:6px 0;margin:0 0 16px}
.front-side .rub{margin-top:0}
.front-side .rub + ul + .rub{margin-top:30px}
.sommaire,.brief{list-style:none;margin:0 0 6px;padding:0}
.sommaire li{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px dotted var(--ink);padding:9px 0}
.sommaire a,.brief a{font-weight:700;text-decoration:none;color:var(--ink)}
.sommaire a:hover,.brief a:hover{color:var(--accent);text-decoration:underline}
.sommaire span{font-family:var(--display);color:var(--muted)}
.brief li{padding:10px 0;border-bottom:1px solid var(--line);font-family:var(--display);font-size:18px;line-height:1.3}
.cols3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:40px}
.cols3 > .col{padding:0 26px;border-left:1px solid var(--ink)}
.cols3 > .col:first-child{padding-left:0;border-left:0}
.cols3 > .col:last-child{padding-right:0}
.col{margin-bottom:0}
.story{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--line)}
.story:last-child{border-bottom:0}
.story h3{font-size:24px;line-height:1.15;margin:0 0 8px}
.story .jtxt p{font-size:17px;line-height:1.55;color:var(--ink-2);margin:0 0 8px}
.story .jtxt ol{font-size:17px}
.wide{margin-top:24px;border-top:0}
.cols3b{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.cols3b .story{padding:0 26px;margin:0;border-bottom:0;border-left:1px solid var(--ink)}
.cols3b .story:first-child{padding-left:0;border-left:0}
.portrait{margin-top:48px;padding:28px 0;border-top:4px double var(--ink);border-bottom:4px double var(--ink)}
.portrait h2{font-size:clamp(34px,4.4vw,54px);margin:0 0 10px;line-height:1.05}
.portrait-text{columns:2;column-gap:40px;column-rule:1px solid var(--ink);margin:18px 0}
.portrait-text p{font-size:19px;margin:0 0 12px;break-inside:avoid;color:var(--ink)}
.portrait-text p:first-child::first-letter{font-family:var(--display);float:left;font-size:3.8em;line-height:.8;padding:6px 10px 0 0;color:var(--accent);font-weight:600}
.appel{font-weight:600;margin:12px 0 0}
.colophon{font-size:15px;color:var(--muted);margin:24px 0 0;border-top:1px solid var(--ink);padding-top:12px}
.archives{padding-bottom:56px;margin-top:28px}
.archives ul{list-style:none;margin:0;padding:0}
.archives li{padding:9px 0;border-bottom:1px dotted var(--ink)}
.archives a{font-weight:700}
.archives span{font-weight:400;color:var(--muted)}
.paper .src{font-size:15px}
@media (max-width:900px){
  .front{grid-template-columns:1fr}
  .front-main{padding-right:0;border-right:0;padding-bottom:28px}
  .front-side{padding-left:0;border-top:1px solid var(--ink);padding-top:24px}
  .cols3,.cols3b{grid-template-columns:1fr}
  .cols3 > .col,.cols3b .story{padding:0;border-left:0}
  .cols3 > .col{margin-bottom:28px}
  .cols3b .story{padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--line)}
  .portrait-text{columns:1}
  .mast-top{justify-content:center;text-align:center}
}

/* Miniatures des résultats */
td.ph{width:148px;padding-right:16px}
.thumb{display:block;line-height:0;border:1px solid var(--line);background:var(--paper)}
.thumb img{width:132px;height:88px;object-fit:cover}
.thumb:focus-visible{outline:3px solid var(--accent)}
#lightbox{border:0;padding:0;max-width:min(94vw,1200px);background:var(--dark);color:var(--on-dark)}
#lightbox::backdrop{background:rgba(20,18,15,.82)}
#lightbox figure{margin:0}
#lightbox img{display:block;max-width:100%;max-height:82vh;margin:0 auto;background:var(--dark)}
#lightbox figcaption{padding:12px 18px;font-size:17px}
.lb-close{position:absolute;right:10px;top:10px;font:inherit;font-weight:700;padding:8px 16px;background:var(--bg);color:var(--ink);border:2px solid var(--bg);cursor:pointer;min-height:44px}

/* Illustrations du journal */
.jfig{margin:0 0 14px}
.jfig img{width:100%;aspect-ratio:3/2;object-fit:cover;display:block;background:var(--paper)}
.jfig figcaption{font-size:14px;color:var(--muted);margin-top:6px;line-height:1.35}
.jfig.big img{aspect-ratio:16/9}
.une .jfig.big{margin:0 0 20px}

/* Classement des photographes */
.month-nav.rank a{gap:8px}
.month-nav.rank .rk{font-family:var(--display);font-size:20px;color:var(--accent);min-width:1.4em}
.month-nav.rank .pts{font-weight:400;color:var(--muted);font-size:15px}
.month-nav.rank a:hover .pts,.month-nav.rank a:hover .rk{color:inherit}
details.comp{scroll-margin-top:100px}

/* Accueil : six accès directs */
@media (min-width:1081px){.actions{grid-template-columns:repeat(3,minmax(0,1fr))}}
.actions a{min-height:112px}

/* Menu façon Apple : fin, centré, tout visible, sans bouton Menu */
header.site .wrap{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px 24px;min-height:56px}
header.site .logo{gap:10px}
header.site .logo-mark{width:34px;height:34px;font-size:20px}
header.site .logo b{font-size:18px}
header.site .logo small{display:none}
header.site nav.main{display:flex!important;justify-content:center;align-items:center;flex-wrap:nowrap;gap:2px 26px;font-size:16px;font-weight:600}
nav.main a{padding:16px 0;border-bottom:2px solid transparent;white-space:nowrap}
nav.main a:hover{border-bottom-color:var(--accent);color:var(--ink)}
nav.main a[aria-current="page"]{border-bottom-color:var(--accent);color:var(--accent)}
.menu{display:none!important}
.tools{justify-self:end}
.langs button{width:40px;height:36px}
@media (max-width:1180px){
  header.site .wrap{grid-template-columns:1fr auto;grid-template-areas:"logo tools" "nav nav";gap:0 16px;min-height:0;padding-top:6px}
  header.site .logo{grid-area:logo}
  header.site .tools{grid-area:tools}
  header.site nav.main{grid-area:nav;flex-wrap:wrap;justify-content:center;gap:0 20px;margin-inline:-16px;padding-inline:16px;border-top:1px solid var(--line);margin-top:6px;font-size:15px}
  header.site nav.main a{padding:9px 0}
}
section,.page,details.comp{scroll-margin-top:110px}

/* Salon */
.edbody{padding:0 18px 20px}
.edbody h4{font-family:var(--display);font-size:24px;margin:26px 0 10px}
table.eds th[scope=row]{white-space:nowrap}
.wins{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px}
.win{margin:0;font-size:15px;line-height:1.35}
.win img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:var(--paper);margin-bottom:6px}
.win figcaption{color:var(--ink-2)}
.boards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.boards img{width:100%;height:auto;display:block;border:1px solid var(--line)}
.zoom{display:block;cursor:zoom-in}
.ambiance{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}
.ambiance .shot{margin:0}

/* Nous rejoindre */
.keyfacts{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 32px;border-top:3px solid var(--ink)}
.keyfacts div{padding:16px 0;border-bottom:1px solid var(--line)}
.keyfacts dt{font-size:15px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:4px}
.keyfacts dd{margin:0;font-family:var(--display);font-size:22px;line-height:1.3}
.mapl{margin:14px 0 0}
details.faq{border-bottom:1px solid var(--line)}
details.faq summary{cursor:pointer;font-weight:700;font-size:19px;padding:16px 28px 16px 0;list-style:none;position:relative}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary::after{content:"+";position:absolute;right:4px;top:12px;font-size:26px;color:var(--accent);font-weight:400}
details.faq[open] summary::after{content:"\2212"}
details.faq .faqa{padding:0 0 18px;color:var(--ink-2)}

/* Propositions de page d'accueil */
.proposal{background:var(--ink);color:var(--on-dark);font-size:15px;padding:8px 16px;display:flex;gap:14px;align-items:center;flex-wrap:wrap;justify-content:center}
.proposal a{color:var(--on-dark);font-weight:700;border:1px solid var(--on-dark-2);padding:2px 12px;text-decoration:none}
.proposal a[aria-current]{background:var(--on-dark);color:var(--ink)}
.proposal .pnote{opacity:.7}
.cta{display:flex;gap:12px;flex-wrap:wrap;margin:6px 0 0!important}
.practical{background:var(--dark);color:var(--on-dark)}
.practical .wrap{display:flex;gap:10px 40px;flex-wrap:wrap;justify-content:center;padding-block:16px}
.practical p{margin:0;font-size:18px}
.practical b{font-family:var(--display);font-size:20px;font-weight:600}
.hero .card .cta .btn:not(.primary){background:var(--bg)}
/* B : mosaïque */
.b-top{background:var(--bg);padding-block:clamp(32px,5vw,64px) 24px}
.b-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:clamp(24px,4vw,56px);align-items:center}
.b-text h1{font-size:clamp(34px,4.4vw,58px);margin:12px 0 16px}
.b-text p{color:var(--ink-2)}
.mosaic{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,200px));gap:8px}
.mosaic img{width:100%;height:100%;object-fit:cover;background:var(--paper)}
.mosaic .m1{grid-column:1/3;grid-row:1/3}
.b-credit{font-size:14px;color:var(--muted);margin:10px auto 0}
/* C : écran partagé */
.c-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:min(78vh,640px);background:var(--paper)}
.c-text{padding:clamp(28px,5vw,72px);display:flex;flex-direction:column;justify-content:center;gap:6px}
.c-text h1{font-size:clamp(34px,4.2vw,56px);margin:10px 0 14px}
.c-text p{color:var(--ink-2)}
.c-facts{display:flex;gap:32px;margin:26px 0 0;padding-top:18px;border-top:1px solid var(--ink)}
.c-facts dt{font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.c-facts dd{margin:0;font-family:var(--display);font-size:22px}
.c-photo{margin:0;position:relative;min-height:320px}
.c-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.c-photo figcaption{position:absolute;right:12px;bottom:12px;background:var(--dark);color:var(--on-dark);font-size:14px;padding:5px 10px}
@media (max-width:900px){.b-grid,.c-split{grid-template-columns:1fr}.mosaic{grid-template-rows:repeat(2,minmax(0,150px))}.c-photo{min-height:300px;order:-1}}

/* ---------- Mouvement (accueil) ---------- */
:root{--ease-out:cubic-bezier(0.23,1,0.32,1);--ease-in-out:cubic-bezier(0.77,0,0.175,1)}
/* retour de pression et couleurs : court, partout */
.btn,.actions a{transition:transform 160ms var(--ease-out),background-color 150ms ease,border-color 150ms ease,color 150ms ease}
.btn:active,.actions a:active{transform:scale(.97)}
/* chargement : le M respire tant que la page n'est pas prête */
@media (prefers-reduced-motion:no-preference){
  #loader .logo-mark{animation:markBreath 1.1s var(--ease-in-out) infinite alternate}
}
@keyframes markBreath{from{opacity:.55}to{opacity:1}}

@keyframes riseIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes fadeOnly{from{opacity:0}to{opacity:1}}
@keyframes heroSettle{from{opacity:0;scale:1.07}to{opacity:.92;scale:1}}
@keyframes heroShift{to{translate:0 7%}}

/* entrée du héros : la photo se pose, puis le titre, le texte et les boutons arrivent l'un après l'autre */
@media (prefers-reduced-motion:no-preference){
  html.is-ready [data-motion] .hero img{animation:heroSettle 1500ms var(--ease-out) both}
  html.is-ready [data-motion] .hero .credit{animation:fadeOnly 600ms ease 900ms both}
  html.is-ready [data-motion] .hero .card{animation:fadeOnly 500ms ease 200ms both}
  html.is-ready [data-motion] .hero .card > *{animation:riseIn 650ms var(--ease-out) both}
  html.is-ready [data-motion] .hero .card h1{animation-delay:320ms}
  html.is-ready [data-motion] .hero .card p{animation-delay:440ms}
  html.is-ready [data-motion] .hero .card .cta{animation-delay:560ms}
  html.is-ready [data-motion] .practical p{animation:riseIn 550ms var(--ease-out) both}
  html.is-ready [data-motion] .practical p:nth-child(1){animation-delay:800ms}
  html.is-ready [data-motion] .practical p:nth-child(2){animation-delay:860ms}
  html.is-ready [data-motion] .practical p:nth-child(3){animation-delay:920ms}
  html.is-ready [data-motion] .practical p:nth-child(4){animation-delay:980ms}
}
@media (prefers-reduced-motion:reduce){
  html.is-ready [data-motion] .hero .card{animation:fadeOnly 300ms ease both}
}
/* la photo glisse un peu moins vite que la page (navigateurs récents seulement) */
@supports (animation-timeline:scroll()){
  @media (prefers-reduced-motion:no-preference) and (min-width:761px){
    [data-motion] .hero{height:clamp(420px,62vw,720px);overflow:hidden}
    [data-motion] .hero img{position:absolute;left:0;top:-7%;height:114%}
    html.is-ready [data-motion] .hero img{animation:heroSettle 1500ms var(--ease-out) both,heroShift linear both;animation-timeline:auto,scroll(root);animation-range:normal,0 80vh}
  }
}
/* apparitions au défilement : une fois, 600 ms, avec un léger décalage dans les groupes */
@media (prefers-reduced-motion:no-preference){
  .js [data-motion] .rv{opacity:0;transform:translateY(16px);transition:opacity 600ms var(--ease-out),transform 600ms var(--ease-out);transition-delay:var(--d,0ms)}
  .js [data-motion] .rv.in{opacity:1;transform:none}
  .js [data-motion] .news a,.js [data-motion] .tiles a{overflow:hidden}
  .js [data-motion] .rv img{transform:scale(1.06);transition:transform 1000ms var(--ease-out);transition-delay:var(--d,0ms)}
  .js [data-motion] .rv.in img{transform:none}
}
/* survol des vignettes : léger zoom, souris seulement. La propriété scale est indépendante du transform de l'apparition. */
@media (hover:hover) and (pointer:fine){
  .tiles a img{transition:scale 400ms var(--ease-out)}
  .tiles a:hover img{scale:1.04}
}
.practical + .wrap .actions{margin-top:28px}

/* Adhérents */
.members-grid{list-style:none;margin:24px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:28px 22px}
.member h3{font-size:21px;margin:10px 0 2px;line-height:1.2}
.mphoto{display:block;line-height:0;background:var(--paper);border:1px solid var(--line)}
.mphoto img{width:100%;aspect-ratio:3/2;object-fit:cover}
.mcap{font-size:15px;color:var(--muted)!important;margin:0 0 4px!important}
.mlink{font-size:16px;font-weight:700}

/* Adhérents : portraits carrés, avatar par défaut */
.mphoto img{aspect-ratio:1/1!important;object-position:50% 22%}
.members-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}
/* Citation de l'accueil */
.practical.quote .wrap{display:block;text-align:center;padding-block:22px}
.practical.quote blockquote{margin:0 auto;max-width:44em}
.practical.quote p{font-family:var(--display);font-size:clamp(20px,2.4vw,26px);line-height:1.35;font-weight:400;font-style:italic}
.practical.quote footer{margin-top:8px;font-size:16px;color:var(--on-dark-2);letter-spacing:.04em}
.practical.quote footer span{opacity:.75}
.practical.quote footer{padding:0;background:none}

/* ---------- Mouvement : toutes les pages ---------- */
/* chargement : n'apparaît que si la page tarde (plus de 0,4 s), plus de clignotement entre les pages */
.js #loader{opacity:0;animation:loaderIn 250ms ease 400ms forwards}
.js #loader.done{animation:none;opacity:0}
@keyframes loaderIn{to{opacity:1}}
/* en-têtes de page */
@media (prefers-reduced-motion:no-preference){
  html.is-ready [data-motion="page"] .page-head .crumb{animation:riseIn 500ms var(--ease-out) both}
  html.is-ready [data-motion="page"] .page-head h1{animation:riseIn 600ms var(--ease-out) 90ms both}
  html.is-ready [data-motion="page"] .page-head .lead{animation:riseIn 600ms var(--ease-out) 180ms both}
  /* journal : la une se pose comme une édition qui sort de l'imprimerie */
  html.is-ready [data-motion="page"] .mast-top{animation:fadeOnly 500ms ease both}
  html.is-ready [data-motion="page"] .mast h1{animation:riseIn 750ms var(--ease-out) 80ms both}
  html.is-ready [data-motion="page"] .mast-sub{animation:riseIn 600ms var(--ease-out) 220ms both}
  html.is-ready [data-motion="page"] .mast-nav{animation:fadeOnly 600ms ease 320ms both}
  /* apparition au défilement : même vocabulaire que l'accueil */
  .js [data-motion="page"] .rv{opacity:0;transform:translateY(14px);transition:opacity 550ms var(--ease-out),transform 550ms var(--ease-out);transition-delay:var(--d,0ms)}
  .js [data-motion="page"] .rv.in{opacity:1;transform:none}
  /* fondu entre les pages (navigateurs récents) : l'en-tête reste en place */
  @view-transition{navigation:auto}
  header.site{view-transition-name:site-header}
  ::view-transition-old(root){animation:vtOut 140ms ease both}
  ::view-transition-new(root){animation:vtIn 240ms var(--ease-out) both}
}
@keyframes vtOut{to{opacity:0}}
@keyframes vtIn{from{opacity:0}}
@media (prefers-reduced-motion:reduce){
  html.is-ready [data-motion="page"] .page-head h1{animation:fadeOnly 300ms ease both}
}
/* survol : une seule micro-réaction sur les cartes qui mènent quelque part, souris seulement */
@media (hover:hover) and (pointer:fine){
  .mphoto img{transition:scale 400ms var(--ease-out)}
  .member:hover .mphoto img{scale:1.04}
  .mphoto{overflow:hidden}
  .win img,.shot img{transition:scale 400ms var(--ease-out)}
  .win a,.shot a{display:block;overflow:hidden}
  .win a:hover img,.shot a:hover img{scale:1.04}
}
/* fiche adhérent */
.profile-top{display:grid;grid-template-columns:minmax(220px,340px) 1fr;gap:clamp(24px,4vw,56px);align-items:start}
.profile-pic{line-height:0;background:var(--paper);border:1px solid var(--line)}
.profile-pic img{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:50% 25%}
.profile-text h2{margin-top:0}
.pfacts{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:0 24px;margin:22px 0;border-top:2px solid var(--ink)}
.pfacts div{padding:12px 0;border-bottom:1px solid var(--line)}
.pfacts dt{font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.pfacts dd{margin:0;font-family:var(--display);font-size:24px}
.pgallery{margin-top:18px}
.pnav{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:48px;padding-top:18px;border-top:2px solid var(--ink)}
.pnav a{text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:2px;max-width:48%}
.pnav a span{font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.pnav a b{font-family:var(--display);font-size:22px;font-weight:600}
.pnav a:hover b{text-decoration:underline;text-underline-offset:4px}
.pnav .nx{margin-left:auto;text-align:right}
.member h3 a{color:var(--ink);text-decoration:none}
.member h3 a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
@media (max-width:760px){.profile-top{grid-template-columns:1fr}.profile-pic{max-width:300px}}

.since{font-family:var(--display);font-size:22px;margin:0 0 12px!important;color:var(--ink)!important}
.since b{color:var(--accent)}

/* Logo du club à la place du M */
.logo-mark.logo-img{background:none;object-fit:contain;mix-blend-mode:multiply;display:block}
header.site .logo-img{width:50px;height:50px}
#loader .logo-img{width:76px;height:76px}
@media (max-width:480px){header.site .logo-img{width:42px;height:42px}}

/* Agrandissement : toutes les photos occupent la même zone, la plus grande possible */
#lightbox{width:min(96vw,1500px);max-width:none;max-height:97vh;overflow:hidden}
#lightbox img{width:100%;max-width:none;height:calc(100vh - 140px);max-height:none;object-fit:contain;background:var(--dark)}
#lightbox figcaption{text-align:center}

/* Visionneuse : croix seule, flèches de chaque côté */
.lb-close{width:46px;height:46px;min-height:0;padding:0;display:grid;place-items:center;z-index:2}
.lb-close svg,.lb-nav svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:54px;height:96px;display:grid;place-items:center;background:rgba(20,18,15,.55);color:#fff;border:0;cursor:pointer;z-index:2}
.lb-nav:hover{background:rgba(20,18,15,.85)}
.lb-nav[hidden]{display:none}
.lb-prev{left:0}.lb-next{right:0}
.lb-close:focus-visible,.lb-nav:focus-visible{outline:3px solid #fff;outline-offset:-4px}

/* Pastille FPF */
.dot{display:inline-block;width:12px;height:12px;border-radius:50%;background:#1F4E9A;margin-right:8px;flex:none}
.contest .tag{align-items:center}
.legend{display:flex;align-items:center;font-size:16px;color:var(--ink-2)!important;margin:0 0 8px!important}

.tag .dot{margin-right:7px;vertical-align:-1px;padding:0;background:#1F4E9A}

i.dot{display:inline-block;width:12px;height:12px;border-radius:50%;background:#1F4E9A;margin-right:7px;vertical-align:-1px;font-style:normal;padding:0}

/* Court-métrage */
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr));gap:34px 28px;margin:24px 0 36px}
.vcard h3{font-size:24px;margin:10px 0 2px}
.vauthor{font-weight:700;margin:0 0 6px!important;color:var(--ink)!important}
.vdesc{margin:0 0 8px!important}
.vlink{margin:0!important}
.vframe{aspect-ratio:16/9;background:#11100E;position:relative}
.vframe iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vplay{position:absolute;inset:0;width:100%;height:100%;border:0;background:#11100E;color:#fff;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:20px;text-align:center}
.vplay:hover .vtri{background:var(--accent-ink);}
.vtri{width:72px;height:72px;background:var(--accent);position:relative;transition:transform 200ms var(--ease-out)}
.vtri::after{content:"";position:absolute;left:28px;top:20px;border-left:24px solid #fff;border-top:16px solid transparent;border-bottom:16px solid transparent}
.vplay:hover .vtri{background:var(--accent);transform:scale(1.06)}
.vplay:active .vtri{transform:scale(.97)}
.vtitle{font-family:var(--display);font-size:22px;line-height:1.2}
.vplay:focus-visible{outline:3px solid #fff;outline-offset:-6px}

.vframe video{position:absolute;inset:0;width:100%;height:100%;background:#11100E;object-fit:contain}

/* Vignettes des vidéos */
.vplay img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vplay::before{content:"";position:absolute;inset:0;background:rgba(17,16,14,.28);transition:background 200ms ease}
.vplay:hover::before{background:rgba(17,16,14,.1)}
.vplay .vtri{position:relative;z-index:1}

.maplink{color:inherit;text-decoration:underline;text-underline-offset:3px}
.maplink:hover{color:var(--accent)}
footer .maplink:hover{color:#fff;text-decoration-thickness:2px}
.sr-only:empty{display:none}

.cfilter{margin:8px 0 18px;flex-wrap:wrap}
.cfilter button{display:inline-flex;align-items:center;gap:8px}
.contest.is-filtered{display:none}
.cnote{margin:0 0 8px;padding:14px 18px;background:var(--paper,#fff);border-left:4px solid #1F5FBF;font-size:18px}

.contest .reserve.open{color:#2F6B4F}

.prose h3{font-size:22px;margin:6px 0 8px}.prose h4{font-size:16px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:14px 0 6px}
.prose .post ul{margin:0 0 10px;padding-left:22px}.prose .post li{margin:0 0 6px;font-size:19px}
.todo{list-style:none;margin:0;padding:0;border-top:3px solid var(--ink)}.todo li{padding:14px 0;border-bottom:1px solid var(--line);font-size:19px}
.todo li span{color:var(--muted);font-size:17px}.todo li.fait{opacity:.55}.todo li.fait b{text-decoration:line-through}
