/* Raccords : quatre contours pixel et angles de parois reliés. */
:root{--ribbon-time:50s;--ribbon-pace:48;--ribbon-cell:180px;--ribbon-gap:24px;--ribbon-ground:#fff;--chapter-space:clamp(95px,11vw,190px);--recess-depth:clamp(4px,.45vw,7px);--recess-shade:#151719;--recess-return-tone:#1c1e20;--interface-ground:#211f2b;--field-quiet:#344520}
.opening{position:relative;padding-top:10px;padding-bottom:65px}.opening-stage{position:relative;aspect-ratio:32/20;isolation:isolate}.opening-frames,.opening-slide{position:absolute;inset:0}.opening-frames{mask-image:url("../shapes/opening-desktop.efac20a51742.svg");mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-image:url("../shapes/opening-desktop.efac20a51742.svg");-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat}.opening-slide>img{width:100%;height:100%;object-fit:cover;object-position:center}.opening-slide.is-revealing{animation:window-reveal 480ms steps(4,end)}.opening-title{position:absolute;top:3%;left:0;width:46%;font:400 clamp(60px,7.2vw,130px)/1.03 var(--display);letter-spacing:-.035em;z-index:2}.opening-title>span{display:block}.opening-title>span+span{font:400 clamp(56px,6.6vw,120px)/1.14 var(--accent);letter-spacing:-.035em;margin-top:6px}.opening-intro{display:contents}.opening-intro>p{position:absolute;right:var(--gutter);bottom:145px;width:23%;max-width:345px;font-size:clamp(13px,1.1vw,18px);line-height:1.5}.opening-intro>.text-link{position:absolute;left:var(--gutter);top:clamp(175px,20vw,360px);color:var(--green);font-size:15px;gap:18px}.opening-bar{display:flex;justify-content:space-between;gap:25px;align-items:center;min-height:68px}.opening-credits a{display:flex;align-items:center;gap:20px;min-height:44px;font-size:15px}.opening-credits .arrow{width:18px;height:18px}.opening-controls{display:flex;align-items:center;gap:18px}.opening-choices{display:flex}.opening-choices button{border:0;background:none;display:grid;place-items:center;width:44px;height:44px;color:var(--quiet)}.opening-choices button>span{width:10px;height:10px;background:currentColor}.opening-choices button[aria-pressed=true]{color:var(--green)}.opening-play,.opening-next{border:0;background:none;min-height:44px;color:var(--shell);font-size:12px}.opening-play{padding:8px 0;min-width:106px}.opening-next{width:44px;display:grid;place-items:center}.opening-next .arrow{width:22px;height:22px}.opening-type .opening-stage{min-height:350px;aspect-ratio:auto}.opening-type .opening-intro{display:block}.opening-type .opening-intro p,.opening-type .opening-intro>.text-link{position:static;width:auto;max-width:600px;margin-top:25px}
.logo-ribbon{padding-block:60px 40px;background:var(--ribbon-ground);color:var(--ink);margin-bottom:var(--chapter-space)}.ribbon-intro{display:flex;justify-content:space-between;gap:35px;align-items:end}.ribbon-intro h2{font:400 clamp(32px,4vw,65px)/1.1 var(--accent);letter-spacing:-.025em}.ribbon-intro p{font-size:15px;line-height:1.5;max-width:550px;margin-top:23px}.ticker-toggle{font-size:13px;min-height:44px;padding:10px 0;background:transparent;border:0;color:var(--ink);text-decoration:underline;flex-shrink:0}.ticker-toggle:focus-visible{outline-color:var(--ink)}.ticker-window{overflow:hidden;padding-top:20px}.logo-group{list-style:none;padding:0 var(--gutter);margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:20px}.logo-group>li{min-width:0;display:flex;align-items:center;justify-content:center;height:190px}.logo-group img{width:100%;height:170px;object-fit:contain}.ticker-copy{display:none}.ticker-enabled .ticker-track{display:flex;width:max-content;animation:logo-flow var(--ribbon-time) linear infinite;animation-play-state:paused}.ticker-enabled .logo-group{display:flex;gap:var(--ribbon-gap);padding:0 var(--ribbon-gap) 0 0;flex-shrink:0}.ticker-enabled .logo-group>li{width:var(--ribbon-cell);flex-shrink:0}.ticker-enabled .ticker-copy{display:flex}.ticker-running .ticker-track{animation-play-state:running}.ticker-reduced .ticker-track{display:block;width:auto;animation:none;transform:none}.ticker-reduced .logo-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));padding-inline:var(--gutter);gap:20px;width:100%}.ticker-reduced .logo-group>li{width:auto}.ticker-reduced .ticker-copy{display:none}@keyframes logo-flow{to{transform:translateX(var(--ribbon-shift,-50%))}}
.chapter{padding-bottom:var(--chapter-space)}.chapter-intro{display:grid;grid-template-columns:1.3fr 1fr;gap:12%;align-items:end;padding-bottom:60px}.chapter-intro h2{font:400 clamp(50px,6.2vw,104px)/1.02 var(--display);letter-spacing:-.035em;max-width:850px}.chapter-intro>p{font-size:clamp(17px,1.5vw,23px);line-height:1.55;max-width:470px;justify-self:end}.chapter-artworks{display:grid;gap:60px 5%}.medium-project{min-width:0}.medium-project>a{display:block}.medium-view{position:relative;overflow:hidden}.medium-view>img,.recess-back>img{display:block;width:100%;height:auto}.medium-caption{display:grid;grid-template-columns:1fr 24px;gap:8px 20px;padding-top:22px}.medium-caption h3{font:400 clamp(22px,2.1vw,32px)/1.2 var(--body);letter-spacing:-.025em}.medium-caption p{grid-column:1;font-size:13px;line-height:1.5;color:var(--quiet)}.medium-caption>.arrow{grid-column:2;grid-row:1/3;align-self:center}
/* Les identités occupent deux ouvertures qui partagent une même composition. */
.chapter-identity .chapter-artworks{grid-template-columns:1.4fr 1fr;align-items:end}.chapter-identity .medium-project:first-child .medium-view{aspect-ratio:1}.chapter-identity .medium-project:nth-child(2){padding-bottom:90px}.chapter-identity .medium-project:nth-child(2) .medium-view{aspect-ratio:1.35}.chapter-identity .recess-back{height:100%}.chapter-identity .recess-back>img{height:100%;object-fit:cover}
/* Un ruban d’écrans, large et tactile, remplace la succession verticale. */
.chapter-interface{--recess-shade:#1e1d28;--recess-return-tone:#25232f;background:var(--interface-ground);padding-top:85px;margin-bottom:var(--chapter-space)}.chapter-interface .chapter-intro h2{font-family:var(--accent)}.interface-track{display:flex;gap:36px;overflow-x:auto;padding:0 var(--gutter) 24px;scroll-snap-type:x proximity;scroll-padding-inline:var(--gutter);scrollbar-color:var(--green) var(--interface-ground);scrollbar-width:thin}.interface-track:focus-visible{outline-offset:-3px}.interface-track .medium-project{width:min(78vw,1120px);flex-shrink:0;scroll-snap-align:start}.interface-track .medium-view{aspect-ratio:16/10}.interface-track .recess-back{height:100%}.interface-track img{width:100%;height:100%;object-fit:cover;object-position:top}.gallery-controls{display:flex;justify-content:end;gap:8px;padding-bottom:22px}.gallery-controls button{display:grid;place-items:center;width:48px;height:48px;border:1px solid var(--quiet);background:transparent;color:var(--shell)}.gallery-controls svg{width:22px;height:22px}
/* Un grand tirage dialogue avec deux formats superposés. */
.chapter-graphic .chapter-intro h2{color:var(--coral)}.chapter-graphic .chapter-artworks{grid-template-columns:1.4fr 1fr;gap:50px 7%;align-items:center}.chapter-graphic .medium-project:first-child{grid-row:1/3}.chapter-graphic .medium-project:nth-child(2){transform:rotate(2deg)}.chapter-graphic .medium-project:nth-child(3){transform:rotate(-2deg)}
/* Un répertoire de personnages : les noms ouvrent les planches. */
.chapter-mascot{display:grid;grid-template-columns:1fr 2fr;gap:7%;padding:85px var(--gutter);background:var(--green);color:var(--ink);margin-bottom:var(--chapter-space)}.chapter-mascot .chapter-intro{display:block;padding:0;width:auto}.chapter-mascot h2{font-family:var(--accent);font-size:clamp(40px,4vw,70px)}.chapter-mascot .chapter-intro p{font-size:18px;line-height:1.55;margin-top:30px;max-width:25ch}.cast-repertoire{width:100%;padding:0;min-width:0}.cast-entry{border-top:1px solid var(--ink)}.cast-entry summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:22px;padding-block:24px;font:400 clamp(30px,3.8vw,60px)/1.1 var(--body);letter-spacing:-.03em}.cast-entry summary::-webkit-details-marker{display:none}.cast-entry summary svg{width:28px;height:28px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.5}.cast-entry[open] summary svg{transform:rotate(45deg)}.cast-panel{padding:0 0 35px}.cast-link{display:flex;align-items:center;justify-content:space-between;gap:18px;font-size:14px;min-height:52px}.cast-link svg{width:20px;height:20px}.chapter-mascot :focus-visible{outline-color:var(--ink)}
/* Raccords pixel : generated by scripts/build_recess_geometry.py. */
.recess{--cut-0:calc(100% - 2*var(--pixel));--cut-1:var(--pixel);--cut-2:calc(100% - var(--pixel));--cut-3:calc(2*var(--pixel));--cut-4:var(--recess-depth);--cut-5:calc(100% - 2*var(--pixel) - var(--recess-depth));--cut-6:calc(var(--pixel) + var(--recess-depth));--cut-7:calc(100% - var(--pixel) - var(--recess-depth));--cut-8:calc(2*var(--pixel) + var(--recess-depth));--cut-9:calc(100% - var(--recess-depth));--cut-10:62%;--cut-11:50%;--cut-12:calc(62% + var(--recess-depth));--cut-13:calc(50% - var(--recess-depth));--cut-14:32%;--cut-15:44%;--cut-16:calc(32% - var(--recess-depth));--cut-17:calc(44% + var(--recess-depth));}
.recess-cut-1{--recess-outline:polygon(0 0,var(--cut-0) 0,var(--cut-0) var(--cut-1),var(--cut-2) var(--cut-1),var(--cut-2) var(--cut-3),100% var(--cut-3),100% 100%,var(--cut-3) 100%,var(--cut-3) var(--cut-2),var(--cut-1) var(--cut-2),var(--cut-1) var(--cut-0),0 var(--cut-0));--recess-opening:polygon(var(--cut-4) var(--cut-4),var(--cut-5) var(--cut-4),var(--cut-5) var(--cut-6),var(--cut-7) var(--cut-6),var(--cut-7) var(--cut-8),var(--cut-9) var(--cut-8),var(--cut-9) var(--cut-9),var(--cut-8) var(--cut-9),var(--cut-8) var(--cut-7),var(--cut-6) var(--cut-7),var(--cut-6) var(--cut-5),var(--cut-4) var(--cut-5));--recess-return:polygon(var(--cut-0) 0,var(--cut-0) var(--cut-1),var(--cut-5) var(--cut-6),var(--cut-5) var(--cut-4),var(--cut-0) 0,var(--cut-0) 0,var(--cut-2) var(--cut-1),var(--cut-2) var(--cut-3),var(--cut-7) var(--cut-8),var(--cut-7) var(--cut-6),var(--cut-2) var(--cut-1),var(--cut-0) 0,100% var(--cut-3),100% 100%,var(--cut-9) var(--cut-9),var(--cut-9) var(--cut-8),100% var(--cut-3),var(--cut-0) 0,100% 100%,var(--cut-3) 100%,var(--cut-8) var(--cut-9),var(--cut-9) var(--cut-9),100% 100%,var(--cut-0) 0,var(--cut-3) var(--cut-2),var(--cut-1) var(--cut-2),var(--cut-6) var(--cut-7),var(--cut-8) var(--cut-7),var(--cut-3) var(--cut-2),var(--cut-0) 0,var(--cut-1) var(--cut-0),0 var(--cut-0),var(--cut-4) var(--cut-5),var(--cut-6) var(--cut-5),var(--cut-1) var(--cut-0),var(--cut-0) 0)}
.recess-cut-2{--recess-outline:polygon(0 var(--cut-3),var(--cut-1) var(--cut-3),var(--cut-1) var(--cut-1),var(--cut-3) var(--cut-1),var(--cut-3) 0,100% 0,100% var(--cut-0),var(--cut-2) var(--cut-0),var(--cut-2) var(--cut-2),var(--cut-0) var(--cut-2),var(--cut-0) 100%,0 100%);--recess-opening:polygon(var(--cut-4) var(--cut-8),var(--cut-6) var(--cut-8),var(--cut-6) var(--cut-6),var(--cut-8) var(--cut-6),var(--cut-8) var(--cut-4),var(--cut-9) var(--cut-4),var(--cut-9) var(--cut-5),var(--cut-7) var(--cut-5),var(--cut-7) var(--cut-7),var(--cut-5) var(--cut-7),var(--cut-5) var(--cut-9),var(--cut-4) var(--cut-9));--recess-return:polygon(100% 0,100% var(--cut-0),var(--cut-9) var(--cut-5),var(--cut-9) var(--cut-4),100% 0,100% 0,100% var(--cut-0),var(--cut-2) var(--cut-0),var(--cut-7) var(--cut-5),var(--cut-9) var(--cut-5),100% var(--cut-0),100% 0,var(--cut-2) var(--cut-0),var(--cut-2) var(--cut-2),var(--cut-7) var(--cut-7),var(--cut-7) var(--cut-5),var(--cut-2) var(--cut-0),100% 0,var(--cut-2) var(--cut-2),var(--cut-0) var(--cut-2),var(--cut-5) var(--cut-7),var(--cut-7) var(--cut-7),var(--cut-2) var(--cut-2),100% 0,var(--cut-0) var(--cut-2),var(--cut-0) 100%,var(--cut-5) var(--cut-9),var(--cut-5) var(--cut-7),var(--cut-0) var(--cut-2),100% 0,var(--cut-0) 100%,0 100%,var(--cut-4) var(--cut-9),var(--cut-5) var(--cut-9),var(--cut-0) 100%,100% 0)}
.recess-cut-3{--recess-outline:polygon(0 0,var(--cut-2) 0,var(--cut-2) var(--cut-1),100% var(--cut-1),100% 100%,var(--cut-10) 100%,var(--cut-10) var(--cut-2),var(--cut-11) var(--cut-2),var(--cut-11) 100%,var(--cut-1) 100%,var(--cut-1) var(--cut-2),0 var(--cut-2));--recess-opening:polygon(var(--cut-4) var(--cut-4),var(--cut-7) var(--cut-4),var(--cut-7) var(--cut-6),var(--cut-9) var(--cut-6),var(--cut-9) var(--cut-9),var(--cut-12) var(--cut-9),var(--cut-12) var(--cut-7),var(--cut-13) var(--cut-7),var(--cut-13) var(--cut-9),var(--cut-6) var(--cut-9),var(--cut-6) var(--cut-7),var(--cut-4) var(--cut-7));--recess-return:polygon(var(--cut-2) 0,var(--cut-2) var(--cut-1),var(--cut-7) var(--cut-6),var(--cut-7) var(--cut-4),var(--cut-2) 0,var(--cut-2) 0,100% var(--cut-1),100% 100%,var(--cut-9) var(--cut-9),var(--cut-9) var(--cut-6),100% var(--cut-1),var(--cut-2) 0,100% 100%,var(--cut-10) 100%,var(--cut-12) var(--cut-9),var(--cut-9) var(--cut-9),100% 100%,var(--cut-2) 0,var(--cut-10) var(--cut-2),var(--cut-11) var(--cut-2),var(--cut-13) var(--cut-7),var(--cut-12) var(--cut-7),var(--cut-10) var(--cut-2),var(--cut-2) 0,var(--cut-11) var(--cut-2),var(--cut-11) 100%,var(--cut-13) var(--cut-9),var(--cut-13) var(--cut-7),var(--cut-11) var(--cut-2),var(--cut-2) 0,var(--cut-11) 100%,var(--cut-1) 100%,var(--cut-6) var(--cut-9),var(--cut-13) var(--cut-9),var(--cut-11) 100%,var(--cut-2) 0,var(--cut-1) var(--cut-2),0 var(--cut-2),var(--cut-4) var(--cut-7),var(--cut-6) var(--cut-7),var(--cut-1) var(--cut-2),var(--cut-2) 0)}
.recess-cut-4{--recess-outline:polygon(0 0,var(--cut-14) 0,var(--cut-14) var(--cut-1),var(--cut-15) var(--cut-1),var(--cut-15) 0,100% 0,100% var(--cut-2),var(--cut-2) var(--cut-2),var(--cut-2) 100%,0 100%);--recess-opening:polygon(var(--cut-4) var(--cut-4),var(--cut-16) var(--cut-4),var(--cut-16) var(--cut-6),var(--cut-17) var(--cut-6),var(--cut-17) var(--cut-4),var(--cut-9) var(--cut-4),var(--cut-9) var(--cut-7),var(--cut-7) var(--cut-7),var(--cut-7) var(--cut-9),var(--cut-4) var(--cut-9));--recess-return:polygon(var(--cut-14) 0,var(--cut-14) var(--cut-1),var(--cut-16) var(--cut-6),var(--cut-16) var(--cut-4),var(--cut-14) 0,var(--cut-14) 0,100% 0,100% var(--cut-2),var(--cut-9) var(--cut-7),var(--cut-9) var(--cut-4),100% 0,var(--cut-14) 0,100% var(--cut-2),var(--cut-2) var(--cut-2),var(--cut-7) var(--cut-7),var(--cut-9) var(--cut-7),100% var(--cut-2),var(--cut-14) 0,var(--cut-2) var(--cut-2),var(--cut-2) 100%,var(--cut-7) var(--cut-9),var(--cut-7) var(--cut-7),var(--cut-2) var(--cut-2),var(--cut-14) 0,var(--cut-2) 100%,0 100%,var(--cut-4) var(--cut-9),var(--cut-7) var(--cut-9),var(--cut-2) 100%,var(--cut-14) 0)}
/* End of generated pixel geometry. */
/* Les parois et l’image partagent leurs sommets, sans simple translation. */
.recess,.dimension-index .project-art.recess,.case-aperture.recess{position:relative;padding:0;background:var(--recess-shade);isolation:isolate;clip-path:var(--recess-outline);overflow:hidden}
.recess::before{content:"";position:absolute;inset:0;background:var(--recess-return-tone);clip-path:var(--recess-return);pointer-events:none}
.recess-back{position:relative;z-index:1;min-width:0;overflow:hidden;background:var(--ink);clip-path:var(--recess-opening)}
.dimension-index .recess-back{width:100%;height:100%}.dimension-index .recess-back>img{width:100%;height:100%;object-fit:cover;clip-path:none}.case-aperture{width:100%}.case-aperture .recess-back>img{max-height:90svh;width:100%;object-fit:cover;clip-path:none}
.medium-chapters .editorial-breath{padding-top:5px}.medium-chapters .exhibition-end{padding-bottom:var(--chapter-space)}
@media(hover:hover) and (pointer:fine){.ticker-window:hover .ticker-track{animation-play-state:paused}.medium-project a:hover h3,.cast-panel a:hover .cast-link{text-decoration:underline}.opening-choices button:hover{color:var(--green)}.gallery-controls button:hover:not(:disabled){color:var(--green);border-color:var(--green)}}
@media(max-width:1100px){:root{--ribbon-cell:165px;--ribbon-gap:20px}.opening-intro>p{bottom:140px;font-size:13px}.opening-title{font-size:7.5vw}.opening-title>span+span{font-size:6.8vw}.chapter-intro{gap:8%;padding-bottom:45px}.chapter-identity .medium-project:nth-child(2){padding-bottom:50px}.chapter-mascot{grid-template-columns:1fr;gap:45px}.chapter-mascot .chapter-intro{display:grid;grid-template-columns:1fr 1fr;gap:8%}.chapter-mascot .chapter-intro p{margin-top:0}}
@media(max-width:760px){:root{--ribbon-cell:140px;--ribbon-gap:16px;--chapter-space:95px;--recess-depth:4px}.opening{padding-top:8px;padding-bottom:45px}.opening-stage{aspect-ratio:20/28}.opening-frames{mask-image:url("../shapes/opening-mobile.a20868aa6a24.svg");-webkit-mask-image:url("../shapes/opening-mobile.a20868aa6a24.svg")}.opening-title{top:0;width:78%;font-size:16vw;line-height:1}.opening-title>span+span{font-size:13.9vw;line-height:1.1;margin-top:4px;white-space:nowrap}.opening-bar{align-items:start;flex-wrap:wrap;gap:0;padding-top:8px}.opening-credits{width:100%}.opening-credits a{font-size:14px}.opening-controls{width:100%;justify-content:space-between;gap:8px}.opening-choices button{width:40px}.opening-play{font-size:12px;min-width:100px}.opening-next .arrow{width:22px}.opening-intro{display:block;padding-top:18px}.opening-intro>p{position:static;width:auto;max-width:36ch;font-size:16px;line-height:1.5}.opening-intro>.text-link{position:static;font-size:14px;margin-top:20px;gap:18px}.opening-type .opening-stage{min-height:160px}.ribbon-intro{display:block}.ribbon-intro h2{font-size:35px}.ribbon-intro p{font-size:14px;margin-top:20px}.ticker-toggle{margin-top:15px;font-size:13px}.logo-ribbon{padding-block:45px 30px}.ticker-window{padding-top:10px}.logo-group,.ticker-reduced .logo-group{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:16px}.logo-group>li{height:155px}.logo-group img{height:128px}.chapter-intro{display:block;padding-bottom:35px}.chapter-intro h2{font-size:clamp(40px,12vw,65px);line-height:1.05}.chapter-intro>p{font-size:17px;margin-top:25px;max-width:35ch}.chapter-identity .chapter-artworks{grid-template-columns:1fr;gap:45px}.chapter-identity .medium-project:nth-child(2){padding-bottom:0;width:86%;justify-self:end}.medium-caption{padding-top:18px;gap:8px 18px}.medium-caption h3{font-size:21px}.medium-caption p{font-size:12px}.medium-caption>.arrow{width:20px;height:20px}.chapter-interface{padding-top:50px}.interface-track{gap:22px}.interface-track .medium-project{width:100%}.interface-track .medium-view{aspect-ratio:1.3}.chapter-graphic .chapter-artworks{gap:35px;grid-template-columns:1fr 1fr}.chapter-graphic .medium-project:first-child{grid-row:auto;grid-column:1/-1}.chapter-graphic .medium-caption h3{font-size:18px}.chapter-graphic .medium-caption p{font-size:11px}.chapter-mascot{display:block;padding:55px var(--gutter)}.chapter-mascot .chapter-intro{display:block;padding-bottom:35px}.chapter-mascot h2{font-size:42px}.chapter-mascot .chapter-intro p{margin-top:25px;font-size:17px;max-width:30ch}.cast-entry summary{font-size:32px;padding-block:20px}.cast-entry summary svg{width:24px;height:24px}.case-aperture .recess-back>img{max-height:75svh}}
@media(max-width:360px){.opening-play{min-width:92px;font-size:11px}.opening-controls{gap:0}.opening-choices button{width:34px}.chapter-intro h2{font-size:40px}.opening-intro>p{font-size:15px}}
@media(prefers-reduced-motion:reduce){.opening-slide{animation:none!important}.ticker-track{animation:none!important;transform:none!important}.interface-track{scroll-behavior:auto}}
@media print{.opening-controls,.ticker-toggle,.ticker-copy,.gallery-controls{display:none!important}.ticker-track{animation:none!important;transform:none!important}.interface-track{display:block;overflow:visible}.interface-track .medium-project{width:100%;margin-bottom:30px}.chapter{break-inside:avoid}}
