/* ==========================================================================
   TOP MARQUEE BANNER (bandeau défilant sticky en haut du site)
   ========================================================================== */

:root {
	--top-banner-height: 34px;
}

#top-marquee-banner {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: var(--top-banner-height);
	background-color: #000000;
	overflow: hidden;
	z-index: 9999;
	white-space: nowrap;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}

#top-marquee-banner .top-marquee-track {
	display: inline-flex;
	align-items: center;
	height: 100%;
	white-space: nowrap;
	will-change: transform;
	animation: top-marquee-scroll 65s linear infinite;
}

#top-marquee-banner .top-marquee-track span.top-marquee-item {
	display: inline-block;
	flex: 0 0 auto;
	font-family: 'Doto', sans-serif;
	font-weight: 800;
	font-variation-settings: 'ROND' 100;
	font-size: 17px;
	line-height: var(--top-banner-height);
	color: #ffffff;
	text-transform: none;
	letter-spacing: 1px;
	padding: 0 22px;
}

@keyframes top-marquee-scroll {
	from { transform: translateX(0); }
	to   { transform: translateX(-50%); }
}

/* Pause on hover for readability / accessibility */
#top-marquee-banner:hover .top-marquee-track {
	animation-play-state: paused;
}

/* Respect reduced-motion preference */
@media (prefers-reduced-motion: reduce) {
	#top-marquee-banner .top-marquee-track {
		animation: none;
	}
}

/* ------------------------------------------------------------------------
   Push the rest of the site down by the banner height so nothing
   is hidden behind the fixed banner, on both desktop (absolute/fixed
   sidebar header) and mobile (in-flow header) layouts.
   ------------------------------------------------------------------------ */

body {
	padding-top: var(--top-banner-height) !important;
}

#header-wrapper {
	top: var(--top-banner-height) !important;
	min-height: calc(100% - var(--top-banner-height)) !important;
	min-height: calc(max(100%, 100vh) - var(--top-banner-height)) !important;
}

@media only screen and (min-width: 960px) {
	#header-inner {
		top: var(--top-banner-height) !important;
	}
}

@media only screen and (max-width: 959px) {
	#header-wrapper {
		top: 0 !important;
		min-height: auto !important;
	}
}

@media only screen and (max-width: 500px) {
	:root {
		--top-banner-height: 28px;
	}
	#top-marquee-banner .top-marquee-track span.top-marquee-item {
		font-size: 13px;
		padding: 0 14px;
	}
}

/* ------------------------------------------------------------------------
   Portfolio filter bar (TOUS / CONTENU VIDÉO / ACTIVATION / DIGITAL /
   CATÉGORIES). The theme sets "html, body{overflow-x:hidden}" which, per
   spec, forces overflow-y to an implicit "auto" and can break native
   position:sticky in some browsers (Safari included). We disable native
   sticky for this element and recreate the same behaviour in JS
   (js/sticky-filter.js), toggling the .is-stuck class below.
   ------------------------------------------------------------------------ */

.portfolio-filter-wrapper {
	position: relative !important;
	top: auto !important;
}

.portfolio-filter-wrapper.is-stuck {
	position: fixed !important;
	top: var(--top-banner-height) !important;
	z-index: 500;
	box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08);
}

.portfolio-filter-placeholder {
	width: 100%;
}

/* ------------------------------------------------------------------------
   "PARIS NEW YORK MONTREAL" title (contact.html / profil.html, FR + EN).
   Markup is: <span class="pny-line1">PARIS NEW&nbsp;YORK</span><br>MONTREAL
   - "NEW" and "YORK" are joined with a &nbsp; in the HTML itself, so that
     pair can NEVER be split across two lines at any screen size.
   - Desktop (>=960px, matching the site's own tablet/desktop breakpoint):
     .pny-line1 is forced nowrap, so "PARIS NEW YORK" always stays
     together on one line, with "MONTREAL" alone on the line below.
   - Tablet/mobile (<960px): .pny-line1 allows normal wrapping, so it
     breaks at the regular space between "PARIS" and "NEW", giving one
     line per word: PARIS / NEW YORK / MONTREAL.
   ------------------------------------------------------------------------ */

.pny-line1 {
	white-space: normal;
}

@media only screen and (min-width: 960px) {
	.pny-line1 {
		white-space: nowrap;
	}
}

/* Font-size for this specific title only (scoped via .pny-title so no
   other page's #section-title h1 is affected). Sized so "PARIS NEW YORK"
   always physically fits on one line at each of the site's own desktop
   breakpoints -- measured against the real rendered container width at
   each breakpoint, with a small safety margin. Below 960px the site's
   own responsive font-size rules already apply and already fit fine,
   since at that point the title wraps one word per line instead. */
@media only screen and (min-width: 1200px) {
	#section-title h1.pny-title, #section-title h1.pny-title span {
		font-size: 96px; line-height: 88px;
	}
}
@media only screen and (min-width: 1024px) and (max-width: 1199px) {
	#section-title h1.pny-title, #section-title h1.pny-title span {
		font-size: 80px; line-height: 74px;
	}
}
@media only screen and (min-width: 960px) and (max-width: 1023px) {
	#section-title h1.pny-title, #section-title h1.pny-title span {
		font-size: 70px; line-height: 65px;
	}
}

/* Below 960px the title wraps one word per line (PARIS / NEW YORK /
   MONTREAL). "NEW" and "YORK" stay glued via &nbsp; and can never break
   apart -- but at the site's own default tablet/mobile sizes (84px /
   69px) that glued pair (and "MONTREAL") are themselves wider than the
   available column, which forces an ugly mid-word break instead. These
   two breakpoints shrink this title specifically so every word -- PARIS,
   NEW YORK, MONTREAL -- fits its own line intact. */
@media only screen and (min-width: 480px) and (max-width: 959px) {
	#section-title h1.pny-title, #section-title h1.pny-title span {
		font-size: 72px; line-height: 66px;
	}
}
@media only screen and (max-width: 479px) {
	#section-title h1.pny-title, #section-title h1.pny-title span {
		font-size: 48px; line-height: 44px;
	}
}
