/* =============================================================================
   PARTY WEAR COLLECTION
   A campaign landing page: large imagery, deliberately sparse copy and just
   enough interaction to make the collection feel alive without becoming a
   catalogue. The template owns these rules; shared navigation/footer rules
   remain in style.css.
   ============================================================================= */

body.ec-partywear-page {
	background: #f3ede7;
	color: #211915;
}

body.ec-partywear-page .ec-announce { display: none; }

/* The shared masthead stays structurally identical. It is merely held over
   the campaign image and gains a quiet backing once the visitor has scrolled. */
body.ec-partywear-page .ec-header {
	position: fixed;
	top: 0;
	inset-inline: 0;
	z-index: 100;
	background: transparent;
	border-bottom-color: transparent;
	color: #fffaf3;
	transition: background-color .42s ease, border-color .42s ease, box-shadow .42s ease;
}
/* The Party Wear hero header is fixed, so it must explicitly clear the
   WordPress admin bar. Without this more-specific offset, the brand moves
   underneath the bar as soon as the visitor scrolls. */
body.admin-bar.ec-partywear-page .ec-header { top: 32px; }

/* The control is injected for the mobile menu, but must never occupy the
   desktop masthead. Its mobile rules below explicitly make it visible. */
.ec-partywear-menu-close { display: none; }

@media screen and (max-width: 782px) {
	body.admin-bar.ec-partywear-page .ec-header { top: 46px; }
}

body.ec-partywear-page .ec-header.is-partywear-scrolled {
	background: rgba(15, 10, 9, .88);
	border-bottom-color: rgba(255, 248, 238, .17);
	box-shadow: 0 8px 26px rgba(0, 0, 0, .12);
	-webkit-backdrop-filter: blur(13px);
	backdrop-filter: blur(13px);
}

body.ec-partywear-page .ec-header .ec-brand,
body.ec-partywear-page .ec-header .ec-brand:hover,
body.ec-partywear-page .ec-header .ec-brand__tag,
body.ec-partywear-page .ec-header .ec-nav__link,
body.ec-partywear-page .ec-header .ec-action,
body.ec-partywear-page .ec-header .ec-action__count,
body.ec-partywear-page .ec-header .ec-navtoggle { color: #fffaf3; }

body.ec-partywear-page .ec-header .ec-brand__mark::before { filter: brightness(0) invert(1); }
body.ec-partywear-page .ec-header .ec-nav__link:hover,
body.ec-partywear-page .ec-header .ec-nav__link:focus-visible,
body.ec-partywear-page .ec-header .ec-action:hover,
body.ec-partywear-page .ec-header .ec-action:focus-visible { color: #fffaf3; opacity: .72; }

/* Party Wear navigation uses Linen's same calm Collections panel and link
   treatment. Product names remain live WooCommerce data; only the navigation
   presentation is shared. */
.ec-nav--partywear .ec-partywear-mega {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(32px, 5vw, 74px);
	border-top-color: rgba(52, 52, 46, .18);
	background: #faf7f0;
}
.ec-nav--partywear .ec-partywear-mega__title {
	display: inline-block;
	color: #788373;
	text-decoration: none;

	/*
	 * Up from the shared .ec-mega__title (11px/16px), matching Linen's panel.
	 * The heading is the only thing marking where a group starts now that the
	 * closing link is gone, and at 11px it sat SMALLER than the 14px product
	 * names beneath it — a group title reading as less important than its own
	 * contents. Longhands rather than the `font` shorthand, so a font custom
	 * property that fails to resolve in the header can never take the size
	 * down with it.
	 */
	font-size: 16px;
	line-height: 22px;
}
.ec-nav--partywear .ec-partywear-mega__title:hover,
.ec-nav--partywear .ec-partywear-mega__title:focus-visible { color: #34342e; }
.ec-nav--partywear .ec-partywear-mega .ec-mega__link { color: #34342e; }
.ec-nav--partywear .ec-partywear-mega .ec-mega__link:hover,
.ec-nav--partywear .ec-partywear-mega .ec-mega__link:focus-visible { color: #788373; }

.ec-partywear {
	--pw-ink: #211915;
	--pw-espresso: #120d0b;
	--pw-ivory: #f7f1eb;
	--pw-blush: #e8d6cf;
	--pw-wine: #4a181c;
	--pw-gold: #c9a77e;
	--pw-rule: rgba(42, 27, 21, .24);
	--pw-gutter: clamp(22px, 5.4vw, 92px);
	--pw-serif: var(--ec-font-display, Georgia, serif);
	background: var(--pw-ivory);
	overflow: clip;
}

.ec-pw-shell { width: min(100%, 1520px); margin-inline: auto; padding-inline: var(--pw-gutter); }
.ec-pw-kicker { margin: 0; font: 500 10px / 1.25 var(--ec-font-text); letter-spacing: .24em; text-transform: uppercase; }
.ec-pw-display { margin: 0; font: 400 clamp(42px, 5.55vw, 96px) / 1.01 var(--pw-serif); letter-spacing: -.035em; }
.ec-pw-button,
.ec-pw-text-link { text-decoration: none; }

.ec-pw-button {
	display: inline-flex;
	align-items: center;
	justify-content: space-between;
	gap: 22px;
	min-height: 51px;
	padding: 0 20px;
	border: 1px solid currentColor;
	font: 500 10px / 1 var(--ec-font-text);
	letter-spacing: .18em;
	text-transform: uppercase;
	transition: color .38s ease, background-color .38s ease, border-color .38s ease, transform .38s cubic-bezier(.22, 1, .36, 1);
}

.ec-pw-button i,
.ec-pw-text-link i,
.ec-pw-look i,
.ec-pw-product i,
.ec-pw-mood i { font-style: normal; transition: transform .35s cubic-bezier(.22, 1, .36, 1); }
.ec-pw-button:hover,
.ec-pw-button:focus-visible { transform: translateY(-2px); }
.ec-pw-button:hover i,
.ec-pw-button:focus-visible i,
.ec-pw-text-link:hover i,
.ec-pw-text-link:focus-visible i,
.ec-pw-look:hover i,
.ec-pw-look:focus-visible i,
.ec-pw-product a:hover i,
.ec-pw-product a:focus-visible i,
.ec-pw-mood:hover i,
.ec-pw-mood:focus-visible i { transform: translateX(5px); }

.ec-pw-button--light { color: #fffaf3; background: rgba(255, 250, 243, .07); -webkit-backdrop-filter: blur(7px); backdrop-filter: blur(7px); }
.ec-pw-button--light:hover,
.ec-pw-button--light:focus-visible { color: var(--pw-espresso); background: #fffaf3; border-color: #fffaf3; }

.ec-pw-hero {
	position: relative;
	display: grid;
	min-height: 100svh;
	min-height: max(680px, 100svh);
	color: #fffaf3;
	background: #170c09;
	isolation: isolate;
	overflow: hidden;
}

.ec-pw-hero__media,
.ec-pw-final__media { position: absolute; inset: -4%; z-index: -3; overflow: hidden; }
.ec-pw-hero__media { transform: translate3d(var(--pw-hero-x, 0px), calc(var(--pw-hero-y, 0px) + var(--pw-pointer-y, 0px)), 0) scale(var(--pw-hero-scale, 1)); will-change: transform; }
.ec-pw-hero__media img,
.ec-pw-hero__media video,
.ec-pw-final__media img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.ec-pw-hero__media img,
.ec-pw-hero__media video { transform: scale(1.095); filter: blur(4px); clip-path: inset(0 100% 0 0); animation: pw-hero-image 1.75s cubic-bezier(.76, 0, .24, 1) .06s forwards; }
.ec-pw-hero__media img { object-position: 69% center; }
.ec-pw-hero__wash { position: absolute; inset: 0; z-index: -2; background: linear-gradient(90deg, rgba(10, 6, 5, .89) 0%, rgba(10, 6, 5, .58) 31%, rgba(10, 6, 5, .15) 65%, rgba(10, 6, 5, .28) 100%); }

.ec-pw-hero__inner { align-self: center; padding-top: 128px; padding-bottom: 98px; }
.ec-pw-hero__inner .ec-pw-kicker { margin-bottom: 19px; opacity: 0; animation: pw-hero-copy .8s cubic-bezier(.22, 1, .36, 1) .7s forwards; }
.ec-pw-hero__title { max-width: 640px; margin: 0 0 37px; font: 400 clamp(78px, 11.4vw, 188px) / .93 var(--pw-serif); letter-spacing: -.045em; text-transform: uppercase; overflow: hidden; }
.ec-pw-hero__title { opacity: 0; filter: blur(5px); transform: translateY(48px); animation: pw-hero-copy 1.05s cubic-bezier(.22, 1, .36, 1) .82s forwards; }
.ec-pw-hero__inner .ec-pw-button { opacity: 0; transform: translateY(21px); animation: pw-hero-copy .78s cubic-bezier(.22, 1, .36, 1) 1.16s forwards; }
.ec-pw-hero__scroll { position: absolute; right: var(--pw-gutter); bottom: 37px; display: flex; align-items: center; gap: 11px; margin: 0; font: 500 9px / 1 var(--ec-font-text); letter-spacing: .16em; text-transform: uppercase; opacity: .83; }
.ec-pw-hero__scroll span { display: block; width: 34px; height: 1px; background: currentColor; transform-origin: left; animation: pw-scroll-line 1.8s ease-in-out infinite; }

.ec-pw-intro__portrait[data-pw-parallax],
.ec-pw-glamour__image[data-pw-parallax],
.ec-pw-look__media[data-pw-parallax] { transform: translate3d(0, var(--pw-parallax-y, 0px), 0); will-change: transform; }

.ec-pw-partition { padding-block: 0; background: var(--pw-ivory); overflow: hidden; }
.ec-pw-partition__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; min-height: min(52vw, 710px); overflow: hidden; background: rgba(57, 35, 28, .22); }
.ec-pw-partition__panel { min-width: 0; overflow: hidden; background: #e5d5ce; }
.ec-pw-partition__panel:nth-child(2) { background: #d1b8ac; }
.ec-pw-partition__panel img { width: 100%; height: 100%; object-fit: cover; object-position: center 35%; display: block; }
.ec-pw-partition__panel:nth-child(2) img { object-position: center 31%; }
/* The supplied campaign portraits have deliberate headroom.  Bias the crop
   upward so the model's face and raised arm remain visible in the wide tiles. */
.ec-pw-partition__image--red { object-position: center 12% !important; }
.ec-pw-partition__image--black { object-position: center 8% !important; }

.ec-pw-intro {
	display: grid;
	grid-template-columns: minmax(280px, .84fr) minmax(330px, 1fr);
	align-items: center;
	gap: clamp(42px, 10vw, 190px);
	padding-top: clamp(88px, 13vw, 200px);
	padding-bottom: clamp(100px, 15vw, 225px);
}
.ec-pw-intro__portrait { width: min(100%, 510px); aspect-ratio: .76; overflow: hidden; background: var(--pw-blush); }
.ec-pw-intro__portrait img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.ec-pw-intro__copy { max-width: 550px; padding-top: clamp(0px, 7vw, 112px); }
.ec-pw-intro__copy .ec-pw-kicker { margin-bottom: 26px; color: #865e50; }
.ec-pw-intro__copy .ec-pw-display { margin-bottom: 34px; }
.ec-pw-intro__copy > p:not(.ec-pw-kicker),
.ec-pw-section-head > p,
.ec-pw-glamour__copy > p:not(.ec-pw-kicker) { max-width: 400px; margin: 0; color: rgba(33, 25, 21, .72); font: 400 16px / 1.65 var(--ec-font-text); }
.ec-pw-line { display: block; width: 116px; height: 1px; margin-top: 43px; background: #a98166; transform-origin: left; }

.ec-pw-looks { padding-block: clamp(44px, 5vw, 72px) clamp(46px, 5vw, 74px); color: var(--pw-ink); background: var(--pw-ivory); }
.ec-pw-section-head { display: flex; align-items: end; justify-content: space-between; gap: 42px; margin-bottom: clamp(35px, 5vw, 70px); }
.ec-pw-section-head .ec-pw-kicker { margin-bottom: 20px; color: #9a7259; }
.ec-pw-looks .ec-pw-section-head > p { color: rgba(33, 25, 21, .66); text-align: right; }
.ec-pw-lookrail { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(12px, 1.25vw, 22px); padding-inline: var(--pw-gutter); }
.ec-pw-look { display: grid; gap: 15px; min-width: 0; color: var(--pw-ink); text-decoration: none; }
.ec-pw-look__media { position: relative; display: block; aspect-ratio: 2 / 3; overflow: hidden; background: #e2d2c7; }
.ec-pw-look__media img { width: 100%; height: 100%; object-fit: cover; object-position: center; transition: transform 1s cubic-bezier(.22, 1, .36, 1), filter .8s ease; }
.ec-pw-look:nth-child(1) img { object-position: 51% center; }
.ec-pw-look:nth-child(2) img { object-position: center 42%; }
.ec-pw-look:nth-child(3) img { object-position: center; }
.ec-pw-look:nth-child(4) img { object-position: center; }
.ec-pw-look__shade { display: none; }
.ec-pw-look__copy { display: grid; gap: 6px; padding: 0 2px; }
.ec-pw-look__copy small,
.ec-pw-look__copy em { font: 500 9px / 1.3 var(--ec-font-text); letter-spacing: .17em; text-transform: uppercase; font-style: normal; }
.ec-pw-look__copy small { color: #926c56; }
.ec-pw-look__copy strong { font: 400 clamp(22px, 2vw, 34px) / .98 var(--pw-serif); letter-spacing: -.04em; }
.ec-pw-look__copy em { display: flex; align-items: center; gap: 8px; margin-top: 4px; color: rgba(33, 25, 21, .72); transform: translateY(0); transition: color .35s ease, gap .35s cubic-bezier(.22, 1, .36, 1); }
.ec-pw-look:hover .ec-pw-look__media img,
.ec-pw-look:focus-visible .ec-pw-look__media img { transform: scale(1.035); filter: brightness(1.035); }
.ec-pw-look:hover .ec-pw-look__copy em,
.ec-pw-look:focus-visible .ec-pw-look__copy em { color: var(--pw-ink); gap: 13px; }

.ec-pw-marquee { overflow: hidden; border-block: 1px solid rgba(33,25,21,.13); color: #746f5d; background: #f3f0eb; }
.ec-pw-marquee__track { display: flex; width: max-content; animation: pw-marquee 27s linear infinite; will-change: transform; }
.ec-pw-marquee__track p { flex: 0 0 auto; margin: 0; padding: 32px 44px 32px 0; font: 500 clamp(15px, 1.55vw, 25px) / 1 var(--ec-font-text); letter-spacing: .17em; text-transform: uppercase; white-space: nowrap; }

.ec-pw-film { overflow: hidden; background: #1a0f0c; }
.ec-pw-film__media { width: min(100%, 1520px); height: clamp(380px, 46vw, 660px); margin-inline: auto; overflow: hidden; background: #1a0f0c; }
.ec-pw-film__media video { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }

.ec-pw-glamour { padding-block: clamp(96px, 14vw, 220px); background: #efe5de; }
.ec-pw-glamour__grid { position: relative; display: grid; grid-template-columns: .9fr .92fr 1.18fr; grid-template-rows: auto minmax(250px, 29vw) minmax(220px, 18vw); align-items: start; }
.ec-pw-glamour__copy { grid-column: 1 / span 2; width: min(100%, 595px); padding: 4vw 5vw 5vw 2vw; }
.ec-pw-glamour__copy .ec-pw-kicker { margin-bottom: 22px; color: #865e50; }
.ec-pw-glamour__copy .ec-pw-display { margin-bottom: 30px; }
.ec-pw-glamour__image { margin: 0; overflow: hidden; background: #d9c5bb; }
.ec-pw-glamour__image img,
.ec-pw-glamour__image video { width: 100%; height: 100%; object-fit: cover; }
.ec-pw-glamour__image--one { grid-column: 3; grid-row: 1 / span 2; height: min(48vw, 680px); margin-top: -2vw; }
.ec-pw-glamour__image--two { grid-column: 1; grid-row: 2 / span 2; width: min(100%, 390px); height: min(37vw, 545px); margin-left: 5.5vw; }
.ec-pw-glamour__image--three { grid-column: 2 / span 2; grid-row: 3; width: min(100%, 460px); height: min(33vw, 460px); align-self: end; justify-self: center; margin: 10vw 8vw -4vw auto; }

.ec-pw-moods { padding-block: clamp(74px, 11vw, 160px); background: #221411; color: #fdf7f0; }
.ec-pw-moods__head { max-width: 900px; margin-bottom: clamp(35px, 5vw, 72px); }
.ec-pw-moods__head .ec-pw-kicker { margin-bottom: 20px; color: #d4ad87; }
.ec-pw-moods__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: rgba(255, 248, 240, .17); }
.ec-pw-mood { position: relative; min-height: min(50vw, 675px); overflow: hidden; color: #fffaf3; background: #5d342f; text-decoration: none; }
.ec-pw-mood > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.1s cubic-bezier(.22, 1, .36, 1), filter .75s ease; }
.ec-pw-mood:nth-child(1) > img { object-position: center; }
.ec-pw-mood:nth-child(2) > img { object-position: 52% center; }
.ec-pw-mood:nth-child(3) > img { object-position: center; }
.ec-pw-mood__wash { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14,7,6,.07) 44%, rgba(14,7,6,.8)); transition: background .6s ease; }
.ec-pw-mood__name { position: absolute; right: clamp(20px, 3vw, 48px); bottom: clamp(22px, 3vw, 48px); left: clamp(20px, 3vw, 48px); display: flex; align-items: end; justify-content: space-between; gap: 15px; font: 400 clamp(28px, 3vw, 52px) / 1.01 var(--pw-serif); letter-spacing: -.035em; }
.ec-pw-mood__name i { font: 400 22px / 1 var(--ec-font-text); }
.ec-pw-mood:hover > img,
.ec-pw-mood:focus-visible > img { transform: scale(1.045); filter: brightness(1.11); }
.ec-pw-mood:hover .ec-pw-mood__wash,
.ec-pw-mood:focus-visible .ec-pw-mood__wash { background: linear-gradient(180deg, rgba(14,7,6,.02) 38%, rgba(14,7,6,.9)); }

.ec-pw-edits { padding-top: clamp(90px, 13vw, 185px); padding-bottom: clamp(90px, 12vw, 172px); }
.ec-pw-edits__head { max-width: 740px; margin-bottom: clamp(35px, 5vw, 72px); }
.ec-pw-edits__head .ec-pw-kicker { margin-bottom: 20px; color: #865e50; }
.ec-pw-edits__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(16px, 2vw, 31px); }
.ec-pw-edit { position: relative; display: grid; min-height: min(60vw, 760px); overflow: hidden; color: #fffaf3; background: #3c1e1a; }
.ec-pw-edit__media { position: absolute; inset: -3%; overflow: hidden; }
.ec-pw-edit__media[data-pw-parallax] { transform: translate3d(0, var(--pw-parallax-y, 0px), 0); will-change: transform; }
.ec-pw-edit__media img { width: 100%; height: 100%; object-fit: cover; object-position: center; transition: transform 1.05s cubic-bezier(.22, 1, .36, 1), filter .8s ease; }
.ec-pw-edit:nth-child(1) .ec-pw-edit__media img { object-position: 50% 38%; }
.ec-pw-edit:nth-child(2) .ec-pw-edit__media img { object-position: 50% center; }
.ec-pw-edit::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(13,7,5,.03) 34%, rgba(13,7,5,.86) 100%); pointer-events: none; transition: background-color .6s ease; }
.ec-pw-edit__copy { position: relative; z-index: 1; align-self: end; padding: clamp(25px, 4vw, 58px); }
.ec-pw-edit__copy h3 { margin: 0 0 12px; font: 400 clamp(39px, 5vw, 74px) / 1.01 var(--pw-serif); letter-spacing: -.035em; }
.ec-pw-edit__copy p { max-width: 340px; margin: 0 0 25px; color: rgba(255,250,243,.8); font: 400 14px / 1.55 var(--ec-font-text); }
.ec-pw-edit__copy button { display: inline-flex; align-items: center; gap: 11px; min-height: 38px; padding: 0; border: 0; border-bottom: 1px solid currentColor; color: #fffaf3; background: none; font: 500 9px / 1 var(--ec-font-text); letter-spacing: .16em; text-transform: uppercase; cursor: pointer; transition: opacity .3s ease; }
.ec-pw-edit:hover .ec-pw-edit__media img,
.ec-pw-edit:focus-within .ec-pw-edit__media img { transform: scale(1.045); filter: brightness(1.09); }
.ec-pw-edit:hover::after,
.ec-pw-edit:focus-within::after { background: linear-gradient(180deg, rgba(13,7,5,.01) 25%, rgba(13,7,5,.9) 100%); }
.ec-pw-edit__copy button:hover,
.ec-pw-edit__copy button:focus-visible { opacity: .72; }
.ec-pw-edit__copy button:hover i,
.ec-pw-edit__copy button:focus-visible i { transform: translateX(5px); }

.ec-pw-products { padding-top: 0; padding-bottom: 0; scroll-margin-top: 108px; }
.ec-pw-cataloguebar { display: grid; grid-template-columns: 1fr auto 1fr; align-items: stretch; min-height: 61px; margin-inline: calc(var(--ec-gutter) * -1); border-bottom: 1px solid rgba(33,25,21,.12); }
.ec-pw-viewmodes { display: flex; align-items: center; gap: 16px; padding-inline: var(--ec-gutter); border-right: 1px solid rgba(33,25,21,.1); }
.ec-pw-viewmodes button { display: grid; place-items: center; width: 20px; height: 20px; padding: 0; border: 0; color: #a5aa98; background: transparent; cursor: pointer; transition: color .25s ease, transform .25s ease; }
.ec-pw-viewmodes button:hover,
.ec-pw-viewmodes button:focus-visible,
.ec-pw-viewmodes button.is-active { color: #69705e; transform: translateY(-1px); }
.ec-pw-viewmodes svg { display: block; width: 20px; height: 20px; fill: currentColor; }
.ec-pw-product-count { align-self: center; margin: 0; color: #858b76; font: 400 clamp(13px, 1.2vw, 18px) / 1 var(--ec-font-text); letter-spacing: .22em; text-transform: lowercase; white-space: nowrap; }
.ec-pw-cataloguebar__actions { display: flex; align-items: stretch; justify-content: flex-end; }
.ec-pw-sort,
.ec-pw-filter-toggle { position: relative; display: flex; align-items: center; gap: 12px; min-width: 124px; padding: 0 var(--ec-gutter); border: 0; border-left: 1px solid rgba(33,25,21,.1); color: #8a8e7c; background: transparent; font: 500 10px / 1 var(--ec-font-text); letter-spacing: .16em; text-transform: uppercase; }
.ec-pw-sort { cursor: pointer; }
.ec-pw-sort::after { content: '⌄'; margin-top: -4px; color: var(--pw-ink); font-size: 17px; line-height: 1; }
.ec-pw-sort select { position: absolute; inset: 0; width: 100%; opacity: 0; cursor: pointer; }
.ec-pw-filter-toggle { justify-content: center; cursor: pointer; transition: color .25s ease, background-color .25s ease; }
.ec-pw-filter-toggle:hover,
.ec-pw-filter-toggle:focus-visible,
.ec-pw-filter-toggle[aria-expanded='true'] { color: var(--pw-ink); background: rgba(33,25,21,.045); }
.ec-pw-product-filter { display: flex; align-items: center; justify-content: center; gap: 9px; margin: 0; padding: 17px var(--ec-gutter); border-bottom: 1px solid rgba(33,25,21,.12); background: rgba(255,255,255,.24); }
.ec-pw-product-filter[hidden] { display: none; }
.ec-pw-product-filter button { position: relative; min-height: 38px; padding: 0 3px; border: 0; border-radius: 0; -webkit-appearance: none; appearance: none; box-shadow: none; color: var(--pw-ink); background: transparent; font: 500 9px / 1 var(--ec-font-text); letter-spacing: .14em; text-transform: uppercase; cursor: pointer; transition: color .3s ease; }
.ec-pw-product-filter button::after { position: absolute; right: 3px; bottom: 0; left: 3px; height: 1px; content: ''; pointer-events: none; background: currentColor; border-radius: 0; transform: scaleX(0); transform-origin: right center; transition: transform .3s cubic-bezier(.22, 1, .36, 1); }
.ec-pw-product-filter button:hover,
.ec-pw-product-filter button:focus-visible,
.ec-pw-product-filter button.is-active { color: var(--pw-espresso); background: transparent; outline: 0; }
.ec-pw-product-filter button:hover::after,
.ec-pw-product-filter button:focus-visible::after,
.ec-pw-product-filter button.is-active::after { transform: scaleX(1); transform-origin: left center; }
.ec-pw-product-filter button:focus-visible { outline: 2px solid var(--pw-ink); outline-offset: 4px; }
.ec-pw-product[hidden] { display: none; }
.ec-pw-text-link { display: inline-flex; align-items: center; gap: 9px; padding-bottom: 7px; border-bottom: 1px solid var(--pw-ink); color: var(--pw-ink); font: 500 10px / 1 var(--ec-font-text); letter-spacing: .16em; text-transform: uppercase; }
.ec-pw-product-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: clamp(18px, 3.9vw, 74px); row-gap: clamp(42px, 6vw, 90px); padding-top: clamp(24px, 3vw, 42px); }
.ec-pw-product-grid[data-pw-layout-current='two'] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ec-pw-product-grid[data-pw-layout-current='one'] { grid-template-columns: 1fr; width: min(100%, 680px); margin-inline: auto; }
.ec-pw-product { position: relative; }
.ec-pw-product__media { position: relative; display: block; aspect-ratio: 2 / 3; overflow: hidden; background: #ddd0ca; }
.ec-pw-product__media > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .85s cubic-bezier(.22, 1, .36, 1), opacity .65s ease; }
.ec-pw-product__media > img:first-child { object-position: center; }
.ec-pw-product__media .ec-pw-product__hover { opacity: 0; transform: scale(1.04); }
.ec-pw-product__quickshop { position: absolute; right: 18px; bottom: 18px; left: 18px; display: flex; align-items: center; justify-content: space-between; padding: 13px 15px; color: #fffaf3; background: rgba(23, 13, 11, .72); font: 500 9px / 1 var(--ec-font-text); letter-spacing: .16em; text-transform: uppercase; opacity: 0; transform: translateY(10px); transition: opacity .45s ease, transform .45s cubic-bezier(.22, 1, .36, 1); -webkit-backdrop-filter: blur(7px); backdrop-filter: blur(7px); }
.ec-pw-product__dots { position: absolute; right: 0; bottom: 19px; left: 0; display: flex; justify-content: center; gap: 9px; pointer-events: none; transition: opacity .3s ease; }
.ec-pw-product__dots i { display: block; width: 8px; height: 8px; border-radius: 50%; background: rgba(255,250,243,.58); box-shadow: 0 1px 5px rgba(18,9,6,.28); }
.ec-pw-product__dots i.is-active { background: #fffaf3; }
.ec-pw-product__media:hover > img:first-child,
.ec-pw-product__media:focus-visible > img:first-child { transform: scale(1.04); opacity: 0; }
.ec-pw-product__media:hover .ec-pw-product__hover,
.ec-pw-product__media:focus-visible .ec-pw-product__hover { opacity: 1; transform: scale(1); }
.ec-pw-product__media:hover .ec-pw-product__quickshop,
.ec-pw-product__media:focus-visible .ec-pw-product__quickshop { opacity: 1; transform: translateY(0); }
.ec-pw-product__media:hover .ec-pw-product__dots,
.ec-pw-product__media:focus-visible .ec-pw-product__dots { opacity: 0; }
.ec-pw-product__details { display: block; padding: 24px 8px 0; text-align: center; }
.ec-pw-product__details h3,
.ec-pw-product__details p { margin: 0; }
.ec-pw-product__details h3 { font: 400 clamp(14px, 1.05vw, 18px) / 1.35 var(--ec-font-text); letter-spacing: .005em; }
.ec-pw-product__details h3 a { color: inherit; text-decoration: none; }
.ec-pw-product__details p { margin-top: 9px; color: #979b89; font: 400 clamp(13px, .98vw, 16px) / 1 var(--ec-font-text); letter-spacing: .015em; }
.ec-pw-product__wishlist { position: absolute; top: 13px; right: 13px; z-index: 3; display: grid; width: 34px; height: 34px; padding: 0; border: 1px solid rgba(255,250,243,.45); border-radius: 50%; place-items: center; background: rgba(23, 13, 11, .32); color: #fffaf3; cursor: pointer; opacity: 0; transition: opacity .25s ease, color .25s ease, background-color .25s ease, transform .25s ease; -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px); }
.ec-pw-product:hover .ec-pw-product__wishlist,
.ec-pw-product:focus-within .ec-pw-product__wishlist { opacity: 1; }
.ec-pw-product__wishlist:hover,
.ec-pw-product__wishlist:focus-visible { color: #f0c8d2; background: rgba(23, 13, 11, .7); transform: scale(1.04); }
.ec-pw-product__wishlist[aria-pressed='true'] { color: #df3049; border-color: #df3049; background: rgba(23, 13, 11, .82); transform: scale(1.04); }
.ec-pw-product__wishlist:focus-visible { outline: 2px solid #fffaf3; outline-offset: 2px; }
.ec-pw-pagination { display: flex; align-items: stretch; width: min(100%, 226px); margin: clamp(28px, 3.5vw, 48px) auto 0; }
.ec-pw-pagination[hidden] { display: none; }
.ec-pw-pagination__pages { display: flex; flex: 1; }
.ec-pw-pagination button { display: grid; place-items: center; min-width: 48px; min-height: 45px; margin-bottom: -1px; padding: 0; border: 0; border-bottom: 3px solid transparent; color: rgba(33,25,21,.6); background: none; font: 500 14px / 1 var(--ec-font-text); cursor: pointer; transition: color .25s ease, border-color .25s ease; }
.ec-pw-pagination button:hover,
.ec-pw-pagination button:focus-visible,
.ec-pw-pagination button[aria-current='page'] { border-bottom-color: #8e775f; color: var(--pw-ink); }
.ec-pw-pagination button[hidden] { display: none; }
.ec-pw-pagination__next { margin-left: auto; }
.ec-pw-pagination__next:disabled { color: rgba(33,25,21,.26); cursor: default; }

.ec-pw-final { position: relative; display: grid; min-height: min(63vw, 810px); color: #fffaf3; background: #25140f; overflow: hidden; isolation: isolate; }
.ec-pw-final__media { z-index: -3; transform: translate3d(0, var(--pw-parallax-y, 0px), 0) scale(1.08); }
.ec-pw-final__media img { object-position: 67% center; }
.ec-pw-final__wash { position: absolute; inset: 0; z-index: -2; background: linear-gradient(90deg, rgba(13, 8, 7, .75), rgba(13, 8, 7, .15) 74%); }
.ec-pw-final__inner { align-self: center; padding-top: 88px; padding-bottom: 88px; }
.ec-pw-final .ec-pw-display { max-width: 710px; margin-bottom: 37px; font-size: clamp(62px, 8.7vw, 146px); }

/* Scroll states. JavaScript only adds ec-pw-motion after it has installed the
   observer, so the complete page remains visible and usable without script. */
html.ec-pw-motion .ec-partywear [data-pw-reveal] { opacity: 0; transform: translateY(34px); transition: opacity .9s cubic-bezier(.22, 1, .36, 1), transform .9s cubic-bezier(.22, 1, .36, 1); }
html.ec-pw-motion .ec-partywear [data-pw-reveal].is-inview { opacity: 1; transform: translateY(0); }
html.ec-pw-motion .ec-partywear .ec-pw-media-reveal { clip-path: inset(0 0 100% 0); transition: clip-path 1.25s cubic-bezier(.76, 0, .24, 1); }
html.ec-pw-motion .ec-partywear .is-inview .ec-pw-media-reveal,
html.ec-pw-motion .ec-partywear .ec-pw-media-reveal.is-inview { clip-path: inset(0 0 0 0); }
html.ec-pw-motion .ec-partywear [data-pw-lines] { clip-path: inset(0 0 100% 0); transform: translateY(38px); opacity: 0; filter: blur(4px); transition: clip-path 1s cubic-bezier(.22, 1, .36, 1) .12s, transform 1s cubic-bezier(.22, 1, .36, 1) .12s, opacity .75s ease .12s, filter .75s ease .12s; }
html.ec-pw-motion .ec-partywear .is-inview [data-pw-lines] { clip-path: inset(0 0 0 0); transform: translateY(0); opacity: 1; filter: blur(0); }
html.ec-pw-motion .ec-partywear .is-inview .ec-pw-line { animation: pw-line-draw .9s cubic-bezier(.22, 1, .36, 1) .3s both; }
html.ec-pw-motion .ec-pw-edits .ec-pw-edit { opacity: 0; transform: translateY(26px); transition: opacity .7s cubic-bezier(.22, 1, .36, 1), transform .7s cubic-bezier(.22, 1, .36, 1); }
html.ec-pw-motion .ec-pw-edits.is-inview .ec-pw-edit { opacity: 1; transform: translateY(0); }
html.ec-pw-motion .ec-pw-edits.is-inview .ec-pw-edit:nth-child(2) { transition-delay: .15s; }

@keyframes pw-hero-image { to { clip-path: inset(0 0 0 0); transform: scale(1); filter: blur(0); } }
@keyframes pw-hero-copy { to { opacity: 1; filter: blur(0); transform: translateY(0); } }
@keyframes pw-scroll-line { 0%, 100% { transform: scaleX(.35); opacity: .35; } 50% { transform: scaleX(1); opacity: 1; } }
@keyframes pw-line-draw { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes pw-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

@media (max-width: 980px) {
	.ec-pw-intro { grid-template-columns: minmax(240px, .8fr) 1fr; gap: clamp(35px, 6vw, 74px); }
	.ec-pw-partition__grid { min-height: min(62vw, 590px); }
	.ec-pw-glamour__grid { grid-template-columns: 1fr 1.1fr; grid-template-rows: auto minmax(250px, 44vw) minmax(180px, 32vw); }
	.ec-pw-glamour__copy { grid-column: 1; padding: 0 3vw 6vw 0; }
	.ec-pw-glamour__image--one { grid-column: 2; grid-row: 1 / span 2; height: min(68vw, 600px); }
	.ec-pw-glamour__image--two { grid-column: 1; grid-row: 2 / span 2; margin-left: 3vw; }
	.ec-pw-glamour__image--three { grid-column: 2; grid-row: 3; justify-self: end; width: min(100%, 330px); height: 270px; margin: 10vw 2vw -3vw 0; }
	.ec-pw-edit { min-height: min(72vw, 660px); }
	.ec-pw-product-grid[data-pw-layout-current='four'],
	.ec-pw-product-grid[data-pw-layout-current='two'] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ec-pw-product-grid[data-pw-layout-current='one'] { grid-template-columns: 1fr; }
	.ec-pw-product-filter { margin-top: 0; overflow-x: auto; padding-bottom: 17px; }
	.ec-pw-product-filter button { flex: 0 0 auto; }
	.ec-pw-film__media { height: clamp(340px, 70vw, 520px); }
}

@media (max-width: 700px) {
	body.ec-partywear-page .ec-header { -webkit-backdrop-filter: none; backdrop-filter: none; }
	.ec-pw-hero { min-height: max(610px, 100svh); }
	.ec-pw-hero__media { inset: 0; }
	.ec-pw-hero__wash { background: linear-gradient(90deg, rgba(10, 6, 5, .76) 0%, rgba(10, 6, 5, .34) 58%, rgba(10, 6, 5, .18) 100%), linear-gradient(0deg, rgba(10, 6, 5, .36), transparent 48%); }
	.ec-pw-hero__media img { object-position: 54% center; transform: scale(1.02); }
	.ec-pw-hero__inner { padding-top: 144px; }
	.ec-pw-hero__title { font-size: clamp(70px, 20vw, 122px); }
	.ec-pw-hero__scroll { right: 22px; bottom: 25px; }
	.ec-pw-partition { padding-block: 0; }
	.ec-pw-partition__grid { min-height: 109vw; }
	.ec-pw-intro { grid-template-columns: 1fr; gap: 42px; }
	.ec-pw-intro__portrait { width: min(100%, 460px); }
	.ec-pw-intro__copy { padding-top: 0; }
	.ec-pw-section-head { display: grid; gap: 23px; margin-bottom: 33px; }
	.ec-pw-looks .ec-pw-section-head > p { text-align: left; }
	.ec-pw-lookrail { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 17px; padding-inline: 22px; }
	.ec-pw-look__media { aspect-ratio: 2 / 3; }
	.ec-pw-marquee__track p { padding-block: 23px; font-size: 13px; }
	.ec-pw-glamour__grid { grid-template-columns: 1fr 1fr; grid-template-rows: auto 310px 198px; }
	.ec-pw-glamour__copy { grid-column: 1 / -1; padding: 0 0 45px; }
	.ec-pw-glamour__image--one { grid-column: 2; grid-row: 2; height: 350px; margin: 0; }
	.ec-pw-glamour__image--two { grid-column: 1; grid-row: 2 / span 2; height: 404px; margin: 64px 0 0 10px; }
	.ec-pw-glamour__image--three { grid-column: 2; grid-row: 3; width: 100%; height: 190px; margin: 78px -10px -30px 0; }
	.ec-pw-edits__grid { grid-template-columns: 1fr; gap: 12px; }
	.ec-pw-edit { min-height: 110vw; }
	.ec-pw-edit__copy { padding: 27px 24px; }
	.ec-pw-edit__copy p { font-size: 13px; }
	.ec-pw-moods__grid { grid-template-columns: 1fr; }
	.ec-pw-mood { min-height: 83vw; }
	.ec-pw-cataloguebar { grid-template-columns: 1fr auto; min-height: 56px; }
	.ec-pw-viewmodes { gap: 13px; }
	.ec-pw-product-count { display: none; }
	.ec-pw-sort { min-width: 92px; }
	.ec-pw-filter-toggle { min-width: 76px; }
	.ec-pw-product-filter { justify-content: flex-start; overflow-x: auto; }
	.ec-pw-product-grid[data-pw-layout-current='four'],
	.ec-pw-product-grid[data-pw-layout-current='two'] { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 45px 12px; }
	.ec-pw-product-grid[data-pw-layout-current='one'] { grid-template-columns: 1fr; }
	.ec-pw-product__details { display: block; padding-top: 11px; }
	.ec-pw-product__details p { margin-top: 6px; }
	.ec-pw-product__wishlist { top: 9px; right: 9px; width: 32px; height: 32px; opacity: 1; }
	.ec-pw-product__quickshop { display: none; }
	.ec-pw-pagination { margin-top: 30px; }
	.ec-pw-final { min-height: 125vw; }
	.ec-pw-final__media img { object-position: 67% center; }
	.ec-pw-final__inner { padding-top: 100px; padding-bottom: 68px; }
	.ec-pw-final .ec-pw-display { font-size: clamp(58px, 15vw, 90px); }
}

@media (prefers-reduced-motion: reduce) {
	body.ec-partywear-page .ec-header,
	.ec-pw-button,
	.ec-pw-look__media img,
	.ec-pw-look__copy em,
	.ec-pw-mood > img,
	.ec-pw-product__media > img,
	.ec-pw-product__media > span { transition-duration: .01ms; }
	.ec-pw-hero__media img,
	.ec-pw-hero__media video,
	.ec-pw-hero__inner .ec-pw-kicker,
	.ec-pw-hero__title,
	.ec-pw-hero__inner .ec-pw-button { animation: none; opacity: 1; transform: none; filter: none; clip-path: none; }
	.ec-pw-hero__scroll span { animation: none; }
	.ec-pw-marquee__track { animation: none; transform: none; }
	.ec-pw-marquee__track p + p { display: none; }
	html.ec-pw-motion .ec-partywear [data-pw-reveal],
	html.ec-pw-motion .ec-partywear [data-pw-lines] { opacity: 1; transform: none; filter: none; clip-path: none; transition: none; }
	html.ec-pw-motion .ec-partywear .ec-pw-media-reveal { clip-path: none; transition: none; }
}

/* The Party Wear mobile menu is the same self-contained Linen menu page. */
@media (max-width: 860px) {
	.ec-nav--partywear {
		position: fixed;
		grid-column: auto;
		grid-row: auto;
		top: 0;
		right: 0;
		bottom: 0;
		left: 0;
		z-index: 101;
		width: 100%;
		flex-wrap: nowrap;
		align-items: stretch;
		justify-content: center;
		min-height: 100dvh;
		max-height: none;
		overflow-y: auto;
		overscroll-behavior: contain;
		margin: 0;
		padding: 20px clamp(16px, 4.5vw, 28px);
		border: 0;
		background: #faf7f0;
		box-shadow: none;
		color: #34342e;
		text-align: center;
		text-shadow: none;
	}
	.ec-nav--partywear > * { flex: 0 0 auto; min-width: 0; width: 100%; }
	.ec-nav--partywear:has(.ec-nav__item.is-open) {
		justify-content: flex-start;
		padding-top: 72px;
	}
	body.ec-has-hero-header .ec-nav--partywear.is-expanded {
		margin: 0;
		padding-inline: clamp(16px, 4.5vw, 28px);
		border: 0;
		background: #faf7f0;
	}
	.ec-partywear-menu-close {
		position: absolute;
		top: 16px;
		right: clamp(16px, 4.5vw, 28px);
		display: grid;
		width: 44px;
		height: 44px;
		place-items: center;
		padding: 0;
		border: 0;
		border-radius: 0 !important;
		color: #34342e;
		background: transparent;
		font: 300 28px / 1 var(--ec-font-text);
		cursor: pointer;
	}
	.ec-nav--partywear .ec-nav__link {
		min-height: 62px;
		color: #34342e;
		font-size: 21px;
		line-height: 1.35;
		text-align: center;
		-webkit-tap-highlight-color: transparent;
	}
	body.ec-partywear-page .ec-nav--partywear .ec-nav__link,
	body.ec-partywear-page .ec-nav--partywear .ec-nav__link:hover,
	body.ec-partywear-page .ec-nav--partywear .ec-nav__link:focus-visible { color: #34342e; opacity: 1; }
	.ec-nav--partywear .ec-nav__link::after {
		right: auto;
		left: 50%;
		transform: translateX(-50%) scaleX(0);
		transform-origin: center;
	}
	.ec-nav--partywear .ec-nav__link:hover::after,
	.ec-nav--partywear .ec-nav__link:focus-visible::after,
	.ec-nav--partywear .ec-nav__item.is-open > .ec-nav__link::after,
	.ec-nav--partywear .ec-nav__link[aria-current='page']::after {
		transform: translateX(-50%) scaleX(1);
		transform-origin: center;
	}
	.ec-nav--partywear .ec-partywear-mega {
		grid-template-columns: 1fr;
		gap: 24px;
		padding: 12px 0 24px;
		text-align: center;
	}
	.ec-nav--partywear .ec-mega__link,
	.ec-nav--partywear .ec-mega__title {
		display: flex;
		align-items: center;
		justify-content: center;
		min-height: 44px;
		line-height: 1.5;
	}
	body.ec-partywear-page .ec-header:has(.ec-nav--partywear.is-expanded) {
		background: #faf7f0;
		border-bottom-color: rgba(52, 52, 46, .18);
		box-shadow: none;
		text-shadow: none;
	}
	body.ec-partywear-page .ec-header:has(.ec-nav--partywear.is-expanded) :is(.ec-brand, .ec-brand:hover, .ec-brand__tag, .ec-action, .ec-action__count, .ec-navtoggle) { color: #34342e; }
	body.ec-partywear-page .ec-header:has(.ec-nav--partywear.is-expanded) .ec-brand__mark::before { filter: none; }
}

/* Match Linen's compact mobile footer: Information / Shop above About /
   Currency and social, so no empty utility row is left under the links. */
@media (max-width: 640px) {
	body.ec-partywear-page .ec-footer__grid,
	body.ec-partywear-shop-page .ec-footer__grid,
	body.ec-partywear-collections-page .ec-footer__grid,
	body.ec-partywear-product-page .ec-footer__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 28px 20px;
	}
	body.ec-partywear-page .ec-footer__utility,
	body.ec-partywear-shop-page .ec-footer__utility,
	body.ec-partywear-collections-page .ec-footer__utility,
	body.ec-partywear-product-page .ec-footer__utility {
		grid-column: 2;
		grid-row: 2;
		width: 100%;
	}
	body.ec-partywear-page .ec-footer__inner,
	body.ec-partywear-shop-page .ec-footer__inner,
	body.ec-partywear-collections-page .ec-footer__inner,
	body.ec-partywear-product-page .ec-footer__inner { padding-inline: clamp(16px, 4.5vw, 28px); }
	body.ec-partywear-page .ec-footer :is(a, p, select),
	body.ec-partywear-shop-page .ec-footer :is(a, p, select),
	body.ec-partywear-collections-page .ec-footer :is(a, p, select),
	body.ec-partywear-product-page .ec-footer :is(a, p, select) { overflow-wrap: anywhere; }
}
