/* JSQ Contrechamp V1.1 — only six approved colors via theme.json presets.
   Structure deliberately quieter beyond the industrial signature. No image filters. */
:root{--jsq-ink:var(--jsq-charbon);--jsq-paper:var(--jsq-brume)}
.jsq-main,footer.wp-block-template-part{margin-left:var(--jsq-rail-width)!important;margin-block-start:0!important}
header.wp-block-template-part{position:fixed;inset:0 auto 0 0;width:var(--jsq-rail-width);height:100vh;z-index:100;background:var(--jsq-charbon);border-right:1px solid var(--jsq-beton)}
.jsq-rail{height:100%;padding:27px 18px 23px;align-items:stretch!important;gap:28px!important}
.jsq-rail-top{width:100%}
.jsq-rail .wp-block-site-title{font-family:var(--jsq-display)!important;font-weight:900;font-size:clamp(30px,3vw,40px)!important;line-height:.83!important;letter-spacing:-.025em;max-width:150px;overflow-wrap:normal;margin:0 0 22px!important;text-transform:uppercase}
.jsq-rail .wp-block-site-title a{color:var(--jsq-brume);text-decoration:none}
.jsq-rail-rule{width:40px!important;height:3px!important;background:var(--jsq-lichen)!important;margin:0 0 36px!important;border:0!important}
.jsq-rail-nav{font-family:var(--jsq-mono);font-size:12px;letter-spacing:0;line-height:1.65;text-transform:uppercase}
.jsq-rail-nav .wp-block-navigation__container{flex-direction:column!important;align-items:flex-start!important;gap:11px!important;width:100%}
.jsq-rail-nav .wp-block-navigation-item{width:100%}
.jsq-rail-nav .wp-block-navigation-item__content{color:var(--jsq-brume);text-decoration:none}
.jsq-rail-nav .wp-block-navigation-item__content:hover{text-decoration:underline;text-underline-offset:.28em}
.jsq-rail-note{font:400 11px/1.7 var(--jsq-mono);color:var(--jsq-brume);margin-top:auto}
.jsq-hero{isolation:isolate;position:relative;display:flex!important;flex-direction:column;justify-content:flex-end!important;align-items:flex-start!important;min-height:min(90svh,890px);padding:clamp(30px,5vw,78px)!important;padding-bottom:clamp(62px,7vw,110px)!important;overflow:hidden;margin:0!important;background:var(--jsq-charbon) url('../images/pont-defaut.webp') center 43%/cover no-repeat}
.jsq-hero::before{content:"";position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(0deg,rgba(28,30,29,.78) 0%,rgba(28,30,29,.25) 28%,transparent 68%),linear-gradient(90deg,rgba(28,30,29,.24),transparent 70%)}
.jsq-hero .jsq-hero__photo{position:absolute;z-index:0;inset:0;width:100%;height:100%;margin:0!important}
.jsq-hero .jsq-hero__photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 43%;filter:none}
.jsq-hero__content{position:relative!important;z-index:2!important;max-width:min(780px,100%)!important;width:100%;margin:0!important}
.jsq-hero .jsq-hero__kicker{font:500 12px/1.5 var(--jsq-mono)!important;letter-spacing:.025em;color:var(--jsq-brume);margin:0 0 22px!important}
.jsq-hero .jsq-hero__title{font-family:var(--jsq-display)!important;font-weight:900!important;font-size:clamp(83px,10.8vw,172px)!important;line-height:.81!important;letter-spacing:-.03em!important;text-transform:uppercase;color:var(--jsq-brume)!important;margin:0!important;overflow-wrap:normal}
.jsq-hero .jsq-hero__title span{display:block;white-space:nowrap}
.jsq-hero .jsq-hero__title span:nth-child(2){font-size:.48em;letter-spacing:-.015em;margin-top:.18em}
.jsq-hero__content::after{content:"";display:block;width:55px;height:3px;background:var(--jsq-lichen);margin:28px 0 17px}
.jsq-hero__label{font:500 12px/1.65 var(--jsq-mono)!important;letter-spacing:0!important;color:var(--jsq-brume);margin:0!important;max-width:64ch}
.jsq-hero__index{z-index:2;position:absolute;right:clamp(24px,4vw,60px);bottom:22px;font:400 12px var(--jsq-mono);color:var(--jsq-brume)}
/* One calm editorial spacer, rather than decorative poster strips on every level. */
.jsq-ticker{margin:0!important;padding:13px clamp(22px,4vw,58px)!important;border-top:2px solid var(--jsq-lichen);border-bottom:1px solid var(--jsq-beton);background:var(--jsq-charbon);color:var(--jsq-brume);font:400 12px/1.5 var(--jsq-mono);letter-spacing:0}
.jsq-contact-strip-wrap{margin:0!important;padding:0 0 4px!important;background:var(--jsq-charbon);color:var(--jsq-brume)}
.jsq-contact-strip-head{padding:12px clamp(22px,4vw,58px) 8px!important;border-bottom:1px solid var(--jsq-beton);gap:10px;align-items:center!important;font:400 12px/1.4 var(--jsq-mono)}
.jsq-contact-strip-head p{margin:0}
.jsq-feed-items{margin:0;padding:0;display:grid;gap:4px}
.jsq-feed--strip .jsq-feed-items{display:flex!important;overflow-x:auto;scroll-snap-type:x proximity;gap:4px;overscroll-behavior-x:contain}
.jsq-feed--strip .jsq-feed-item{flex:0 0 clamp(140px,16vw,260px);position:relative;aspect-ratio:1.35;scroll-snap-align:start;background:var(--jsq-charbon);overflow:hidden}
.jsq-photo-open{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:var(--jsq-charbon);cursor:zoom-in;display:block}
.jsq-photo-open img{display:block;width:100%;height:100%;object-fit:cover;filter:none;transition:transform .25s ease}
.jsq-photo-open:hover img{transform:scale(1.025)}
.jsq-feed--strip .jsq-feed-item h3{position:absolute;bottom:6px;left:8px;margin:0;max-width:95%;font:400 11px/1.4 var(--jsq-mono);z-index:2;pointer-events:none}
.jsq-feed--strip .jsq-feed-item h3 a{color:var(--jsq-brume);text-decoration:none;pointer-events:auto}
.jsq-feed--strip .jsq-empty{padding:25px}
.jsq-section{margin-block-start:0!important;padding:clamp(48px,6vw,95px) clamp(22px,4vw,66px)!important}
.jsq-section__head{display:flex;justify-content:space-between;align-items:flex-end;gap:22px;padding-bottom:17px;margin-bottom:25px!important;border-bottom:1px solid var(--jsq-beton)}
.jsq-kicker{font:400 12px/1.5 var(--jsq-mono)!important;letter-spacing:.025em!important;text-transform:uppercase;color:var(--jsq-brume)}
.jsq-section__head h2,.jsq-archive-title{font-family:var(--jsq-display)!important;font-size:clamp(50px,6vw,83px)!important;line-height:.9!important;font-weight:800!important;letter-spacing:-.015em!important;text-transform:uppercase;margin:4px 0 0!important}
.jsq-section__action,.jsq-more{font:400 12px/1.6 var(--jsq-mono);letter-spacing:0}
.jsq-section__action a,.jsq-more a{color:inherit;text-decoration:none;border-bottom:1px solid var(--jsq-lichen);padding-bottom:4px}
.jsq-title-dot{display:none!important}
.jsq-feed--photos .jsq-feed-items{grid-template-columns:repeat(4,minmax(0,1fr))}
.jsq-feed--photos .jsq-feed-item{position:relative;min-width:0;min-height:clamp(150px,18vw,265px);background:var(--jsq-charbon);overflow:hidden}
.jsq-feed--photos .jsq-feed-item:first-child{grid-column:auto;grid-row:auto;min-height:clamp(150px,18vw,265px)}
.jsq-feed--photos .jsq-feed-item h3{position:absolute;z-index:2;bottom:5px;left:11px;max-width:92%;font:500 11px/1.4 var(--jsq-mono);text-shadow:0 1px 6px var(--jsq-charbon);pointer-events:none;margin:0}
.jsq-feed--photos .jsq-feed-item h3 a{color:var(--jsq-brume);text-decoration:none;pointer-events:auto}
.jsq-feed--photos .jsq-feed-items .jsq-photo-open{position:absolute}
.jsq-empty{padding:22px 0;font:400 17px/1.55 var(--jsq-reading)}
/* Reading areas deliberately silent: literary content remains dominant. */
.jsq-lanes{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));margin:0!important;background:var(--jsq-brume);color:var(--jsq-charbon)}
.jsq-lanes>.jsq-section{margin:0!important;border-right:1px solid var(--jsq-beton);min-width:0;padding:clamp(43px,5vw,75px) clamp(22px,3.5vw,58px)!important}
.jsq-lanes .jsq-section__head{border-color:var(--jsq-beton)}
.jsq-lanes .jsq-section__head h2{font-size:clamp(44px,5vw,68px)!important}
.jsq-lanes .jsq-kicker{color:var(--jsq-charbon)}
.jsq-lanes a,.jsq-reading-wrap a{color:var(--jsq-charbon)}
.jsq-feed--compact .jsq-feed-items,.jsq-feed--journal .jsq-feed-items{grid-template-columns:1fr;gap:0}
.jsq-feed--compact .jsq-feed-item,.jsq-feed--journal .jsq-feed-item{border-top:1px solid var(--jsq-beton);padding:18px 0;min-width:0}
.jsq-feed--compact .jsq-feed-item h3{font-family:var(--jsq-reading)!important;font-weight:400;font-size:clamp(18px,2vw,28px);line-height:1.35;text-transform:none;margin:0}
.jsq-feed--compact .jsq-feed-item a,.jsq-feed--journal .jsq-feed-item a{color:inherit;text-decoration:none}
.jsq-revue{margin:0!important;padding:clamp(46px,5vw,80px) clamp(22px,4vw,65px) 95px!important;background:var(--jsq-charbon);color:var(--jsq-brume)}
.jsq-revue__heading{font-size:clamp(54px,6.2vw,86px)!important;letter-spacing:-.01em!important;font-family:var(--jsq-display)!important;margin:0 0 32px!important}
.jsq-revue__columns{gap:clamp(28px,4vw,70px);align-items:flex-start}
.jsq-revue__columns>.wp-block-column{min-width:0;padding:14px 0 0!important;border-top:2px solid var(--jsq-lichen);border-right:0!important;border-bottom:0!important;border-left:0!important}
.jsq-revue__columns h3{font:700 clamp(30px,4vw,48px)/1 var(--jsq-display)!important;text-transform:uppercase;margin:0 0 22px!important}
.jsq-feed--journal .jsq-feed-item h3{font:600 clamp(23px,2.6vw,34px)/1.1 var(--jsq-display)!important;text-transform:none;margin:0 0 8px}
.jsq-feed--journal .jsq-feed-item time{font:400 12px/1.5 var(--jsq-mono);color:var(--jsq-brume)}
.jsq-feed-excerpt{font:400 17px/1.65 var(--jsq-reading);margin-top:10px}
.jsq-revue .jsq-more{margin-top:20px}
/* Archives keep the grid industrial but body content restrained. */
.jsq-archive{margin:0!important;padding:clamp(52px,6vw,100px) clamp(22px,4vw,66px) 100px!important;min-height:75vh}
.jsq-archive-title{font-size:clamp(55px,7vw,96px)!important;margin:8px 0 36px!important}
.jsq-archive .wp-block-term-description{font:400 clamp(17px,1.5vw,20px)/1.7 var(--jsq-reading);max-width:66ch}
.jsq-list .wp-block-post-template,.jsq-contact-sheet .wp-block-post-template{list-style:none;padding:0!important;margin:0!important}
.jsq-list .wp-block-post-template{display:block!important}
.jsq-list .wp-block-post-template>li{padding:20px 0;border-top:1px solid var(--jsq-beton)}
.jsq-list .wp-block-post-title{font:400 clamp(25px,3vw,41px)/1.25 var(--jsq-reading)!important;text-transform:none;margin:0 0 6px!important}
.jsq-list .wp-block-post-title a{color:var(--jsq-brume);text-decoration:none}
.jsq-list .wp-block-post-date,.jsq-contact-sheet .wp-block-post-date{font:400 12px/1.6 var(--jsq-mono)}
.jsq-contact-sheet .wp-block-post-template{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:6px!important}
.jsq-contact-sheet .wp-block-post-template>li{min-width:0;margin:0!important}
.jsq-contact-sheet .wp-block-post-featured-image{margin:0}
.jsq-contact-sheet .wp-block-post-featured-image img{width:100%;aspect-ratio:4/3;object-fit:cover;filter:none;display:block}
.jsq-contact-sheet .wp-block-post-title{font:500 13px/1.35 var(--jsq-mono);text-transform:none;margin:9px 0 3px}
.jsq-contact-sheet .wp-block-post-title a{color:var(--jsq-brume);text-decoration:none}
.jsq-archive .wp-block-query-pagination{padding-top:20px;border-top:1px solid var(--jsq-beton);font:400 12px var(--jsq-mono)}
/* Reading pages = Brume, generous width and no simulated paper texture. */
.jsq-reading-wrap{background:var(--jsq-brume)!important;background-image:none!important;color:var(--jsq-charbon)!important;margin:0!important;padding:clamp(55px,6vw,96px) clamp(20px,5vw,75px) 120px!important}
.jsq-reading-wrap > *{max-width:760px;margin-left:auto!important;margin-right:auto!important}
.jsq-reading-wrap .wp-block-post-title{font-family:var(--jsq-display)!important;font-weight:800!important;font-size:clamp(50px,6vw,83px)!important;line-height:.95!important;letter-spacing:-.02em;text-transform:uppercase;margin:16px auto 30px!important}
.jsq-reading-wrap .wp-block-post-date,.jsq-reading-wrap .wp-block-post-terms{font:400 12px/1.5 var(--jsq-mono);letter-spacing:0;text-transform:uppercase}
.jsq-reading-wrap .wp-block-post-featured-image{margin:0 auto 40px!important}
.jsq-reading-wrap .wp-block-post-featured-image img{width:100%;max-height:80svh;object-fit:contain;filter:none}
.jsq-reading-wrap .wp-block-post-content{font:400 clamp(18px,1.4vw,20px)/1.72 var(--jsq-reading)!important;margin:50px auto 70px!important;max-width:66ch!important;overflow-wrap:break-word}
.jsq-reading-wrap .wp-block-post-content .wp-block-verse,.jsq-protected-text{font-family:inherit!important;font-size:inherit!important;line-height:inherit!important;white-space:pre-wrap!important;overflow-wrap:break-word}
.jsq-reading-wrap .wp-block-post-content p{margin-bottom:1.25em}
.jsq-reading-wrap .wp-block-post-navigation-link{font:400 12px/1.6 var(--jsq-mono);text-transform:uppercase}
.jsq-reading-wrap :focus-visible,.jsq-lanes :focus-visible{outline-color:var(--jsq-acier)}
.jsq-page{padding:clamp(50px,7vw,100px) clamp(20px,5vw,75px)!important;min-height:60vh}
.jsq-page .wp-block-post-title{font:700 clamp(50px,6vw,84px)/1 var(--jsq-display)}
.jsq-footer{margin:0!important;padding:30px clamp(22px,4vw,66px)!important;border-top:1px solid var(--jsq-beton);background:var(--jsq-charbon);color:var(--jsq-brume);font:400 12px/1.6 var(--jsq-mono);display:flex;gap:14px}
.jsq-footer p,.jsq-footer .wp-block-site-title{margin:0}
.jsq-footer .wp-block-site-title{font:700 23px/1 var(--jsq-display);text-transform:uppercase}
.jsq-footer a{color:var(--jsq-brume)}
.jsq-not-found{padding:8vw;min-height:65vh}
/* Lightbox keyboard: escape to close; originals remain untouched. */
.jsq-viewer{position:fixed;z-index:999999;inset:0;display:grid;place-items:center;background:rgba(28,30,29,.98);padding:30px 16px}
.jsq-viewer-shade{position:absolute;inset:0;cursor:zoom-out;border:0;background:transparent;padding:0}
.jsq-viewer-stage{position:relative;z-index:2;max-width:92vw;max-height:86vh}
.jsq-viewer-stage img{max-width:92vw;max-height:84vh;object-fit:contain}
.jsq-viewer-close{position:absolute;z-index:4;right:22px;top:20px;padding:12px 15px;background:var(--jsq-charbon);border:1px solid var(--jsq-brume);color:var(--jsq-brume);cursor:pointer}
.jsq-viewer-prev,.jsq-viewer-next{position:absolute;top:50%;transform:translateY(-50%);z-index:4;cursor:pointer;border:1px solid var(--jsq-brume);color:var(--jsq-brume);background:var(--jsq-charbon);padding:8px 14px;font-size:23px}
.jsq-viewer-prev{left:14px}.jsq-viewer-next{right:14px}
.jsq-viewer-caption{position:absolute;bottom:14px;left:22px;z-index:3;color:var(--jsq-brume);font:400 12px var(--jsq-mono)}
/* Photographer controls: OFF by default, 8–14% of displayed photo, no original modified. */
body.jsq-wm-enabled .jsq-feed--photos .jsq-feed-item:after{content:"";position:absolute;z-index:3;bottom:12px;right:12px;width:12%;min-width:42px;max-width:110px;height:38px;background:var(--jsq-wm-image) center/contain no-repeat;opacity:var(--jsq-wm-opacity,.38);pointer-events:none}
body.jsq-wm-enabled.jsq-wm-bottom-left .jsq-feed--photos .jsq-feed-item:after{left:12px;right:auto}
body.jsq-wm-enabled.jsq-wm-top-right .jsq-feed--photos .jsq-feed-item:after{bottom:auto;top:12px}
body.jsq-wm-enabled.jsq-wm-top-left .jsq-feed--photos .jsq-feed-item:after{left:12px;right:auto;bottom:auto;top:12px}
body.jsq-wm-enabled .jsq-viewer-stage:after{content:"";position:absolute;bottom:13px;right:13px;width:13%;max-width:140px;height:48px;background:var(--jsq-wm-image) center/contain no-repeat;opacity:var(--jsq-wm-opacity,.38);pointer-events:none}
body.jsq-wm-enabled.jsq-wm-bottom-left .jsq-viewer-stage:after{right:auto;left:13px}
body.jsq-wm-enabled.jsq-wm-top-right .jsq-viewer-stage:after{bottom:auto;top:13px}
body.jsq-wm-enabled.jsq-wm-top-left .jsq-viewer-stage:after{bottom:auto;top:13px;right:auto;left:13px}
body.jsq-wm-enabled.jsq-single-photo .jsq-reading-wrap .wp-block-post-featured-image{position:relative}
body.jsq-wm-enabled.jsq-single-photo .jsq-reading-wrap .wp-block-post-featured-image:after{content:"";position:absolute;right:14px;bottom:14px;width:12%;height:48px;background:var(--jsq-wm-image) center/contain no-repeat;opacity:var(--jsq-wm-opacity,.38);pointer-events:none}
@media(max-width:1090px){.jsq-feed--photos .jsq-feed-items,.jsq-contact-sheet .wp-block-post-template{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:780px){
 :root{--jsq-rail-width:0px}
 header.wp-block-template-part{position:sticky;inset:0 auto auto 0;height:auto;width:auto;border:0;border-bottom:1px solid var(--jsq-beton)}
 .jsq-main,footer.wp-block-template-part{margin-left:0!important}
 .jsq-rail{height:auto;min-height:66px;flex-direction:row!important;align-items:center!important;justify-content:space-between;padding:12px 18px!important;gap:10px!important}
 .jsq-rail-top{width:100%;display:flex;align-items:center;justify-content:space-between}
 .jsq-rail .wp-block-site-title{font-size:28px!important;max-width:140px;margin:0!important}
 .jsq-rail-rule,.jsq-rail-note{display:none}
 .jsq-rail-nav{width:auto}
 .jsq-rail-nav .wp-block-navigation__responsive-container.is-menu-open{background:var(--jsq-charbon);color:var(--jsq-brume);padding:24px;z-index:1000}
 .jsq-rail-nav .wp-block-navigation__container{gap:21px!important}
 .jsq-hero{min-height:calc(85svh - 66px);padding:23px!important;padding-bottom:74px!important}
 .jsq-hero__content{max-width:100%!important}
 .jsq-hero .jsq-hero__title{font-size:clamp(72px,14.5vw,110px)!important}
 .jsq-hero__index{bottom:16px;right:22px}
 .jsq-lanes{grid-template-columns:1fr!important}
 .jsq-lanes>.jsq-section{border-right:0;border-bottom:1px solid var(--jsq-beton)}
 .jsq-section__head{align-items:flex-start;flex-wrap:wrap}
 .jsq-revue__columns{flex-direction:column}
 .jsq-feed--photos .jsq-feed-items,.jsq-contact-sheet .wp-block-post-template{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .jsq-feed--strip .jsq-feed-item{flex-basis:43%}
}
@media(max-width:560px){.jsq-viewer-prev,.jsq-viewer-next{top:auto;bottom:56px;transform:none}.jsq-viewer-prev{left:12px}.jsq-viewer-next{right:12px}}
@media(max-width:380px){.jsq-hero .jsq-hero__title{font-size:clamp(59px,15vw,76px)!important}.jsq-hero__label{font-size:11px!important}.jsq-section__head h2,.jsq-archive-title{font-size:clamp(39px,10vw,53px)!important}.jsq-feed--photos .jsq-feed-item{min-height:160px}}
@media(prefers-reduced-motion:reduce){.jsq-photo-open img{transition:none}}

/* Contrechamp V1.2 — approved wordmark PNG, no synthetic letters. */
.jsq-brand{display:block;line-height:0;min-width:0;max-width:100%}
.jsq-brand img{display:block;width:100%;height:auto;max-width:100%;object-fit:contain;object-position:left center;filter:none!important}
.jsq-brand a{display:block;line-height:0}
.jsq-brand--small{width:min(155px,100%)}
.jsq-brand--normal{width:min(335px,100%)}
.jsq-brand--large{width:min(620px,100%)}
.jsq-rail .jsq-brand{margin:0 0 18px;max-width:100%}
.jsq-hero .jsq-brand{max-width:min(560px,88%);position:relative;z-index:3}
/* Do not darken the sky behind the charcoal lockup. */
.jsq-hero{justify-content:center!important;padding-block:85px!important}
.jsq-hero::before{background:linear-gradient(90deg,rgba(224,220,210,.16) 0%,transparent 60%)}
.jsq-hero__content{max-width:min(680px,100%)!important}
.jsq-hero .jsq-hero__kicker{color:var(--jsq-charbon)!important;text-shadow:0 1px 9px var(--jsq-brume)}
.jsq-hero__content::after{margin:13px 0 20px}
.jsq-hero__label{color:var(--jsq-charbon)!important;text-shadow:0 1px 8px var(--jsq-brume)}
.jsq-brand img:focus-visible,.jsq-brand a:focus-visible{outline:3px solid var(--jsq-brume)}
@media(max-width:780px){
 .jsq-rail .jsq-brand{margin:0;max-width:124px}
 .jsq-hero{justify-content:center!important;min-height:76svh;padding:70px 22px 70px!important;background-position:47% center}
 .jsq-hero .jsq-brand{max-width:94%}
 .jsq-hero__content{max-width:100%!important}
}
@media(max-width:380px){
 .jsq-rail .jsq-brand{max-width:104px}
 .jsq-hero .jsq-brand{max-width:99%}
}

.jsq-accessible-heading{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}

/* Contact: WordPress page content + reusable global Instagram link. */
.jsq-page--contact{min-height:70svh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:1.5rem;background:var(--jsq-brume);color:var(--jsq-charbon);padding-block:clamp(3rem,8vw,8rem)!important}
.jsq-page--contact .wp-block-post-title{font-family:var(--jsq-display);font-weight:900;text-transform:uppercase;font-size:clamp(4rem,10vw,9rem);line-height:.85;margin:0}
.jsq-page--contact .wp-block-post-content{width:min(100%,68ch)}
.jsq-contact-intro{font-family:var(--jsq-reading);font-size:clamp(1.1rem,2.1vw,1.45rem);line-height:1.6;color:var(--jsq-charbon)}
.jsq-instagram{font-family:var(--jsq-mono);font-size:.78rem;line-height:1.5;letter-spacing:.02em}
.jsq-instagram>a{display:inline-flex;align-items:center;gap:.6rem;color:inherit;text-decoration:none;border-bottom:1px solid var(--jsq-lichen);padding:.4rem 0;max-width:100%;overflow-wrap:anywhere}
.jsq-instagram>a:hover{text-decoration:underline;text-underline-offset:.25em}
.jsq-instagram>a:focus-visible,.jsq-footer-contact a:focus-visible{outline:3px solid currentColor;outline-offset:4px}
.jsq-instagram__icon{width:1.15rem;height:1.15rem;flex:none}
.jsq-instagram--featured{font-size:clamp(1rem,2vw,1.35rem);font-weight:500;margin-top:1.4rem}
.jsq-instagram--featured .jsq-instagram__icon{width:1.5rem;height:1.5rem}
.jsq-footer-contact{display:flex;align-items:center;gap:1.5rem!important;font:400 12px/1.6 var(--jsq-mono)}
.jsq-footer-contact p{margin:0!important}
.jsq-footer-contact p a{color:inherit;text-decoration:none;border-bottom:1px solid var(--jsq-lichen);padding-bottom:3px}
@media(max-width:780px){.jsq-page--contact{padding-inline:24px!important;min-height:55svh}.jsq-footer-contact{width:100%}}


/* V1.4 — Suivre Jacob sur Instagram : visible, cliquable, administrable. */
/* Trois points de contact : accueil, rail de navigation et pied de page. */
.jsq-rail-instagram{margin-top:clamp(22px,3vh,35px)!important;max-width:100%}
.jsq-rail-instagram>a{display:inline-flex;min-height:44px;min-width:0;align-items:center;justify-content:center;gap:8px;
    padding:10px 11px!important;border:1px solid var(--jsq-lichen)!important;
    color:var(--jsq-brume)!important;text-decoration:none!important;
    font:500 11px/1.4 var(--jsq-mono);letter-spacing:.015em;transition:background-color .18s ease,color .18s ease}
.jsq-rail-instagram>a:hover{background:var(--jsq-brume);color:var(--jsq-charbon)!important}
.jsq-rail-instagram .jsq-instagram__icon{width:17px;height:17px}
/* Main hero: tactile 44px+, signature visually distinct from literary blocks. */
.jsq-hero .jsq-instagram--featured{position:relative;z-index:5;max-width:100%;margin-top:clamp(20px,3vw,32px)!important}
.jsq-hero .jsq-instagram--featured>a{display:inline-flex;min-height:50px;align-items:center;justify-content:center;
    padding:12px 17px!important;max-width:100%;border:2px solid var(--jsq-charbon)!important;
    background:var(--jsq-brume);color:var(--jsq-charbon)!important;
    font:600 clamp(11px,1.15vw,14px)/1.45 var(--jsq-mono);letter-spacing:.015em;
    text-decoration:none!important;text-shadow:none!important;box-shadow:4px 4px 0 var(--jsq-lichen);
    transition:background-color .18s ease,transform .18s ease}
.jsq-hero .jsq-instagram--featured>a:hover{background:var(--jsq-charbon);color:var(--jsq-brume)!important;transform:translate(-1px,-1px)}
.jsq-hero .jsq-instagram--featured .jsq-instagram__icon{width:20px;height:20px}
.jsq-instagram>a:focus-visible{outline:3px solid var(--jsq-acier)!important;outline-offset:4px!important}
.jsq-footer .jsq-instagram>a{min-height:44px;display:inline-flex;gap:8px;padding:8px 0!important}
.jsq-page--contact .jsq-instagram--featured>a{min-height:50px;padding:10px 14px;border:2px solid var(--jsq-charbon);
    background:var(--jsq-charbon);color:var(--jsq-brume);text-decoration:none}
.jsq-page--contact .jsq-instagram--featured>a:hover{background:var(--jsq-acier);color:var(--jsq-brume)}
@media(max-width:780px){
 .jsq-rail-top{display:flex!important;align-items:center;justify-content:space-between;gap:8px!important;flex-wrap:nowrap}
 .jsq-rail-top>.jsq-brand{order:1;flex:0 1 auto}
 .jsq-rail-instagram{order:2;flex:0 1 auto;margin:0!important}
 .jsq-rail-instagram>a{min-height:44px;padding:8px!important;border:0!important;border-bottom:2px solid var(--jsq-lichen)!important;font-size:11px;white-space:nowrap}
 .jsq-rail-instagram .jsq-instagram__icon{width:16px;height:16px}
 .jsq-rail-nav{order:3;flex:0 0 auto}
 .jsq-hero .jsq-instagram--featured>a{font-size:11px;padding:12px 13px!important;min-height:48px}
}
@media(max-width:360px){
 .jsq-rail-instagram>a{font-size:0;gap:0;min-width:44px;justify-content:center}
 .jsq-rail-instagram .jsq-instagram__icon{width:22px;height:22px}
 .jsq-hero .jsq-instagram--featured>a{font-size:10px}
}
/* Place the dark hero signature on the sky, not on the dark bridge, on narrow screens. */
@media(max-width:780px){.jsq-hero{background-position:12% 43%!important}.jsq-hero .jsq-hero__photo img{object-position:12% 43%!important}}
@media(prefers-reduced-motion:reduce){.jsq-hero .jsq-instagram--featured>a,.jsq-rail-instagram>a{transition:none}}

/* V1.5 — focus on dark/bright background; never rely on low-contrast acier on charcoal. */
.jsq-rail :focus-visible,.jsq-revue :focus-visible,.jsq-footer :focus-visible,
.jsq-contact-strip-wrap :focus-visible,.jsq-section--photos :focus-visible{outline-color:var(--jsq-brume)!important}
.jsq-reading-wrap :focus-visible,.jsq-page--contact :focus-visible,
.jsq-lanes :focus-visible{outline-color:var(--jsq-acier)!important}
@media (prefers-reduced-motion:reduce){.jsq-hero .jsq-instagram--featured>a{transform:none!important}}


/* Contrechamp V1.6 — layout correction after first live deployment.
   Gutenberg constrained layout applied the literary 66ch content width to the WHOLE
   site. Keep reading columns narrow, but let canvases, photo grids and footer fill
   all space after the fixed navigation rail. Defensive rules also apply to
   already-customized database templates left untouched by theme updates. */
.jsq-main,
footer.wp-block-template-part,
.wp-site-blocks > main.wp-block-group.jsq-main,
.wp-site-blocks > footer.wp-block-template-part {
  box-sizing:border-box;
  width:calc(100% - var(--jsq-rail-width))!important;
  max-width:none!important;
  margin-left:var(--jsq-rail-width)!important;
  margin-right:0!important;
  min-width:0;
}
.jsq-main > .jsq-hero,
.jsq-main > .jsq-ticker,
.jsq-main > .jsq-contact-strip-wrap,
.jsq-main > .jsq-section,
.jsq-main > .jsq-lanes,
.jsq-main > .jsq-revue,
.jsq-main > .jsq-archive,
.jsq-main > .jsq-reading-wrap,
.jsq-main > .jsq-page,
.jsq-main > .jsq-not-found {
  box-sizing:border-box;
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}
/* Gutenberg may centre the hero's inner Group through its auto margins. */
main.jsq-main .jsq-hero > .jsq-hero__content {
  margin-left:0!important;
  margin-right:auto!important;
  max-width:min(680px,100%)!important;
}
/* Old archive group layouts could also constrain the WP Query block to 66ch. */
.jsq-archive > .wp-block-query,
.jsq-archive > .wp-block-query-title,
.jsq-archive > .wp-block-term-description {
  margin-left:0!important;
  margin-right:0!important;
}
.jsq-archive > .wp-block-query {max-width:none!important;width:100%!important}
/* An author’s text remains a comfortable editorial column, never a full screen line. */
.jsq-reading-wrap > :not(.alignfull) {max-width:min(760px,100%)!important}
.jsq-reading-wrap .wp-block-post-content {max-width:66ch!important}
/* The approved charcoal logo is not recoloured; a wider hero restores the original
   photo crop and the intended brighter area beneath the wordmark. */
@media(max-width:780px){
  .jsq-main,footer.wp-block-template-part{width:100%!important;margin-left:0!important}
}

/* V1.7 — Gutenberg galleries and media-led photographic display. */
.jsq-gallery-index-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(15px,2vw,30px)}
.jsq-gallery-index-card{min-width:0;margin:0}
.jsq-gallery-index-link{display:flex;flex-direction:column;gap:.5rem;color:var(--jsq-brume);text-decoration:none}
.jsq-gallery-index-cover{display:flex;align-items:center;justify-content:center;overflow:hidden;aspect-ratio:4/3;background:var(--jsq-charbon)}
.jsq-gallery-index-cover img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .2s ease}
.jsq-gallery-index-link:hover img{transform:scale(1.03)}
.jsq-gallery-index-title{font:800 clamp(24px,3.1vw,42px)/1 var(--jsq-display);text-transform:uppercase}
.jsq-gallery-index-count{font:400 11px/1.5 var(--jsq-mono)}
.jsq-gallery-pagination{margin-block:2rem;font:400 13px var(--jsq-mono)}
.jsq-gallery-pagination ul{display:flex;gap:1rem;list-style:none;padding:0}
.jsq-gallery-tile{margin:0!important}
.jsq-gallery-tile-label{position:absolute;bottom:0;left:0;z-index:2;max-width:100%;padding:8px 11px;font:500 11px/1.4 var(--jsq-mono);color:var(--jsq-brume);background:var(--jsq-charbon);pointer-events:none}
.jsq-gallery-tile .jsq-photo-open{inset:0}
.jsq-photo-collection .jsq-feed-items{min-width:0}
.jsq-gallery-page{padding:clamp(35px,5vw,90px) clamp(22px,4vw,75px)!important;margin:0!important;max-width:none!important;color:var(--jsq-brume);background:var(--jsq-charbon)}
.jsq-gallery-page>.wp-block-post-title{font:900 clamp(50px,7vw,104px)/.95 var(--jsq-display);text-transform:uppercase;max-width:none;margin:12px 0 16px!important}
.jsq-gallery-page>.wp-block-post-excerpt{max-width:75ch;font:400 clamp(16px,1.7vw,21px)/1.55 var(--jsq-reading)}
.jsq-gallery-page>.wp-block-post-content{max-width:none!important;width:100%!important;margin:35px 0!important}
.jsq-gallery-page .wp-block-gallery{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px!important;max-width:none!important}
.jsq-gallery-page .wp-block-gallery>.wp-block-image{width:100%!important;max-width:none!important;margin:0!important;display:flex!important;align-items:center;justify-content:center;background:var(--jsq-charbon)}
.jsq-gallery-page .wp-block-gallery img{display:block;width:100%!important;height:auto!important;max-height:620px;object-fit:contain!important;cursor:zoom-in}
.jsq-gallery-page .wp-block-gallery img[data-jsq-src]:focus-visible{outline:3px solid var(--jsq-brume);outline-offset:4px}
.jsq-gallery-page .wp-block-gallery figcaption{font:400 12px/1.5 var(--jsq-mono);background:var(--jsq-charbon);color:var(--jsq-brume)}
.jsq-gallery-back{margin:35px 0 0!important;font:500 13px var(--jsq-mono)}
.jsq-gallery-page .jsq-kicker a{color:inherit}
/* Optical alignment: align the kicker, labels and CTA with the APPROVED PNG's
   visible first-line left edge, without recomposing the artwork or altering bytes. */
.jsq-hero__content{--jsq-logo-optical-inset:clamp(20px,12vw,68px)}
.jsq-hero__content>.jsq-hero__kicker,
.jsq-hero__content>.jsq-hero__label,
.jsq-hero__content>.jsq-instagram--featured,
.jsq-hero__content::after{margin-left:var(--jsq-logo-optical-inset)!important}
.jsq-hero__content>.jsq-hero__label{max-width:calc(100% - var(--jsq-logo-optical-inset))}
.jsq-hero__content>.jsq-instagram--featured{max-width:calc(100% - var(--jsq-logo-optical-inset))}
@media(max-width:900px){.jsq-gallery-index-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.jsq-gallery-page .wp-block-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.jsq-gallery-index-grid{grid-template-columns:1fr}.jsq-gallery-page .wp-block-gallery{grid-template-columns:1fr}.jsq-hero__content{--jsq-logo-optical-inset:clamp(22px,11.5vw,45px)}}


/* V1.8 — Pied de page: both public contact actions share the same 44 px
   interaction box and underline baseline, independent of block-wrapper metrics.
   Keep the approved 6-color palette and existing editable Gutenberg labels. */
.jsq-footer .jsq-footer-contact {
  display:flex!important;
  flex-wrap:wrap!important;
  align-items:stretch!important;
  column-gap:clamp(18px,2vw,28px)!important;
  row-gap:8px!important;
}
.jsq-footer .jsq-footer-contact > p,
.jsq-footer .jsq-footer-contact > .jsq-instagram {
  display:flex!important;
  align-items:stretch!important;
  flex:0 0 auto;
  min-height:44px;
  padding:0!important;
  margin:0!important;
  line-height:1!important;
}
.jsq-footer .jsq-footer-contact > p > a,
.jsq-footer .jsq-footer-contact > .jsq-instagram > a {
  position:relative;
  box-sizing:border-box;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:flex-start;
  min-height:44px!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0;
  line-height:1.45!important;
  font:400 12px/1.45 var(--jsq-mono);
  text-decoration:none!important;
  color:var(--jsq-brume);
}
.jsq-footer .jsq-footer-contact > p > a::after,
.jsq-footer .jsq-footer-contact > .jsq-instagram > a::after {
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:1px;
  background:var(--jsq-lichen);
  pointer-events:none;
}
.jsq-footer .jsq-footer-contact a:hover::after {height:2px}
.jsq-footer .jsq-footer-contact > .jsq-instagram .jsq-instagram__icon {
  width:17px;
  height:17px;
}
@media(max-width:780px){
 .jsq-footer .jsq-footer-contact {justify-content:flex-start!important}
}

/* =============================================================
   Contrechamp V1.9 — Galerie défilante sans scrollbar apparente.
   Le scrolling natif demeure fonctionnel (tactile / pavé tactile).
   Contrôles ajoutés par assets/js/motion.js; sans JS, la barre native
   reste accessible pour ne pas bloquer la découverte du défilement.
   ============================================================= */
.jsq-feed--strip{position:relative;min-width:0;width:100%;max-width:100%}
.jsq-feed--strip>.jsq-feed-items{
  overflow-x:auto!important;overflow-y:hidden!important;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-inline:contain;
  scroll-behavior:smooth;scroll-snap-type:x proximity;
}
/* Hide the native bar only when JS controls are available. Without JS,
   preserve the native scrollbar as an accessible fallback. */
.jsq-feed--strip[data-jsq-strip-ready="1"]>.jsq-feed-items{
  scrollbar-width:none;-ms-overflow-style:none;
}
.jsq-feed--strip[data-jsq-strip-ready="1"]>.jsq-feed-items::-webkit-scrollbar{display:none;width:0;height:0}
.jsq-feed--strip .jsq-feed-item{scroll-snap-align:start;scroll-snap-stop:normal}
.jsq-strip-nav{
  display:flex;align-items:center;justify-content:flex-end;
  gap:clamp(10px,1.8vw,17px);
  min-height:48px;padding:4px clamp(16px,4vw,58px) 4px;
  background:var(--jsq-charbon);color:var(--jsq-brume);
}
.jsq-strip-nav[hidden]{display:none!important}
.jsq-strip-arrow{
  appearance:none;display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;min-width:44px;min-height:44px;
  border:1px solid var(--jsq-beton);border-radius:0;
  background:transparent;color:var(--jsq-brume);
  font:400 20px/1 var(--jsq-mono);cursor:pointer;
  transition:background-color .22s ease,color .22s ease,border-color .22s ease;
}
.jsq-strip-arrow:not(:disabled):hover{
  background:var(--jsq-brume);border-color:var(--jsq-brume);color:var(--jsq-charbon);
}
.jsq-strip-arrow:disabled{opacity:.35;cursor:default}
.jsq-strip-arrow:focus-visible{outline:3px solid var(--jsq-brume);outline-offset:3px}
.jsq-strip-progress{
  display:block;width:clamp(65px,9vw,135px);height:2px;
  background:var(--jsq-beton);overflow:hidden;
}
.jsq-strip-progress__fill{
  display:block;width:100%;height:100%;background:var(--jsq-brume);
  transform-origin:left center;transform:scaleX(.17);
}
.jsq-contact-strip-wrap{padding-bottom:0!important}
/* Soft arrival for editorial section headers; only elements explicitly marked
   by IntersectionObserver are affected, never photographs or body copy. */
[data-jsq-reveal="pending"]{
  opacity:0;transform:translateY(12px);
}
[data-jsq-reveal="visible"]{
  opacity:1;transform:translateY(0);
}
[data-jsq-reveal]{transition:opacity .55s ease-out,transform .55s cubic-bezier(.2,.75,.25,1)}
@media(prefers-reduced-motion:reduce){
 .jsq-feed--strip>.jsq-feed-items{scroll-behavior:auto}
 [data-jsq-reveal]{opacity:1!important;transform:none!important;transition:none!important}
 .jsq-strip-arrow{transition:none!important}
}
