/**
 * RSI Toolkit — Project Panels.
 *
 * Design from Figma nodes 10869:506 / 10915:508 / 10915:535 / 10915:562: a
 * full-bleed photograph, a dark gradient over it, and content on the reading edge
 * at the foot — brand mark, title, paragraph, glass play + "visit site" pill.
 *
 * ── The motion, measured off the reference ──────────────────────────────────
 *
 * The client's reference is floema.com/en. Read off that page rather than
 * guessed, and every number below came from it:
 *
 *   1. ONE sticky stage, pinned for the whole section. Its `.collections-wrapper`
 *      holds position:sticky and stays at top 0 for all 8100px of the section.
 *      The panels themselves never translate — measured `transform: none` on every
 *      one of them at every scroll position.
 *
 *   2. Each photograph is revealed by a CLIP CURTAIN wiping upward from the
 *      bottom: `clip-path: inset(P% 0px 0px)` with P driven from 100 → 0 by
 *      scroll. That is what "loads from the bottom" actually is on that site —
 *      not a panel sliding over the one before, and there is no shadow anywhere
 *      on it. Measured rate: 4.27% per 100px of scroll, so ~2340px per panel,
 *      against a 1440px slot — consecutive curtains deliberately overlap.
 *
 *   3. Inside the curtain the image drifts up and grows a little the whole time
 *      it is on screen: translateY 0 → -180px with scale 1 → 1.03, both capped.
 *      Measured on three panels at once (-30/-120/-180 with 1.005/1.02/1.03).
 *
 *   4. The line is ONE full-viewport-width hairline, rgba(255,255,255,.2), with a
 *      fill inside it whose WIDTH runs 0% → 100% linearly across the entire
 *      section from the leading edge. Continuous, not stepped, and not a marker
 *      that hops between numbers.
 *
 *   5. The number does not travel along the line. All of them sit stacked in one
 *      place on the gutter and simply swap, with a small vertical roll on the
 *      change (measured mid-swap as scaleY 1.0027 / translateY -0.14px).
 *
 * Logical properties throughout, so Arabic mirrors with no rtl.css entry — the
 * fill grows from the right in Arabic because it is anchored inline-start.
 *
 * Nothing is hidden unless <html> carries `rsi-anim`, which an inline head
 * snippet sets and a failsafe removes if the scripts never start: with no JS this
 * is a stack of readable photographs, never an empty black box.
 */

/* ==================== THE HEADER ON THIS PAGE ONLY ======================= */
/*
 * The language switch is invisible on the Projects page, and it is not this
 * page's fault so much as its background.
 *
 * The theme's own Custom CSS (an inline <style>, not a file) paints the chip for a
 * dark hero:
 *
 *   .whb-header .lang-item > a {
 *     color: #fff; background: rgba(255,255,255,.08);
 *     border: 1px solid rgba(255,255,255,.55);
 *   }
 *
 * Every other page opens on a photograph or video, so white-on-dark reads. This
 * page opens on the collage, which sits on white — so the chip is white text on a
 * white page and simply is not there. The menu links beside it are #333 and were
 * always fine, which is why only the chip went missing.
 *
 * Scoped to the two Projects pages by id — 51 English, 249 Arabic — because that
 * is exactly what was asked for and because the site-wide chip is correct
 * everywhere else. If another light-topped page appears, add its id here rather
 * than making this global.
 *
 * The theme's rule is (0,2,1); prefixing the body class takes these to (0,3,2), so
 * they win on specificity and do not depend on which stylesheet loads last.
 *
 * ⚠️ `!important` on the COLOUR only, and not by choice: the theme's inline rule
 * declares `color: #fff !important`. Without matching it the fill and the border
 * changed and the text stayed white — measured at a contrast ratio of 1.0 against
 * the page. Specificity still decides between two !important declarations, so this
 * wins on the body-class prefix. The fill and border need no such help.
 *
 * The inner <span class="nav-link-text"> is covered too: it inherits, but the theme
 * has been known to colour that span directly, and inheritance cannot beat a rule.
 */
body.page-id-51 .whb-header .lang-item > a,
body.page-id-249 .whb-header .lang-item > a,
body.page-id-51 .whb-header .lang-item > a .nav-link-text,
body.page-id-249 .whb-header .lang-item > a .nav-link-text {
	color: #0a0a0a !important;
}

body.page-id-51 .whb-header .lang-item > a,
body.page-id-249 .whb-header .lang-item > a {
	background: rgba(10, 10, 10, .04);
	border: 1px solid rgba(10, 10, 10, .28);
}

body.page-id-51 .whb-header .lang-item > a:hover,
body.page-id-249 .whb-header .lang-item > a:hover,
body.page-id-51 .whb-header .lang-item > a:focus-visible,
body.page-id-249 .whb-header .lang-item > a:focus-visible {
	background: rgba(10, 10, 10, .08);
	border-color: rgba(10, 10, 10, .5);
}

.rsi-pp {
	--rsi-pp-h: 100vh;
	--rsi-pp-step: 180vh;
	--rsi-pp-scrim-top: 20;
	--rsi-pp-scrim-bottom: 47;
	--rsi-pp-ink: #ffffff;
	/*
	 * The parallax, straight off the reference: how far the photo travels up while
	 * it is on screen, and how much it grows doing it. Positive — it is a distance.
	 * The JS reads this value so the travel and the oversize below can never
	 * disagree.
	 */
	--rsi-pp-drift: 180px;
	--rsi-pp-zoom: 1.03;

	position: relative;
	/*
	 * The scroll track. The stage inside is one screen tall and pinned, so the
	 * section's own height is what gives the sequence somewhere to happen: one
	 * step per panel. The reference uses 1.8 screens per panel (8100px for five
	 * at 900px tall); this defaults to the same and is a control.
	 */
	height: calc(var(--rsi-pp-n, 1) * var(--rsi-pp-step));
}

/*
 * Pinned for the whole section, and edge to edge whatever it is sitting in.
 *
 * The width does not rely on the theme's section-stretch: --rsi-pp-vw is the
 * document's client width and --rsi-pp-off is this element's own distance from
 * the left of the screen, both fed by the JS, so the stage pulls itself out to
 * the full screen even if the container around it is a normal boxed one. Both
 * default to a no-op. Physical margin-left on purpose — the offset is measured
 * physically, so the same value is correct in Arabic.
 *
 * 100vw is deliberately NOT used: it includes the scrollbar and would put a
 * horizontal scrollbar on the page.
 *
 * overflow:hidden belongs here and nowhere above it — a clipping ancestor would
 * kill the sticky outright.
 */
.rsi-pp__stage {
	position: sticky;
	top: 0;
	width: var(--rsi-pp-vw, 100%);
	margin-left: var(--rsi-pp-off, 0px);
	height: var(--rsi-pp-h);
	overflow: hidden;
	background-color: #0a1626;
	color: var(--rsi-pp-ink);
}

/*
 * Full-screen height, and the reason it is not simply 100vh: on a phone 100vh is
 * the LARGE viewport, the one that assumes the browser's toolbars are hidden. A
 * 100vh slide therefore runs under the toolbar and the number and line at its
 * foot are cut off — the slide does not cover the screen the way it looks like it
 * should.
 *
 * dvh is the dynamic viewport and tracks the visible area natively, with no
 * resize handler and no jitter. The JS also writes this inline, which is what
 * actually beats Elementor's generated CSS; this rule is the no-JS fallback.
 */
@supports (height: 100dvh) {
	.rsi-pp[data-rsi-pp-full] {
		--rsi-pp-h: 100dvh;
	}
}

.elementor-widget-rsi_project_panel,
.elementor-widget-rsi_project_panel > .elementor-widget-container,
.rsi-pp {
	overflow: visible;
}

/* Every panel fills the stage and they stack in DOM order, so a later panel
   paints over an earlier one with no z-index needed. */
.rsi-pp__panel {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: 32px;
	padding: 0 32px 180px;
	/*
	 * ⚠️ Every panel is a full-stage box sitting on top of the ones before it, so
	 * without this the LAST panel swallows every click and the play button and CTA
	 * on the panel you are actually looking at do nothing. Confirmed with
	 * elementFromPoint: on panel 02 the top element at the button's own centre was
	 * panel 04.
	 *
	 * The photograph is clipped by clip-path, which does remove the clipped area
	 * from hit-testing — but that is on .rsi-pp__media, not on this box, and this
	 * box is transparent and full-size regardless.
	 */
	pointer-events: none;
}

/* Only the panel whose copy is up can be clicked — which is exactly the panel
   whose controls are on screen. */
.rsi-pp__panel.is-copy {
	pointer-events: auto;
}

/* -------------------------------- photo --------------------------------- */
/*
 * The curtain. inset() from the top means the bottom edge is revealed first and
 * the image opens upward, which is the reference's reveal exactly. --rsi-pp-clip
 * is fed per panel by the JS; the default leaves a panel closed, and panel 01 is
 * opened by the JS on the first frame.
 */
.rsi-pp__media {
	position: absolute;
	inset: 0;
	overflow: hidden;
	pointer-events: none;
	clip-path: inset(var(--rsi-pp-clip, 0%) 0 0 0);
}

/* Two classes: Elementor ships `.elementor img { height: auto }` at 0,1,1, which
   beats a single class and would collapse this to its intrinsic ratio. */
.rsi-pp__media .rsi-pp__img {
	display: block;
	width: 100%;
	/*
	 * Taller than its box by exactly the drift distance, and this is not optional.
	 * The photo travels UP by up to --rsi-pp-drift; at 100% tall it drags its own
	 * bottom edge into view and leaves a band of bare stage colour under it —
	 * measured at up to 167px, and 79px even at the top of the section, which reads
	 * as a black strip when you scroll back up.
	 *
	 * The surplus hangs below the box and is clipped by .rsi-pp__media until the
	 * drift pulls it in, so the frame is covered at every point of the travel.
	 */
	height: calc(100% + var(--rsi-pp-drift));
	object-fit: cover;
	object-position: center;
	/* The drift itself. Both values come from the JS as it tracks scroll. */
	transform: translate3d(0, var(--rsi-pp-dy, 0px), 0) scale(var(--rsi-pp-sc, 1));
	will-change: transform;
}

/* Figma: black 0.2 at the top through 0.39 at 55% to 0.47 at the foot. The
   middle stop matters — a straight two-stop ramp goes too dark too early and
   muddies the middle of the photograph. */
.rsi-pp__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(
		to bottom,
		rgba(0, 0, 0, calc(var(--rsi-pp-scrim-top) / 100)) 0%,
		rgba(0, 0, 0, .39) 55%,
		rgba(0, 0, 0, calc(var(--rsi-pp-scrim-bottom) / 100)) 100%
	);
}

/* ------------------------------- content -------------------------------- */
/*
 * Only the current panel's copy is on screen. The panels are stacked in the same
 * box, so without this every title would sit on top of every other one — and on
 * the reference the copy swaps with the active collection rather than riding the
 * curtain.
 */
.rsi-pp__inner {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 32px;
	width: 100%;
	max-width: 1350px;
	margin-inline: auto;
	opacity: 0;
	visibility: hidden;
	transition: opacity .5s ease, visibility .5s ease;
}

/*
 * is-copy, not is-current. The two differ on purpose: the current panel owns the
 * number for its whole slot, but its copy comes down early — before the next
 * curtain reaches the foot of the screen where the copy lives.
 */
.rsi-pp__panel.is-copy .rsi-pp__inner {
	opacity: 1;
	visibility: visible;
}

.rsi-pp__top {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 24px;
	width: 100%;
	text-align: start;
}

/* Height from the panel (--rsi-pp-logo-h) because the four marks are different
   shapes; width follows the artwork. Two classes to beat `.elementor img`. */
.rsi-pp__top .rsi-pp__logo {
	display: block;
	width: auto;
	height: var(--rsi-pp-logo-h, 65px);
	/* The mark is a dark-on-transparent SVG in the export; on a photograph it
	   needs to read as white. */
	filter: brightness(0) invert(1);
}

.rsi-pp__headline {
	display: flex;
	flex-direction: column;
	gap: 12px;
	width: 100%;
	max-width: 640px;
	text-align: start;
}

/* Type from the shared scale: H3 for the title, and the design's own body-small
   for the paragraph — deliberately smaller than page body copy, because it sits
   over an image and a longer measure would fight the photo. */
.rsi-pp__title {
	margin: 0;
	font-family: 'Alexandria', sans-serif;
	font-weight: 700;
	font-size: 24px;
	line-height: 41px;
	color: var(--rsi-pp-ink);
	text-align: start;
}

.rsi-pp__text {
	margin: 0;
	font-family: 'Alexandria', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 21px;
	letter-spacing: .25px;
	color: var(--rsi-pp-ink);
	text-align: start;
}

/* ------------------------------- actions -------------------------------- */
.rsi-pp__actions {
	display: flex;
	align-items: center;
	gap: 16px;
}

/* The frosted-glass treatment from the design: a translucent white fill, a
   hairline border and a backdrop blur, so it reads as glass over the photo
   rather than as a solid chip. */
.rsi-pp .rsi-pp__play,
.rsi-pp .rsi-pp__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	/* The Figma draws the play chip 40px across INCLUDING its hairline border.
	   Without this the border is added on top and it measures 42. */
	box-sizing: border-box;
	background: rgba(255, 255, 255, .08);
	border: 1px solid rgba(255, 255, 255, .2);
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
	color: var(--rsi-pp-ink);
	text-decoration: none;
	box-shadow: none;
	cursor: pointer;
	transition: background .25s ease, border-color .25s ease;
}

/*
 * ⚠️ The play control is a real <button>, and Woodmart styles buttons BY TAG —
 * it was arriving with the theme's `padding: 5px 20px`, which pushed the chip to
 * 42px and off-centre. Everything the theme puts on a button has to be undone
 * here; the widget's own note about `role="button"` on the CTA is the same trap
 * seen from the other side.
 */
.rsi-pp .rsi-pp__play {
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	/* The theme also lands a min-height of 42px on buttons, which wins over
	   `height` — so both have to be stated. */
	min-width: 0;
	min-height: 40px;
	margin: 0;
	padding: 0;
	line-height: 1;
	border-radius: 999px;
	text-transform: none;
	letter-spacing: normal;
}

.rsi-pp__play img {
	width: 18px;
	height: 18px;
	filter: brightness(0) invert(1);
}

.rsi-pp .rsi-pp__cta {
	padding: 12px 16px;
	border-radius: 16px;
	font-family: 'Alexandria', sans-serif;
	font-weight: 700;
	font-size: 12px;
	line-height: 14.5px;
	letter-spacing: .4px;
	white-space: nowrap;
}

.rsi-pp .rsi-pp__play:hover,
.rsi-pp .rsi-pp__cta:hover,
.rsi-pp .rsi-pp__play:focus-visible,
.rsi-pp .rsi-pp__cta:focus-visible {
	background: rgba(255, 255, 255, .16);
	border-color: rgba(255, 255, 255, .38);
	outline: none;
}

/* ============================= THE PLAYER ================================ */
/*
 * Opened by the glass play button next to the CTA, and dressed in the same
 * language the Figma gives those two controls: translucent white fill, hairline
 * white border, 8px backdrop blur, the CTA's 16px radius.
 *
 * Appended to <body> by the JS rather than living inside the panel. The stage is
 * `overflow: hidden` and sticky, so a player inside it would be clipped, and
 * position:fixed cannot be trusted inside a subtree that any theme or plugin
 * might give a transform to — that silently turns fixed into "fixed to that
 * element".
 */
.rsi-pp-video {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
	/* Nearly opaque: the panels behind are photographs, and a light scrim leaves
	   them competing with the video. */
	background: rgba(6, 12, 20, .92);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	opacity: 0;
	transition: opacity .3s ease;
}

.rsi-pp-video.is-open {
	opacity: 1;
}

/*
 * The companion to `display: flex` above, and not optional.
 *
 * An author rule for `display` beats the UA stylesheet's `[hidden]{display:none}`
 * whatever the specificity — origin wins before specificity is even consulted.
 * Without this, the overlay that closePlayer() marks hidden stays laid out at
 * inset:0 / z-index:100000 with opacity:0: invisible, still hit-testable, and
 * every click anywhere on the page lands on it. Measured before the fix —
 * elementFromPoint(720,450) returned .rsi-pp-video__frame — which is why the
 * whole page went dead after watching one video and closing it.
 *
 * The rule for this codebase: any element JS hides with the `hidden` attribute
 * needs its own `[hidden]{display:none}` companion whenever a class on it sets
 * `display`. careers.css:327 carries the twin of this rule against the same
 * trap — two copies on purpose, one per widget; don't delete either as a
 * duplicate.
 */
.rsi-pp-video[hidden] {
	display: none;
}

/* And nothing hit-tests it during the 300ms fade-out either, before the hidden
   attribute goes back on. */
.rsi-pp-video:not(.is-open) {
	pointer-events: none;
}

/*
 * The stage carries the size and is the thing the close chip positions against.
 * It must NOT clip: the chip sits above the frame, and as a child of the frame —
 * which has to clip, to round the video's corners — it was cut away entirely,
 * invisible and unclickable.
 */
.rsi-pp-video__stage {
	position: relative;
	width: 100%;
	max-width: 1200px;
	margin: 0 auto;
}

/* 16:9 and never taller than the screen, so a phone in portrait shows the whole
   frame instead of cropping it. */
.rsi-pp-video__frame {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	max-height: calc(100vh - 48px);
	overflow: hidden;
	border-radius: 16px;
	background: #000;
	box-shadow: 0 30px 80px -20px rgba(0, 0, 0, .8);
}

/* No aspect-ratio support: 56.25% of the width is the same 16:9. */
@supports not (aspect-ratio: 16 / 9) {
	.rsi-pp-video__frame::before {
		content: "";
		display: block;
		padding-top: 56.25%;
	}
}

.rsi-pp-video__frame iframe,
.rsi-pp-video__frame video {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
	background: #000;
}

/*
 * The close control, the same glass chip as the play button — but a little more
 * present than the 8% fill the Figma uses on a photograph. Here it sits on a
 * near-black scrim, where 8% on 20% is almost invisible, and the one control that
 * must always be findable is the one that gets you out.
 *
 * Logical inset so it sits on the trailing edge in both languages, and the same
 * min-height/padding reset as the play chip because Woodmart styles buttons by tag.
 */
.rsi-pp-video .rsi-pp-video__close {
	position: absolute;
	top: -52px;
	inset-inline-end: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: 40px;
	height: 40px;
	min-width: 0;
	min-height: 40px;
	margin: 0;
	padding: 0;
	line-height: 1;
	background: rgba(255, 255, 255, .14);
	border: 1px solid rgba(255, 255, 255, .35);
	border-radius: 999px;
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
	box-shadow: none;
	color: #ffffff;
	cursor: pointer;
	transition: background .25s ease, border-color .25s ease;
}

.rsi-pp-video .rsi-pp-video__close:hover,
.rsi-pp-video .rsi-pp-video__close:focus-visible {
	background: rgba(255, 255, 255, .26);
	border-color: rgba(255, 255, 255, .55);
	outline: none;
}

.rsi-pp-video__close svg {
	width: 18px;
	height: 18px;
	display: block;
}

/* Under ~700px tall there is no room above the frame for the close chip, so it
   moves over the frame's top corner. Still a child of the stage, not the frame,
   so it is not clipped — and lifted above the media. */
@media (max-height: 700px), (max-width: 560px) {
	.rsi-pp-video .rsi-pp-video__close {
		top: 8px;
		inset-inline-end: 8px;
		z-index: 2;
	}
}

@media (prefers-reduced-motion: reduce) {
	.rsi-pp-video {
		transition: none;
	}
}

/* =========================== NUMBER + LINE =============================== */
/*
 * Inside the stage, so it is pinned with it. The line runs the full width of the
 * stage edge to edge — on the reference it measures 1453px in a 1440px viewport,
 * i.e. deliberately past both edges — while the number sits on the page gutter.
 */
.rsi-pp__nav {
	position: absolute;
	inset-inline: 0;
	bottom: 40px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	pointer-events: none;
}

.rsi-pp__count {
	position: relative;
	/* One line of the number's own type, since the numbers are stacked on top of
	   each other and only one is ever shown. */
	height: 27px;
}

.rsi-pp__index {
	position: absolute;
	inset-inline-start: 32px;
	top: 0;
	font-family: 'Alexandria', sans-serif;
	font-weight: 400;
	font-size: 16px;
	line-height: 27px;
	letter-spacing: .5px;
	color: var(--rsi-pp-ink);
	/* Keeps "01" as one run without a dir attribute — dir="ltr" here would make
	   inset-inline-start resolve to the LEFT in Arabic, which is exactly the bug
	   this replaced. */
	unicode-bidi: isolate;
	/* The roll: the outgoing number lifts away and the incoming one arrives from
	   just below. Small — on the reference it is barely more than a nudge. */
	opacity: 0;
	transform: translateY(6px);
	transition: opacity .4s ease, transform .4s cubic-bezier(.22, .61, .36, 1);
}

.rsi-pp__index.is-current {
	opacity: 1;
	transform: none;
}

.rsi-pp__index.is-past {
	opacity: 0;
	transform: translateY(-6px);
}

.rsi-pp__line {
	position: relative;
	width: 100%;
	height: 1px;
	background: rgba(255, 255, 255, .2);
}

/*
 * The fill. Its WIDTH is the section's scroll progress — the reference sets an
 * inline `width: X%` on exactly this element and runs it 0 → 100 linearly, so it
 * grows continuously rather than hopping between stops.
 *
 * inset-inline-start, not left: in Arabic the line reads from the right and the
 * fill has to grow the other way.
 */
.rsi-pp__fill {
	position: absolute;
	inset-inline-start: 0;
	top: 0;
	height: 1px;
	width: calc(var(--rsi-pp-p, 0) * 100%);
	background: var(--rsi-pp-ink);
}

/* ------------------------------- desktop -------------------------------- */
@media (min-width: 768px) {
	.rsi-pp__panel {
		padding: 0 64px 172px;
		gap: 40px;
	}

	.rsi-pp__title {
		font-size: 34px;
		line-height: 46px;
	}

	.rsi-pp__text {
		font-size: 16px;
		line-height: 27px;
	}

	.rsi-pp__nav {
		bottom: 44px;
	}

	.rsi-pp__index {
		inset-inline-start: 64px;
	}
}

/* ================================ MOTION ================================= */
/*
 * The curtain and the drift are positions, not animations: both are recomputed
 * from scroll every frame, so they track the finger and cannot desynchronise.
 * The short transitions here only smooth the gaps between rAF samples.
 */
html.rsi-anim .rsi-pp__media {
	transition: clip-path .12s linear;
}

/* Content still arrives in the staggered order it is written in. --rsi-pp-d is
   fed per element by the JS rather than by nth-child rules. */
html.rsi-anim .rsi-pp__panel [data-rsi-reveal] {
	opacity: 0;
	transform: translateY(18px);
}

html.rsi-anim .rsi-pp__panel.is-copy [data-rsi-reveal] {
	opacity: 1;
	transform: none;
	transition: opacity .8s cubic-bezier(.22, .61, .36, 1) var(--rsi-pp-d, 0s),
	            transform .8s cubic-bezier(.22, .61, .36, 1) var(--rsi-pp-d, 0s);
}

@media (prefers-reduced-motion: reduce) {
	html.rsi-anim .rsi-pp__panel [data-rsi-reveal] {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}

	.rsi-pp__media .rsi-pp__img {
		transform: none !important;
	}

	html.rsi-anim .rsi-pp__media {
		transition: none;
	}

	.rsi-pp__index {
		transition: none;
	}
}
