@font-face {
	font-family: 'Cillax';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('../fonts/cillax-regular.woff2') format('woff2');
}

@font-face {
	font-family: 'Cillax';
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url('../fonts/cillax-medium.woff2') format('woff2');
}

/* =============================================================================
   Ecoleas · Linen
   Seven bands, one statement per screen. A light, film-like editorial system
   intentionally unrelated to Party Wear: where that world is night, contrast
   and momentum, this one is daylight, air and delay.

   CONTENTS
     Header overrides · tokens · shared primitives
     01  Hero
     02  Collection
     03  Featured and reviews
     04  Shop the look
     05  Linen guide
     Motion · responsive · reduced motion
   ============================================================================= */

/* The Linen home masthead stays fixed over the campaign image. It is fully
   transparent at the top, then gains a soft paper surface after scroll so
   every destination remains readable and reachable. */
body.ec-linen-home .ec-header {
	position: fixed;
	top: 0;
	inset-inline: 0;
	z-index: 90;
	border-bottom-color: transparent;
	background: transparent;
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
	text-shadow: 0 1px 16px rgba(29, 28, 24, .4);
	transition:
		background-color .25s ease,
		border-color .25s ease,
		box-shadow .25s ease,
		text-shadow .25s ease;
}

/* Light ink is required while the header sits directly on campaign media. */
body.ec-linen-home .ec-header .ec-nav__link,
body.ec-linen-home .ec-header .ec-action,
body.ec-linen-home .ec-header .ec-navtoggle,
body.ec-linen-home .ec-header .ec-brand,
body.ec-linen-home .ec-header .ec-brand:hover,
body.ec-linen-home .ec-header .ec-brand__tag {
	color: #fffdf8;
}

body.ec-linen-home .ec-header .ec-brand__tag { color: rgba(255, 253, 248, .78); }
body.ec-linen-home .ec-header .ec-brand__mark::before { filter: brightness(0) invert(1); }
body.ec-linen-home .ec-header .ec-nav__link:hover,
body.ec-linen-home .ec-header .ec-nav__link:focus-visible,
body.ec-linen-home .ec-header .ec-nav__link[aria-current='page'] { color: #fffdf8; }

/* The sticky scroll state intentionally remains fixed, but gains contrast on
   light content after the hero. */
body.ec-linen-home .ec-header.is-linen-scrolled {
	position: fixed;
	top: 0;
	border-bottom-color: rgba(86, 93, 79, .2);
	background: rgba(249, 246, 239, .94);
	box-shadow: 0 7px 30px rgba(69, 61, 44, .05);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	text-shadow: none;
}

body.admin-bar.ec-linen-home .ec-header,
body.admin-bar.ec-linen-home .ec-header.is-linen-scrolled { top: 32px; }

/* Linen opens directly into its hero, without inheriting the global
   announcement row or its sticky-header offset. */
body.ec-linen-home .ec-announce { display: none; }
body.ec-linen-home .ec-announce + .ec-header,
body.ec-linen-home .ec-announce + .ec-header.is-linen-scrolled {
	top: 0;
}
body.admin-bar.ec-linen-home .ec-announce + .ec-header,
body.admin-bar.ec-linen-home .ec-announce + .ec-header.is-linen-scrolled {
	top: 32px;
}
@media screen and (max-width: 782px) {
	body.admin-bar.ec-linen-home .ec-header,
	body.admin-bar.ec-linen-home .ec-header.is-linen-scrolled { top: 46px; }
	body.admin-bar.ec-linen-home .ec-announce + .ec-header,
	body.admin-bar.ec-linen-home .ec-announce + .ec-header.is-linen-scrolled { top: 46px; }
}

body.ec-linen-home .ec-header.is-linen-scrolled .ec-nav__link,
body.ec-linen-home .ec-header.is-linen-scrolled .ec-action,
body.ec-linen-home .ec-header.is-linen-scrolled .ec-navtoggle,
body.ec-linen-home .ec-header.is-linen-scrolled .ec-brand,
body.ec-linen-home .ec-header.is-linen-scrolled .ec-brand:hover {
	color: var(--ec-ink);
}
body.ec-linen-home .ec-header.is-linen-scrolled .ec-brand__tag { color: var(--ec-ink-muted); }
body.ec-linen-home .ec-header.is-linen-scrolled .ec-brand__mark::before { filter: none; }

body.ec-linen-page {
	--ec-font-display: 'Cillax', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	--ec-font-text: 'Cillax', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	--ec-font-wordmark: 'Cillax', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	--linen-paper: #faf7f0;
	--linen-sage: #788373;
	--linen-ink: #34342e;
}

body.ec-linen-page .ec-nav__link:hover,
body.ec-linen-page .ec-nav__link:focus-visible,
body.ec-linen-page .ec-nav__link[aria-current='page'] {
	color: var(--linen-ink);
}

/* Linen Collections desktop menu. The live category tree remains untouched;
   this block owns only the full-width panel, four-column alignment and reveal
   motion. There is deliberately no promotional tile because this menu has no
   existing promotional content to preserve. */
body.ec-linen-page .ec-linen-mega {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	align-items: start;
	column-gap: clamp(46px, 5.5vw, 104px);
	row-gap: clamp(42px, 4.5vw, 68px);

	/*
	 * The panel is full-bleed, so its inline padding is the only thing putting
	 * the first column on the page's own left edge. It has to be the SAME
	 * gutter the masthead uses, not a second clamp of its own: with a value
	 * that merely looked similar, the first category heading sat 7px inside
	 * the first nav item above it, and a seven-pixel step between two things
	 * meant to share an edge is exactly what reads as unconsidered.
	 */
	padding: clamp(30px, 2.5vw, 44px) var(--ec-gutter) clamp(38px, 3vw, 54px);
	border-top-color: rgba(52, 52, 46, .18);
	background: var(--linen-paper);
}
body.ec-linen-page .ec-linen-mega .ec-mega__col {
	min-width: 0;
	gap: 13px;
}
body.ec-linen-page .ec-linen-mega__title {
	display: inline-block;
	margin-bottom: 4px;
	color: var(--linen-sage);
	text-decoration: none;

	/*
	 * A step up from the shared .ec-mega__title (11px/16px). The heading is now
	 * the only thing marking where a group starts — the closing link that used
	 * to bracket it is gone — so it carries more of the panel's structure and
	 * needs the weight to do it. Longhands rather than the `font` shorthand,
	 * because --linen-sans is not declared on any ancestor of the header.
	 */
	font-size: 16px;
	line-height: 22px;
}
body.ec-linen-page .ec-linen-mega .ec-mega__link {
	line-height: 1.42;
}
@media (min-width: 861px) {
	body.ec-linen-page .ec-linen-mega {
		width: 100%;
		max-width: none;
		max-height: min(72svh, 620px);
		box-sizing: border-box;
		overflow-x: hidden;
		overflow-y: auto;
		animation: ec-linen-mega-reveal .24s cubic-bezier(.22, 1, .36, 1) both;
		transform-origin: top center;
	}
	body.ec-linen-page .ec-linen-mega .ec-mega__col > li:first-child {
		margin-bottom: 3px;
	}

}
@keyframes ec-linen-mega-reveal {
	from { opacity: 0; transform: translate3d(0, -8px, 0); }
	to { opacity: 1; transform: translate3d(0, 0, 0); }
}
@media (prefers-reduced-motion: reduce) {
	body.ec-linen-page .ec-linen-mega { animation: none; }
}
body.ec-linen-page .ec-linen-mega__title:hover,
body.ec-linen-page .ec-linen-mega__title:focus-visible { color: var(--linen-ink); }
body.ec-linen-page .ec-linen-mega .ec-mega__link { color: var(--linen-ink); }
body.ec-linen-page .ec-linen-mega .ec-mega__link:hover,
body.ec-linen-page .ec-linen-mega .ec-mega__link:focus-visible { color: var(--linen-sage); }
.ec-linen-daylink::after,
.ec-linen-product__related-head a::after,
.ec-linen-contact__form button::after,
.ec-linen-market__text-link::after,
.ec-linen-market__quiet-link::after {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	height: 1px;
	content: '';
	pointer-events: none;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: right center;
	transition: transform .25s ease;
}
.ec-linen-daylink:hover::after,
.ec-linen-daylink:focus-visible::after,
.ec-linen-product__related-head a:hover::after,
.ec-linen-product__related-head a:focus-visible::after,
.ec-linen-contact__form button:hover::after,
.ec-linen-contact__form button:focus-visible::after,
.ec-linen-market__text-link:hover::after,
.ec-linen-market__text-link:focus-visible::after,
.ec-linen-market__quiet-link:hover::after,
.ec-linen-market__quiet-link:focus-visible::after {
	transform: scaleX(1);
	transform-origin: left center;
}
@media (max-width: 860px) {
	body.ec-linen-page .ec-linen-mega { grid-template-columns: 1fr; }
}
body.ec-linen-home .ec-header.is-linen-scrolled .ec-nav__link:hover,
body.ec-linen-home .ec-header.is-linen-scrolled .ec-nav__link:focus-visible,
body.ec-linen-home .ec-header.is-linen-scrolled .ec-nav__link[aria-current='page'] {
	color: #6f7d6e;
}

/* The Linen masthead enters like the rest of the page: quietly from above,
   never as an overlay. `ec-linen-boot` is added in the document head only
   when motion is allowed, so no-JavaScript and reduced-motion visits retain
   a fully visible, immediately usable navigation. */
html.ec-linen-boot body.ec-linen-page .ec-header {
	opacity: 0;
	pointer-events: none;
	transform: translate3d(0, -2.25rem, 0);
}
html.ec-linen-boot.ec-linen-entered body.ec-linen-page .ec-header {
	opacity: 1;
	pointer-events: auto;
	transform: translate3d(0, 0, 0);
}

.ec-linen {
	--linen-paper: #faf7f0;
	--linen-cream: #f1ece1;
	--linen-sand: #dfd4c1;
	--linen-sage: #788373;
	--linen-sea: #b9c8c3;
	--linen-ink: #34342e;
	--linen-muted: #79766c;
	--linen-serif: 'Cillax', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	--linen-sans: 'Cillax', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	overflow: clip;
	color: var(--linen-ink);
	background: var(--linen-paper);
}

.ec-linen *,
.ec-linen *::before,
.ec-linen *::after { box-sizing: border-box; }
.ec-linen-shell { width: min(100%, 1560px); margin-inline: auto; padding-inline: clamp(24px, 6vw, 106px); }
.ec-linen h1,
.ec-linen h2,
.ec-linen h3,
.ec-linen p { margin-top: 0; }
.ec-linen-kicker { margin-bottom: 0; color: var(--linen-sage); font: 500 10px / 1.3 var(--linen-sans); letter-spacing: .23em; text-transform: uppercase; }
.ec-linen-daylink { position: relative; display: inline-flex; align-items: center; justify-content: space-between; gap: 36px; min-height: 45px; border: 0; color: inherit; font: 500 10px / 1 var(--linen-sans); letter-spacing: .18em; text-decoration: none; text-transform: uppercase; transition: color .3s ease, gap .5s cubic-bezier(.22, 1, .36, 1); }
.ec-linen-daylink i { font-size: 15px; font-style: normal; }
.ec-linen-daylink:hover,
.ec-linen-daylink:focus-visible { gap: 50px; color: var(--linen-sage); }
.ec-linen a:focus-visible,
.ec-linen [tabindex]:focus-visible { outline: 2px solid var(--linen-sage); outline-offset: 5px; }

/* Keep large display text readable: serif descenders must never overlap the
   following line, even where headings wrap at a narrow viewport. */
.ec-linen h1,
.ec-linen h2,
.ec-linen h3 { line-height: 1.02; letter-spacing: -.035em; }

/* =============================================================================
   01 · HERO
   Full bleed, two lines, nothing else. No scroll cue, no index, no button —
   the page is short enough that the next band is the invitation.
   ============================================================================= */

.ec-linen-hero {
	position: relative;
	display: grid;
	min-height: 100svh;
	overflow: hidden;
	isolation: isolate;
	color: #fffdf8;
	background: #aaa796;
}

.ec-linen-hero__media,
.ec-linen-hero__media::after { position: absolute; inset: 0; }
.ec-linen-hero__media { z-index: -3; overflow: hidden; background: linear-gradient(120deg, #b9ad9b, #d6cabe 48%, #a7a090); }
.ec-linen-hero__media::after {
	content: '';
	background: linear-gradient(92deg, rgba(52, 48, 39, .5), rgba(52, 48, 39, .12) 62%, rgba(52, 48, 39, .2));
}
.ec-linen-hero__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1.03) translate3d(var(--linen-hero-x, 0), 0, 0);
	transition: transform 1.6s cubic-bezier(.22, 1, .36, 1);
}

/* A slow sheet of light drifting across the frame — the only movement the
   hero makes on its own. */
.ec-linen-hero__sun {
	position: absolute;
	z-index: -1;
	inset: -18% -8% auto auto;
	width: min(60vw, 940px);
	height: 136%;
	opacity: .32;
	background: linear-gradient(105deg, transparent 19%, rgba(255, 253, 244, .38) 48%, rgba(236, 241, 224, .06) 67%, transparent 87%);
	filter: blur(4px);
	mix-blend-mode: soft-light;
	transform: skewX(-9deg);
	animation: linen-sun-drift 14s ease-in-out infinite alternate;
	pointer-events: none;
}

.ec-linen-hero__copy { align-self: end; padding-bottom: clamp(64px, 9vw, 132px); }
.ec-linen-hero__copy .ec-linen-kicker { color: rgba(255, 253, 247, .84); }
.ec-linen-hero h1 {
	max-width: 16ch;
	margin: 0;
	font: 400 clamp(58px, 8.6vw, 148px) / .93 var(--linen-serif);
	letter-spacing: -.042em;
}

/* 02 / Sweatshirts + trousers --------------------------------------------- */
.ec-linen-category-pair { padding: 0; background: var(--linen-paper); }
.ec-linen-category-pair__grid { display: grid; width: 100%; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px; margin-inline: auto; background: transparent; }
/* These are product entry points, so they use the same 2:3 portrait ratio as
   every other product block. The supplied 1000×1500 frames fit exactly—no
   blurred side-fill, cut-off right edge, or cropped face. */
.ec-linen-category-pair__item { position: relative; display: grid; width: 100%; min-height: 0; aspect-ratio: 2 / 3; overflow: hidden; color: #fffdf8; background: var(--linen-sand); text-decoration: none; isolation: isolate; }
.ec-linen-category-pair__item::before { display: none; }
.ec-linen-category-pair__item > img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; object-position: center; transform: none; transition: filter .7s ease; }
.ec-linen-category-pair__wash { position: absolute; z-index: -1; inset: 0; background: linear-gradient(0deg, rgba(37, 39, 34, .58), rgba(37, 39, 34, .01) 55%); transition: background .55s ease; }
.ec-linen-category-pair__copy { align-self: end; padding: clamp(22px, 3vw, 42px); }
.ec-linen-category-pair__copy strong { display: block; color: #fffdf8; font: 500 clamp(14px, 1.35vw, 19px) / 1.2 var(--linen-sans); letter-spacing: .02em; }
.ec-linen-category-pair__item:hover > img,
.ec-linen-category-pair__item:focus-visible > img { filter: brightness(1.06); }
.ec-linen-category-pair__item:hover .ec-linen-category-pair__wash,
.ec-linen-category-pair__item:focus-visible .ec-linen-category-pair__wash { background: linear-gradient(0deg, rgba(37, 39, 34, .68), rgba(37, 39, 34, .01) 62%); }

/* =============================================================================
   02 · COLLECTION
   One large image against one column of words. The image takes the larger
   share because it is the argument; the words are the caption.
   ============================================================================= */

.ec-linen-collection { padding: clamp(78px, 10vw, 168px) 0; background: var(--linen-paper); }
.ec-linen-collection__layout {
	display: grid;
	grid-template-columns: minmax(0, 1.18fr) minmax(300px, .82fr);
	align-items: center;
	gap: clamp(40px, 7vw, 118px);
}
.ec-linen-collection__image {
	align-self: stretch;
	min-height: clamp(460px, 46vw, 760px);
	overflow: hidden;
	background: linear-gradient(145deg, #d8cab6 0%, #eee8db 48%, #b5c0b8 100%);
}
.ec-linen-collection__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: translate3d(0, var(--linen-parallax-y, 0), 0) scale(1.05);
	will-change: transform;
}
.ec-linen-collection__copy { max-width: 440px; }
.ec-linen-collection h2 {
	margin: 21px 0 26px;
	font: 400 clamp(46px, 5.6vw, 92px) / 1.02 var(--linen-serif);
	letter-spacing: -.04em;
}
.ec-linen-collection__copy > p:not(.ec-linen-kicker) {
	max-width: 360px;
	margin-bottom: clamp(32px, 4vw, 48px);
	color: var(--linen-muted);
	font: 400 16px / 1.74 var(--linen-sans);
}

/* Three routes, set as rules rather than buttons. The hairline is the whole
   affordance; hover moves the ink and the arrow, never the row. */
.ec-linen-collection__routes { margin: 0; padding: 0; list-style: none; }
.ec-linen-collection__routes li { border-top: 1px solid rgba(52, 53, 47, .16); }
.ec-linen-collection__routes li:last-child { border-bottom: 1px solid rgba(52, 53, 47, .16); }
.ec-linen-collection__routes a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	min-height: 62px;
	color: var(--linen-ink);
	font: 400 clamp(24px, 2.3vw, 34px) / 1 var(--linen-serif);
	letter-spacing: -.04em;
	text-decoration: none;
	transition: color .4s ease;
}
.ec-linen-collection__routes i {
	font-size: 16px;
	font-style: normal;
	opacity: .45;
	transition: transform .5s cubic-bezier(.22, 1, .36, 1), opacity .4s ease;
}
.ec-linen-collection__routes a:hover,
.ec-linen-collection__routes a:focus-visible { color: var(--linen-sage); }
.ec-linen-collection__routes a:hover i,
.ec-linen-collection__routes a:focus-visible i { opacity: 1; transform: translateX(9px); }

/* =============================================================================
   04 · POPULAR PRODUCTS
   Three pieces, presented as a composition rather than a standard card grid.
   ============================================================================= */

.ec-linen-featured { padding: clamp(20px, 3vw, 48px) 0 clamp(80px, 10vw, 168px); background: var(--linen-paper); }
.ec-linen-popular.ec-linen-featured { padding-top: clamp(24px, 3vw, 48px); padding-bottom: clamp(30px, 3vw, 56px); }
.ec-linen-featured__row {
	display: grid;
	grid-template-columns: 1.25fr .8fr 1.25fr;
	align-items: start;
	gap: clamp(16px, 2.4vw, 44px);
	padding-inline: clamp(24px, 6vw, 106px);
}
.ec-linen-featured__item { min-width: 0; }
.ec-linen-featured__item a { display: block; color: inherit; text-decoration: none; }

.ec-linen-featured__frame {
	position: relative;
	display: block;
	aspect-ratio: 2 / 3;
	overflow: hidden;
	background: linear-gradient(145deg, #d7c8b1, #f0ece2 70%, #b9c7bf);
}
.ec-linen-featured__item:nth-child(2) .ec-linen-featured__frame { background: linear-gradient(150deg, #b9c7bf, #e9e2d4 72%); }
.ec-linen-featured__item:nth-child(3) .ec-linen-featured__frame { background: linear-gradient(135deg, #eee4d3, #c9bba5 56%, #9fab9f); }
.ec-linen-featured__frame img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1.02);
	transition: transform 1.5s cubic-bezier(.22, 1, .36, 1);
}
.ec-linen-featured__item a:hover .ec-linen-featured__frame img,
.ec-linen-featured__item a:focus-visible .ec-linen-featured__frame img { transform: scale(1.055); }

/* The small centre piece: shorter, and dropped to break the top line. */
.ec-linen-featured__item:nth-child(2) { margin-top: clamp(48px, 9vw, 158px); }
.ec-linen-featured__item:nth-child(2) .ec-linen-featured__frame { aspect-ratio: 2 / 3; }

.ec-linen-featured__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 6px 18px;
	padding-top: 16px;
}
.ec-linen-featured__meta > span { width: 100%; color: var(--linen-sage); font: 500 9px / 1.3 var(--linen-sans); letter-spacing: .17em; text-transform: uppercase; }
.ec-linen-featured__meta strong {
	font: 400 clamp(20px, 1.9vw, 30px) / 1.05 var(--linen-serif);
	letter-spacing: -.04em;
}
.ec-linen-featured__meta em {
	color: var(--linen-muted);
	font: 400 14px / 1.3 var(--linen-sans);
	font-style: normal;
}

/* =============================================================================
   05 · CUSTOMER REVIEWS
   A quiet, text-led proof point after the product composition. Hairlines give
   each note room without turning the section into a conventional card grid.
   ============================================================================= */

.ec-linen-reviews { padding: 0; background: var(--linen-cream); }
.ec-linen-reviews__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; padding: 0; border-top: 1px solid rgba(52, 52, 46, .2); border-bottom: 1px solid rgba(52, 52, 46, .2); list-style: none; }
.ec-linen-reviews__list > li { display: grid; align-content: space-between; min-height: clamp(330px, 31vw, 490px); padding: clamp(25px, 3vw, 48px); border-left: 1px solid rgba(52, 52, 46, .2); }
.ec-linen-reviews__list > li:first-child { border-left: 0; }
.ec-linen-reviews__rating { color: var(--linen-sage); font: 500 11px / 1 var(--linen-sans); letter-spacing: .17em; }
/* The unearned stars are still drawn, so a four sits in the same measure as a
   five and the scores stay comparable down the row. */
.ec-linen-reviews__rating i { color: rgba(52, 52, 46, .22); font-style: normal; }
/* WooCommerce could match this review to an actual order. It is the one claim
   in this section the shop can stand behind, so it is stated plainly. */
.ec-linen-reviews__verified { display: inline-flex; align-items: center; gap: 6px; color: var(--linen-sage); font: 500 10px / 1 var(--linen-sans); letter-spacing: .14em; text-transform: uppercase; }
.ec-linen-reviews__verified::before { width: 5px; height: 5px; border-radius: 50%; background: currentColor; content: ''; }
.ec-linen-reviews__meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }
.ec-linen-reviews__meta a { color: var(--linen-muted); text-decoration: none; border-bottom: 1px solid rgba(52, 52, 46, .28); transition: color .25s ease, border-color .25s ease; }
.ec-linen-reviews__meta a:hover, .ec-linen-reviews__meta a:focus-visible { color: var(--linen-ink); border-bottom-color: currentColor; }
.ec-linen-reviews__meta time { color: var(--linen-muted); opacity: .75; }
.ec-linen-reviews blockquote { display: grid; align-content: space-between; gap: 28px; height: 100%; margin: 68px 0 0; }
.ec-linen-reviews blockquote p { margin: 0; font: 400 clamp(24px, 2.35vw, 37px) / 1.06 var(--linen-serif); letter-spacing: -.03em; }
.ec-linen-reviews blockquote footer { display: grid; gap: 6px; color: var(--linen-muted); font: 400 12px / 1.35 var(--linen-sans); }
.ec-linen-reviews blockquote cite { color: var(--linen-ink); font-style: normal; }

/* =============================================================================
   06 · PRODUCT FLOW
   The whole band is a product-only coverflow. There are no product names,
   prices, labels, or copy on screen: selecting the centre piece opens its
   dedicated product page.
   ============================================================================= */

.ec-linen-look { padding: 0; background: var(--linen-paper); }
.ec-linen-look__media { position: relative; min-height: clamp(560px, 58vw, 920px); overflow: hidden; isolation: isolate; background: var(--linen-paper); }
.ec-linen-look__track { position: absolute; inset: 0; margin: 0; padding: 0; list-style: none; perspective: 1300px; }
.ec-linen-look__slide { position: absolute; top: 50%; left: 50%; z-index: 0; width: clamp(240px, 29vw, 500px); aspect-ratio: 2 / 3; overflow: hidden; border: 1px solid rgba(255, 253, 248, .72); background: #ece7dc; box-shadow: 0 20px 48px rgba(58, 52, 39, .18); opacity: 0; pointer-events: none; transform: translate3d(-50%, -50%, -240px) scale(.62); transform-origin: center; transition: transform .95s cubic-bezier(.22, 1, .36, 1), opacity .7s ease, filter .7s ease; }
.ec-linen-look__slide::after { position: absolute; inset: 0; content: ''; pointer-events: none; background: linear-gradient(0deg, rgba(42, 43, 37, .45), rgba(42, 43, 37, .03) 57%); transition: background-color .7s ease; }
.ec-linen-look__slide.is-active { z-index: 3; opacity: 1; pointer-events: auto; transform: translate3d(-50%, -50%, 0) scale(1); }
.ec-linen-look__slide.is-prev { z-index: 2; opacity: .7; transform: translate3d(-133%, -50%, -180px) scale(.62) rotateY(10deg); filter: saturate(.82) brightness(.86); }
.ec-linen-look__slide.is-next { z-index: 2; opacity: .7; transform: translate3d(33%, -50%, -180px) scale(.62) rotateY(-10deg); filter: saturate(.82) brightness(.86); }
.ec-linen-look__slide.is-prev-far { z-index: 1; opacity: .38; transform: translate3d(-218%, -50%, -310px) scale(.46) rotateY(18deg); filter: saturate(.68) brightness(.8); }
.ec-linen-look__slide.is-next-far { z-index: 1; opacity: .38; transform: translate3d(118%, -50%, -310px) scale(.46) rotateY(-18deg); filter: saturate(.68) brightness(.8); }
.ec-linen-look__slide.is-out { opacity: 0; }
.ec-linen-look__slide > a { display: block; height: 100%; }
.ec-linen-look__slide img { display: block; width: 100%; height: 100%; object-fit: contain; object-position: center; }
.ec-linen-look__image:not([src]),
.ec-linen-index__image:not([src]) { display: none; }
@media (max-width: 900px) {
	.ec-linen-reviews__list { grid-template-columns: 1fr; }
	.ec-linen-reviews__list > li,
	.ec-linen-reviews__list > li:first-child { min-height: 0; border-top: 1px solid rgba(52, 52, 46, .2); border-left: 0; }
	.ec-linen-reviews__list > li:first-child { border-top: 0; }
	.ec-linen-reviews blockquote { min-height: 210px; margin-top: 42px; }
	.ec-linen-look__slide { width: clamp(260px, 48vw, 430px); }
	.ec-linen-look__slide.is-prev { transform: translate3d(-125%, -50%, -180px) scale(.6) rotateY(8deg); }
	.ec-linen-look__slide.is-next { transform: translate3d(25%, -50%, -180px) scale(.6) rotateY(-8deg); }
	.ec-linen-look__slide.is-prev-far,
	.ec-linen-look__slide.is-next-far { opacity: 0; }
}

/* =============================================================================
   04 · SCROLL PRODUCT SHOWCASE
   One Linen piece starts as a full frame, then resolves into its collection.
   The unanimated state is a compact, fully usable product grid fallback.
   ============================================================================= */

.ec-linen-film {
	--linen-film-gutter: clamp(14px, 3.6vw, 68px);
	--linen-film-gap: clamp(6px, .7vw, 12px);
	position: relative;
	overflow: clip;
	isolation: isolate;
	padding: clamp(52px, 8vw, 112px) var(--linen-film-gutter);
	background: var(--linen-cream);
	color: var(--linen-ink);
}
.ec-linen-film--feature { padding: 0; }
.ec-linen-film__feature { position: relative; width: 100%; isolation: isolate; }
.ec-linen-film__feature img { display: block; width: 100%; height: auto; }
.ec-linen-film__feature::after { position: absolute; z-index: 0; inset: 0; content: ''; background: linear-gradient(90deg, rgba(20, 19, 18, .38), rgba(20, 19, 18, .08) 48%, transparent 72%); pointer-events: none; }
.ec-linen-film__feature-copy { position: absolute; z-index: 1; top: clamp(34px, 6vw, 108px); left: clamp(24px, 6vw, 112px); max-width: min(38vw, 520px); color: #fffdf8; }
.ec-linen-film__feature-copy h2 { margin: 0 0 clamp(18px, 2vw, 30px); font: 400 clamp(36px, 5.4vw, 92px) / .95 var(--linen-serif); letter-spacing: -.045em; text-wrap: balance; }
.ec-linen-film__feature-copy a { position: relative; display: inline-flex; align-items: center; gap: 14px; padding-bottom: 9px; color: inherit; font: 500 10px / 1 var(--linen-sans); letter-spacing: .16em; text-decoration: none; text-transform: uppercase; }
.ec-linen-film__feature-copy a::after { position: absolute; right: 0; bottom: 0; left: 0; height: 1px; content: ''; background: currentColor; transform-origin: right; transition: transform .35s cubic-bezier(.22, 1, .36, 1); }
.ec-linen-film__feature-copy a:hover::after,
.ec-linen-film__feature-copy a:focus-visible::after { transform: scaleX(.38); }
.ec-linen-film__feature-copy a:focus-visible { outline: 2px solid #fffdf8; outline-offset: 6px; }
.ec-linen-film__sticky {
	position: relative;
	display: grid;
	place-items: center;
}
.ec-linen-film__grid {
	position: relative;
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	grid-template-rows: minmax(0, 1fr);
	/* Five 2:3 product blocks form one full-width edit. The canvas ratio is
	   exactly five portrait tiles wide, which removes the empty side space. */
	width: 100%;
	height: auto;
	aspect-ratio: 10 / 3;
	min-height: 0;
	gap: var(--linen-film-gap);
	margin: 0 auto;
}
.ec-linen-film__layer {
	display: grid;
	grid-column: 1 / -1;
	grid-row: 1 / -1;
	grid-template-columns: subgrid;
	grid-template-rows: subgrid;
	gap: inherit;
}
.ec-linen-film__product,
.ec-linen-film__scaler {
	display: block;
	min-width: 0;
	overflow: hidden;
	background: var(--linen-sand);
}
.ec-linen-film__product img,
.ec-linen-film__scaler img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	object-position: center;
}
.ec-linen-film__product {
	width: 100%;
	height: 100%;
}
.ec-linen-film__product img { object-fit: cover; }
.ec-linen-film__scaler img { object-fit: cover; }
.ec-linen-film__layer[data-linen-film-layer="1"] .ec-linen-film__product:nth-child(1) { grid-column: 1; grid-row: 1; }
.ec-linen-film__layer[data-linen-film-layer="1"] .ec-linen-film__product:nth-child(2) { grid-column: 2; grid-row: 1; }
.ec-linen-film__layer[data-linen-film-layer="1"] .ec-linen-film__product:nth-child(3) { grid-column: 4; grid-row: 1; }
.ec-linen-film__layer[data-linen-film-layer="1"] .ec-linen-film__product:nth-child(4) { grid-column: 5; grid-row: 1; }
.ec-linen-film__scaler {
	position: relative;
	z-index: 3;
	grid-column: 3;
	grid-row: 1;
}
.ec-linen-film__line {
	max-width: 18ch;
	margin: clamp(26px, 4vw, 54px) auto 0;
	color: var(--linen-ink);
	font: 400 clamp(34px, 5vw, 82px) / .98 var(--linen-serif);
	letter-spacing: -.04em;
	text-align: center;
	text-wrap: balance;
}
.ec-linen-film__product:focus-visible,
.ec-linen-film__scaler:focus-visible {
	position: relative;
	z-index: 5;
	outline: 2px solid var(--linen-ink);
	outline-offset: 3px;
}

.ec-linen-film.is-film-animated {
	/* Enough travel for the reveal, without a long empty scroll section. */
	min-height: 225svh;
	padding: 0;
}
.ec-linen-film.is-film-animated .ec-linen-film__sticky {
	position: sticky;
	top: var(--linen-film-top, 0px);
	min-height: calc(100svh - var(--linen-film-top, 0px));
	overflow: clip;
}
.ec-linen-film.is-film-animated .ec-linen-film__grid {
	position: absolute;
	top: 50%;
	left: 50%;
	max-height: calc(100svh - var(--linen-film-top, 0px) - 12px);
	translate: -50% -50%;
	margin: 0;
}
.ec-linen-film.is-film-animated .ec-linen-film__layer {
	opacity: 0;
	transform: scale(.82);
	transform-origin: center;
	will-change: opacity, transform;
	transition: opacity .48s cubic-bezier(.22, 1, .36, 1), transform .62s cubic-bezier(.22, 1, .36, 1);
}
.ec-linen-film.is-film-animated .ec-linen-film__scaler {
	position: absolute;
	top: 50%;
	left: 50%;
	grid-column: auto;
	grid-row: auto;
	transform: translate3d(-50%, -50%, 0);
	will-change: width, height;
	transition: width .62s cubic-bezier(.22, 1, .36, 1), height .62s cubic-bezier(.22, 1, .36, 1);
}
.ec-linen-film.is-film-animated .ec-linen-film__line {
	position: absolute;
	z-index: 4;
	bottom: clamp(34px, 6vw, 86px);
	left: 50%;
	width: min(86vw, 18ch);
	margin: 0;
	color: #fffdf8;
	translate: -50% 0;
	text-shadow: 0 2px 24px rgba(36, 34, 28, .36);
	will-change: opacity, transform;
	transition: opacity .42s ease, transform .62s cubic-bezier(.22, 1, .36, 1);
}

@media (max-width: 700px) {
	.ec-linen-film { --linen-film-gutter: 14px; --linen-film-gap: 8px; padding-block: 38px 44px; }
	.ec-linen-film--feature { padding: 0; }
	.ec-linen-film__feature-copy { top: 22px; right: 20px; left: 20px; max-width: 72vw; }
	.ec-linen-film__feature-copy h2 { font-size: clamp(30px, 9vw, 46px); }
	.ec-linen-film__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: repeat(3, minmax(0, 1fr)); width: min(100%, 380px); height: min(74svh, 570px); min-height: 520px; aspect-ratio: auto; }
	.ec-linen-film__layer[data-linen-film-layer="1"] .ec-linen-film__product:nth-child(1) { grid-column: 1; grid-row: 1; }
	.ec-linen-film__layer[data-linen-film-layer="1"] .ec-linen-film__product:nth-child(2) { grid-column: 3; grid-row: 1; }
	.ec-linen-film__layer[data-linen-film-layer="1"] .ec-linen-film__product:nth-child(3) { grid-column: 1; grid-row: 3; }
	.ec-linen-film__layer[data-linen-film-layer="1"] .ec-linen-film__product:nth-child(4) { grid-column: 3; grid-row: 3; }
	.ec-linen-film__scaler { grid-column: 2; grid-row: 2; }
	.ec-linen-film.is-film-animated { min-height: 205svh; }
	.ec-linen-film.is-film-animated .ec-linen-film__line { bottom: 28px; }
}

@media (prefers-reduced-motion: reduce) {
	.ec-linen-film.is-film-animated { min-height: auto; padding: clamp(52px, 8vw, 112px) var(--linen-film-gutter); }
	.ec-linen-film.is-film-animated .ec-linen-film__sticky { position: relative; min-height: 0; overflow: visible; }
	.ec-linen-film.is-film-animated .ec-linen-film__grid { position: relative; top: auto; left: auto; translate: none; margin: 0 auto; }
	.ec-linen-film.is-film-animated .ec-linen-film__layer { opacity: 1; transform: none; }
	.ec-linen-film.is-film-animated .ec-linen-film__scaler { position: relative; top: auto; left: auto; width: auto !important; height: auto !important; grid-column: 3; grid-row: 2; transform: none; }
	.ec-linen-film.is-film-animated .ec-linen-film__line { position: static; width: auto; margin: clamp(26px, 4vw, 54px) auto 0; color: var(--linen-ink); translate: none; text-shadow: none; opacity: 1 !important; transform: none !important; }
}

/* =============================================================================
   05 · WINTER NEW ARRIVALS
   A concise, four-piece edit gives the latest Winter pieces a clear moment
   without interrupting the spacious Linen rhythm.
   ============================================================================= */

.ec-linen-arrivals { padding: clamp(72px, 10vw, 154px) 0 clamp(82px, 11vw, 172px); background: var(--linen-cream); }
.ec-linen-arrivals__head { display: flex; align-items: baseline; justify-content: space-between; gap: 24px; margin-bottom: clamp(30px, 4vw, 58px); }
.ec-linen-arrivals__head p { margin: 0; color: var(--linen-sage); font: 500 10px / 1.3 var(--linen-sans); letter-spacing: .2em; text-transform: uppercase; }
.ec-linen-arrivals__head h2 { margin: 0; color: var(--linen-ink); font: 400 clamp(42px, 5.8vw, 92px) / .92 var(--linen-serif); letter-spacing: -.045em; }
.ec-linen-arrivals__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(12px, 1.6vw, 24px); }
.ec-linen-arrivals__item { min-width: 0; }
.ec-linen-arrivals__item a { display: block; color: var(--linen-ink); text-decoration: none; }
.ec-linen-arrivals__frame { display: block; aspect-ratio: 2 / 3; overflow: hidden; background: #ded6c8; }
.ec-linen-arrivals__frame img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; transition: transform 1.1s cubic-bezier(.22, 1, .36, 1); }
.ec-linen-arrivals__item a:hover .ec-linen-arrivals__frame img,
.ec-linen-arrivals__item a:focus-visible .ec-linen-arrivals__frame img { transform: scale(1.045); }
.ec-linen-arrivals__meta { display: grid; gap: 5px; padding-top: 14px; }
.ec-linen-arrivals__meta small { color: var(--linen-sage); font: 500 9px / 1.25 var(--linen-sans); letter-spacing: .16em; text-transform: uppercase; }
.ec-linen-arrivals__meta strong { font: 400 clamp(18px, 1.55vw, 25px) / 1.05 var(--linen-serif); letter-spacing: -.035em; }
.ec-linen-arrivals__meta em { color: var(--linen-muted); font: 400 13px / 1.3 var(--linen-sans); font-style: normal; }

@media (max-width: 900px) {
	.ec-linen-arrivals__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
	.ec-linen-arrivals__head { display: grid; gap: 12px; }
	.ec-linen-arrivals__head h2 { order: -1; }
}

/* =============================================================================
   06 · EDITORIAL
   Type carries this band; the image answers it.
   ============================================================================= */

.ec-linen-editorial { padding: clamp(80px, 11vw, 180px) 0 clamp(88px, 12vw, 190px); background: var(--linen-cream); }
.ec-linen-editorial__layout {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(280px, .95fr);
	align-items: center;
	gap: clamp(40px, 7vw, 110px);
}
.ec-linen-editorial h2 {
	margin: 0 0 clamp(34px, 4.4vw, 56px);
	font: 400 clamp(62px, 9.4vw, 168px) / .92 var(--linen-serif);
	letter-spacing: -.045em;
	text-transform: uppercase;
}
.ec-linen-editorial__image {
	align-self: stretch;
	min-height: clamp(420px, 44vw, 720px);
	overflow: hidden;
	background: linear-gradient(145deg, #98aaa2 0%, #d4d8ca 39%, #eee5d7 100%);
}
.ec-linen-editorial__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: translate3d(0, var(--linen-parallax-y, 0), 0) scale(1.05);
	will-change: transform;
}

/* =============================================================================
   MOTION
   Slow, single-direction, once per element. Linen does not bounce.

   The hidden state is applied only once linen.js has confirmed it is running
   and motion is wanted — `ec-linen-motion` on <html>. Without the script, or
   under reduced motion, nothing is ever hidden.
   ============================================================================= */

html.ec-linen-motion .ec-linen [data-linen-reveal] {
	opacity: 0;
	transform: translate3d(0, 3.5rem, 0);
	transition:
		opacity 1.3s cubic-bezier(.16, 1, .3, 1),
		transform 1.55s cubic-bezier(.16, 1, .3, 1);
	will-change: opacity, transform;
}
html.ec-linen-motion .ec-linen [data-linen-reveal].is-inview {
	opacity: 1;
	transform: translate3d(0, 0, 0);
	will-change: auto;
}

/* A small stagger keeps product rows and review notes feeling like one
   editorial composition, rather than many unrelated card animations. */
html.ec-linen-motion .ec-linen-hero h1[data-linen-reveal] { transition-delay: .7s; }
html.ec-linen-motion .ec-linen-arrivals__item:nth-child(2)[data-linen-reveal],
html.ec-linen-motion .ec-linen-featured__item:nth-child(2)[data-linen-reveal],
html.ec-linen-motion .ec-linen-reviews__list > li:nth-child(2)[data-linen-reveal] { transition-delay: .16s; }
html.ec-linen-motion .ec-linen-arrivals__item:nth-child(3)[data-linen-reveal],
html.ec-linen-motion .ec-linen-featured__item:nth-child(3)[data-linen-reveal],
html.ec-linen-motion .ec-linen-reviews__list > li:nth-child(3)[data-linen-reveal] { transition-delay: .32s; }
html.ec-linen-motion .ec-linen-arrivals__item:nth-child(4)[data-linen-reveal] { transition-delay: .48s; }

@keyframes linen-sun-drift {
	from { transform: skewX(-9deg) translate3d(-3%, 0, 0); }
	to   { transform: skewX(-9deg) translate3d(4%, 2%, 0); }
}

/* =============================================================================
   RESPONSIVE
   Intentional layouts, not a shrunken desktop.
   ============================================================================= */

@media (max-width: 1000px) {
	.ec-linen-collection__layout,
	.ec-linen-editorial__layout { grid-template-columns: minmax(0, 1fr); gap: clamp(28px, 6vw, 46px); }
	.ec-linen-collection__copy,
	.ec-linen-editorial__copy { max-width: none; }
	.ec-linen-collection__image { min-height: clamp(360px, 74vw, 560px); }
	.ec-linen-editorial__image { min-height: clamp(340px, 70vw, 520px); }

	/* The large·small·large rhythm needs width. Below it the row becomes a
	   swipeable strip rather than three slivers. */
	.ec-linen-featured__row {
		grid-template-columns: none;
		grid-auto-flow: column;
		grid-auto-columns: 68%;
		gap: 16px;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
		padding-bottom: 6px;
	}
	.ec-linen-featured__row::-webkit-scrollbar { display: none; }
	.ec-linen-featured__item { scroll-snap-align: start; }
	.ec-linen-featured__item:nth-child(2) { margin-top: 0; }
	.ec-linen-featured__item:nth-child(2) .ec-linen-featured__frame { aspect-ratio: 2 / 3; }
}

@media (max-width: 640px) {
	.ec-linen-category-pair { padding-inline: 0; }
	.ec-linen-category-pair__grid { max-width: none; grid-template-columns: 1fr; gap: 2px; }
	.ec-linen-category-pair__item { min-height: 0; }
	.ec-linen-category-pair__copy { padding: 23px 20px; }
	.ec-linen-category-pair__copy strong { font-size: 16px; }
	.ec-linen-featured__row { grid-auto-columns: 80%; }
	.ec-linen-hero h1 { max-width: none; }
	.ec-linen-look__media { min-height: min(128vw, 670px); }
	.ec-linen-look__slide { top: 50%; bottom: auto; width: 70%; }
	.ec-linen-look__slide.is-prev { transform: translate3d(-108%, -50%, -160px) scale(.67) rotateY(7deg); }
	.ec-linen-look__slide.is-next { transform: translate3d(8%, -50%, -160px) scale(.67) rotateY(-7deg); }
	.ec-linen-look__slide.is-prev-far,
	.ec-linen-look__slide.is-next-far { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
	html.ec-linen-boot body.ec-linen-page .ec-header {
		opacity: 1;
		pointer-events: auto;
		transform: none;
	}
	.ec-linen-hero__sun { animation: none; }
	.ec-linen-hero__media img,
	.ec-linen-collection__image img,
	.ec-linen-editorial__image img,
	.ec-linen-featured__frame img,
	.ec-linen-look__slide { transition: none; }
	.ec-linen-look__slide img { transform: none !important; transition: none; }
	html.ec-linen-motion .ec-linen [data-linen-reveal] { opacity: 1; transform: none; }
}

/* =============================================================================
   LINEN SUBPAGES
   These routes stay in the same calm world without borrowing Party Wear's
   catalogue, About, or Contact layouts. They use CSS-only visual fields until
   final Linen imagery is supplied.
   ============================================================================= */

body.ec-linen-subpage .ec-header {
	position: sticky;
	top: 0;
	z-index: 90;
	border-bottom-color: rgba(86, 93, 79, .15);
	background: rgba(250, 247, 240, .96);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
}
/* The WordPress admin bar changes the visible viewport origin. Keep every
   Linen subpage masthead below it instead of letting the top of the brand
   slip underneath while the header is sticky. */
body.admin-bar.ec-linen-subpage .ec-header { top: 32px; }
@media screen and (max-width: 782px) {
	body.admin-bar.ec-linen-subpage .ec-header { top: 46px; }
}
body.ec-linen-subpage .ec-header .ec-nav__link,
body.ec-linen-subpage .ec-header .ec-action,
body.ec-linen-subpage .ec-header .ec-navtoggle,
body.ec-linen-subpage .ec-header .ec-brand { color: var(--ec-ink); }
body.ec-linen-subpage .ec-header .ec-brand__tag { color: var(--ec-ink-muted); }
body.ec-linen-subpage .ec-header .ec-brand__mark::before { filter: none; }

/* Linen shop — an index to browse rather than a standard product grid. */
.ec-linen-index { padding: 0 0 clamp(84px, 12vw, 180px); }
.ec-linen-index__intro { display: grid; grid-template-columns: minmax(110px, .28fr) minmax(0, 1fr); align-items: start; gap: 30px; padding-bottom: clamp(66px, 9vw, 142px); }
.ec-linen-index__intro h1,
.ec-linen-about h1,
.ec-linen-contact h1 { margin: 0; font: 400 clamp(62px, 10vw, 165px) / .93 var(--linen-serif); letter-spacing: -.045em; }
.ec-linen-index__intro div > p { max-width: 270px; margin: 29px 0 0; color: var(--linen-muted); font: 400 15px / 1.65 var(--linen-sans); }
.ec-linen-index__catalogue { border-top: 1px solid rgba(52, 52, 46, .18); }
.ec-linen-index__tools { display: flex; align-items: center; justify-content: space-between; gap: 28px; min-height: 82px; border-bottom: 1px solid rgba(52, 52, 46, .18); }
.ec-linen-index__filters { display: flex; flex-wrap: wrap; gap: 9px clamp(16px, 2.4vw, 38px); }
.ec-linen-index__filters button { position: relative; min-height: 43px; padding: 0; border: 0; border-radius: 0; -webkit-appearance: none; appearance: none; box-shadow: none; color: var(--linen-muted); background: transparent; cursor: pointer; font: 500 9px / 1 var(--linen-sans); letter-spacing: .16em; text-transform: uppercase; transition: color .35s ease; }
.ec-linen-index__filters button::after { position: absolute; right: 0; bottom: 0; left: 0; height: 1px; content: ''; pointer-events: none; background: currentColor; border-radius: 0; transform: scaleX(0); transform-origin: right center; transition: transform .25s ease; }
.ec-linen-index__filters button:hover,
.ec-linen-index__filters button:focus-visible,
.ec-linen-index__filters button.is-active { color: var(--linen-ink); outline: 0; }
.ec-linen-index__filters button:hover::after,
.ec-linen-index__filters button:focus-visible::after,
.ec-linen-index__filters button.is-active::after { transform: scaleX(1); transform-origin: left center; }
.ec-linen-index__tools > p { flex: 0 0 auto; margin: 0; color: var(--linen-sage); font: 500 9px / 1 var(--linen-sans); letter-spacing: .17em; text-transform: uppercase; }
.ec-linen-index__list { display: grid; border-bottom: 1px solid rgba(52, 52, 46, .18); }
.ec-linen-index__piece { border-top: 1px solid rgba(52, 52, 46, .18); }
.ec-linen-index__piece:first-child { border-top: 0; }
.ec-linen-index__piece > a { display: grid; grid-template-columns: minmax(36px, .13fr) minmax(190px, .53fr) minmax(260px, .82fr) auto; align-items: center; gap: clamp(22px, 4vw, 74px); min-height: clamp(200px, 20vw, 330px); color: inherit; text-decoration: none; transition: color .45s ease; }
.ec-linen-index__number { align-self: start; padding-top: clamp(28px, 4vw, 55px); color: var(--linen-sage); font: 500 9px / 1 var(--linen-sans); letter-spacing: .15em; }
.ec-linen-index__surface { display: block; align-self: stretch; min-height: 165px; overflow: hidden; background: linear-gradient(144deg, #d2c0a6, #eee9df 67%, #aebeb6); transition: transform .8s cubic-bezier(.22, 1, .36, 1), filter .6s ease; }
.ec-linen-index__surface img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; transition: transform .8s cubic-bezier(.22, 1, .36, 1); }
.ec-linen-index__piece:nth-child(2n) .ec-linen-index__surface { background: linear-gradient(130deg, #b3c0ba, #e9e1d3 67%, #cab89f); }
.ec-linen-index__piece:nth-child(3n) .ec-linen-index__surface { background: linear-gradient(135deg, #e8dfcf, #bdaf99 58%, #91a59b); }
.ec-linen-index__details { display: grid; gap: 10px; align-content: center; }
.ec-linen-index__details small { color: var(--linen-sage); font: 500 9px / 1.2 var(--linen-sans); letter-spacing: .18em; text-transform: uppercase; }
.ec-linen-index__details strong { font: 400 clamp(32px, 4vw, 65px) / .98 var(--linen-serif); letter-spacing: -.035em; }
.ec-linen-index__details em { color: var(--linen-muted); font: 400 14px / 1.2 var(--linen-sans); font-style: normal; }
.ec-linen-index__arrow { align-self: end; padding-bottom: clamp(25px, 4vw, 55px); font: 400 20px / 1 var(--linen-sans); transition: transform .55s cubic-bezier(.22, 1, .36, 1); }
.ec-linen-index__piece > a:hover,
.ec-linen-index__piece > a:focus-visible { color: var(--linen-sage); outline: 0; }
.ec-linen-index__piece > a:hover .ec-linen-index__surface,
.ec-linen-index__piece > a:focus-visible .ec-linen-index__surface { filter: saturate(.85); transform: scale(.97); }
.ec-linen-index__piece > a:hover .ec-linen-index__surface img,
.ec-linen-index__piece > a:focus-visible .ec-linen-index__surface img { transform: scale(1.05); }
.ec-linen-index__piece > a:hover .ec-linen-index__arrow,
.ec-linen-index__piece > a:focus-visible .ec-linen-index__arrow { transform: translateX(8px); }
.ec-linen-index__piece[hidden] { display: none; }

/* The shop is intentionally static: product discovery is a direct catalogue,
   not an animated editorial moment. Keep hover and keyboard feedback, but
   remove movement so scanning never competes with shopping. */
.ec-linen-index .ec-linen-index__piece > a,
.ec-linen-index .ec-linen-index__surface,
.ec-linen-index .ec-linen-index__surface img,
.ec-linen-index .ec-linen-index__arrow { transition: none; }
.ec-linen-index .ec-linen-index__piece > a:hover .ec-linen-index__surface,
.ec-linen-index .ec-linen-index__piece > a:focus-visible .ec-linen-index__surface { filter: none; transform: none; }
.ec-linen-index .ec-linen-index__piece > a:hover .ec-linen-index__surface img,
.ec-linen-index .ec-linen-index__piece > a:focus-visible .ec-linen-index__surface img,
.ec-linen-index .ec-linen-index__piece > a:hover .ec-linen-index__arrow,
.ec-linen-index .ec-linen-index__piece > a:focus-visible .ec-linen-index__arrow { transform: none; }
.ec-linen-index .ec-linen-index__filters button:focus-visible { outline: 2px solid var(--linen-ink); outline-offset: 4px; }
.ec-linen-index .ec-linen-index__piece > a:focus-visible { outline: 2px solid var(--linen-ink); outline-offset: -2px; }

/* Desktop product wheel: vertical scrolling drives a calm, tyre-like rotation.
   It is added only by linen.js when motion is allowed. The source list remains
   the fallback for mobile, keyboard-only browsing and reduced motion. */
@media (min-width: 901px) {
	.ec-linen-index--wheel .ec-linen-index__wheel-stage { position: relative; min-height: min(100svh, 920px); }
	.ec-linen-index--wheel .ec-linen-index__list { position: sticky; top: 0; display: block; height: min(100svh, 920px); overflow: hidden; border-bottom: 0; perspective: 1500px; perspective-origin: 50% 50%; }
	.ec-linen-index--wheel .ec-linen-index__piece { position: absolute; inset: 0; display: grid; align-items: center; border: 0; opacity: var(--linen-wheel-opacity, 0); pointer-events: none; transform: translate3d(0, var(--linen-wheel-y, 60vh), var(--linen-wheel-z, -300px)) rotateX(var(--linen-wheel-rotate, -60deg)) scale(var(--linen-wheel-scale, .88)); transform-style: preserve-3d; will-change: transform, opacity; }
	.ec-linen-index--wheel .ec-linen-index__piece.is-linen-wheel-active { pointer-events: auto; }
	.ec-linen-index--wheel .ec-linen-index__piece[hidden] { display: none; }
	/* The wheel is deliberately smaller than the viewport. Keeping a 2:3
	   portrait frame lets every supplied 1000×1500 product image show the
	   model's face and full look rather than cropping its top edge. */
	.ec-linen-index--wheel .ec-linen-index__piece > a { width: 100%; min-height: min(60svh, 560px); }
	.ec-linen-index--wheel .ec-linen-index__surface { align-self: center; justify-self: center; width: min(100%, clamp(280px, 24vw, 460px)); min-height: 0; aspect-ratio: 2 / 3; }
	.ec-linen-index--wheel .ec-linen-index__surface img { object-fit: contain; }
	.ec-linen-index--wheel .ec-linen-index__piece > a:hover .ec-linen-index__surface img,
	.ec-linen-index--wheel .ec-linen-index__piece > a:focus-visible .ec-linen-index__surface img { transform: none; }
}

/* Linen product detail — it follows the proven Party Wear PDP structure:
   gallery on the left, sticky purchase panel on the right, then related
   pieces. Its palette and type remain entirely Linen. */
.ec-linen-product { padding-bottom: clamp(78px, 10vw, 160px); background: var(--linen-paper); }
.ec-linen-product__crumbs { display: flex; align-items: center; gap: 9px; min-height: 72px; overflow: hidden; color: var(--linen-muted); border-bottom: 1px solid rgba(52, 52, 46, .18); font: 500 9px / 1 var(--linen-sans); letter-spacing: .15em; text-transform: uppercase; white-space: nowrap; }
.ec-linen-product__crumbs a { color: var(--linen-ink); text-decoration: none; }
.ec-linen-product__crumbs a:hover,
.ec-linen-product__crumbs a:focus-visible { color: var(--linen-sage); }
.ec-linen-product__crumbs span[aria-current='page'] { overflow: hidden; text-overflow: ellipsis; }
.ec-linen-product__layout { display: grid; grid-template-columns: minmax(0, 560px) minmax(360px, 1fr); align-items: start; border-bottom: 1px solid rgba(52, 52, 46, .18); }
.ec-linen-product__media { min-width: 0; background: rgba(52, 52, 46, .18); }
.ec-linen-product__gallery { display: grid; gap: 1px; }
.ec-linen-product__media figure { width: 100%; aspect-ratio: 2 / 3; min-height: 0; margin: 0; overflow: hidden; background: #e4e2dd; }
.ec-linen-product__media img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.ec-linen-product__summary { position: sticky; top: 82px; min-width: 0; min-height: 0; padding: clamp(28px, 3vw, 46px) clamp(24px, 4vw, 64px); border-left: 1px solid rgba(52, 52, 46, .18); }
.ec-linen-product__identity { padding-bottom: 22px; }
.ec-linen-product__identity .ec-linen-kicker { margin: 0 0 12px; }
.ec-linen-product__title-row { display: flex; align-items: start; justify-content: space-between; gap: 24px; }
.ec-linen-product__title-row h1 { max-width: 600px; margin: 0; font: 400 clamp(30px, 2.5vw, 40px) / 1.04 var(--linen-serif); letter-spacing: -.03em; }
.ec-linen-product__wishlist { display: inline-grid; flex: 0 0 auto; width: 36px; height: 36px; place-items: center; padding: 0; border: 1px solid rgba(52, 52, 46, .24); border-radius: 50%; color: var(--linen-ink); background: transparent; cursor: pointer; transition: color .2s ease, border-color .2s ease, background-color .2s ease, transform .2s ease; }
.ec-linen-product__wishlist:hover,
.ec-linen-product__wishlist:focus-visible { border-color: #b3263b; color: #b3263b; outline: 0; }
.ec-linen-product__wishlist[aria-pressed='true'] { border-color: #b3263b; color: #b3263b; background: rgba(179, 38, 59, .08); transform: scale(1.04); }
.ec-linen-product__wishlist:focus-visible { box-shadow: 0 0 0 2px rgba(179, 38, 59, .28); }
.ec-linen-product__price { margin: 13px 0 0; color: var(--linen-ink); font: 400 16px / 1.3 var(--linen-sans); }
.ec-linen-product__form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; padding: 20px 0; border-bottom: 0; }
.ec-linen-product__quantity,
.ec-linen-product__form fieldset,
.ec-linen-product__status { grid-column: 1 / -1; }
.ec-linen-product__add { grid-column: 1; }
.ec-linen-product__buy-now { grid-column: 2; }
.ec-linen-product__form fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.ec-linen-product__field-head { display: flex; align-items: baseline; justify-content: space-between; gap: 18px; }
.ec-linen-product__field-head legend { padding: 0; color: var(--linen-ink); font: 500 10px / 1 var(--linen-sans); letter-spacing: .16em; text-transform: uppercase; }
.ec-linen-product__field-head a { color: var(--linen-ink); font: 500 10px / 1 var(--linen-sans); letter-spacing: .14em; text-decoration: underline; text-transform: uppercase; text-underline-offset: 5px; }
.ec-linen-product__field-head a:hover,
.ec-linen-product__field-head a:focus-visible { color: var(--linen-sage); }
.ec-linen-product__sizes { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.ec-linen-product__sizes input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.ec-linen-product__sizes label { display: grid; min-width: 54px; min-height: 48px; padding: 0 14px; place-items: center; border: 1px solid rgba(52, 52, 46, .24); color: var(--linen-ink); cursor: pointer; font: 500 10px / 1 var(--linen-sans); transition: color .2s ease, border-color .2s ease, background-color .2s ease; }
.ec-linen-product__sizes label:hover { border-color: var(--linen-ink); background: transparent; }
.ec-linen-product__sizes input:checked + label { border-color: var(--linen-ink); color: #fffdf8; background: var(--linen-ink); }
.ec-linen-product__sizes input:focus-visible + label { outline: 2px solid var(--linen-ink); outline-offset: 2px; }
.ec-linen-product__quantity { display: grid; grid-template-columns: 38px 1fr 38px; width: 148px; align-items: center; min-height: 48px; border: 1px solid rgba(52, 52, 46, .24); }
.ec-linen-product__quantity button { height: 100%; padding: 0; border: 0; color: var(--linen-ink); background: transparent; cursor: pointer; font: 400 19px / 1 var(--linen-sans); }
.ec-linen-product__quantity button:hover,
.ec-linen-product__quantity button:focus-visible { color: var(--linen-sage); outline: 0; }

.ec-linen-product__quantity input { width: 100%; min-width: 0; padding: 0; border: 0; color: var(--linen-ink); background: transparent; font: 400 14px / 1 var(--linen-sans); text-align: center; -moz-appearance: textfield; }
.ec-linen-product__quantity input::-webkit-inner-spin-button,
.ec-linen-product__quantity input::-webkit-outer-spin-button { margin: 0; -webkit-appearance: none; }
.ec-linen-product__add { display: flex; width: 100%; align-items: center; justify-content: center; min-height: 52px; padding: 0 20px; border: 1px solid var(--linen-ink); border-radius: 0; color: #fffdf8; background: var(--linen-ink); cursor: pointer; font: 500 10px / 1 var(--linen-sans); letter-spacing: .16em; text-transform: uppercase; transition: color .25s ease, background-color .25s ease; }
.ec-linen-product__add:hover,
.ec-linen-product__add:focus-visible { color: var(--linen-ink); background: transparent; outline: 0; }
.ec-linen-product__add.is-added { color: var(--linen-ink); background: rgba(144, 155, 134, .18); }
.ec-linen-product__buy-now { display: flex; width: 100%; align-items: center; justify-content: center; min-height: 52px; padding: 0 20px; border: 1px solid var(--linen-ink); color: var(--linen-ink); background: transparent; cursor: pointer; font: 500 10px / 1 var(--linen-sans); letter-spacing: .16em; text-transform: uppercase; transition: color .25s ease, background-color .25s ease; }
.ec-linen-product__buy-now:hover,
.ec-linen-product__buy-now:focus-visible { color: #fffdf8; background: var(--linen-ink); outline: 0; }
.ec-linen-product__stock { margin: 10px 0 0; color: #864e49; font: 500 11px / 1.35 var(--linen-sans); letter-spacing: .13em; text-transform: uppercase; }
.ec-linen-product__form.is-out-of-stock :is(.ec-linen-product__quantity, fieldset) { opacity: .48; }
.ec-linen-product__form :is(.ec-linen-product__add, .ec-linen-product__buy-now)[disabled] { cursor: not-allowed; opacity: .48; }
.ec-linen-product__form :is(.ec-linen-product__add, .ec-linen-product__buy-now)[disabled]:hover { color: inherit; background: transparent; }
.ec-linen-product__status { min-height: 0; margin: -10px 0 0; color: var(--linen-sage); font: 400 13px / 1.4 var(--linen-sans); }
.ec-linen-product__status.is-error { color: #864e49; }
.ec-linen-product__status.is-out-of-stock { color: #864e49; }
.ec-linen-product__details { border-bottom: 1px solid rgba(52, 52, 46, .18); }
.ec-linen-product__details details { border-top: 1px solid rgba(52, 52, 46, .18); }
.ec-linen-product__details details:first-child { border-top: 0; }
.ec-linen-product__details summary { display: flex; align-items: center; justify-content: space-between; min-height: 56px; cursor: pointer; list-style: none; font: 500 10px / 1 var(--linen-sans); letter-spacing: .15em; text-transform: uppercase; }
.ec-linen-product__details summary::-webkit-details-marker { display: none; }
.ec-linen-product__details summary::after { content: '+'; font: 400 18px / 1 var(--linen-sans); }
.ec-linen-product__details details[open] summary::after { content: '−'; }
.ec-linen-product__details p,
.ec-linen-product__details :is(ul, ol) { max-width: 500px; margin: -4px 0 24px; color: var(--linen-muted); font: 400 14px / 1.65 var(--linen-sans); }
.ec-linen-product__details :is(ul, ol) { padding: 0; list-style: none; }
.ec-linen-product__details :is(ul, ol) li { margin: 0; font: inherit; }
.ec-linen-product__details :is(ul, ol) li + li { margin-top: 3px; }
.ec-linen-product__related { padding-top: clamp(85px, 11vw, 180px); }
.ec-linen-product__related-head { display: grid; grid-template-columns: minmax(130px, .24fr) minmax(0, 1fr) auto; align-items: end; gap: 25px; margin-bottom: clamp(40px, 5vw, 75px); }
.ec-linen-product__related-head .ec-linen-kicker { margin: 0 0 9px; }
.ec-linen-product__related-head h2 { max-width: 620px; margin: 0; font: 400 clamp(45px, 5.7vw, 94px) / .95 var(--linen-serif); letter-spacing: -.048em; }
.ec-linen-product__related-head a { position: relative; align-self: end; min-width: 154px; padding-bottom: 10px; border: 0; color: var(--linen-ink); font: 500 9px / 1 var(--linen-sans); letter-spacing: .15em; text-decoration: none; text-transform: uppercase; }
.ec-linen-product__related-head a span { float: right; font-size: 14px; }
.ec-linen-product__related-head a:hover,
.ec-linen-product__related-head a:focus-visible { color: var(--linen-sage); }
.ec-linen-product__related-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(12px, 2.4vw, 39px); }
.ec-linen-product__related-grid > a { min-width: 0; color: var(--linen-ink); text-decoration: none; }
.ec-linen-product__related-image { display: block; aspect-ratio: 2 / 3; overflow: hidden; background: #e7e4dd; }
.ec-linen-product__related-image img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .7s cubic-bezier(.22, 1, .36, 1); }
.ec-linen-product__related-grid > a:hover img,
.ec-linen-product__related-grid > a:focus-visible img { transform: scale(1.045); }
.ec-linen-product__related-grid > a > span:last-child { display: grid; gap: 8px; padding-top: 15px; }
.ec-linen-product__related-grid small { color: var(--linen-sage); font: 500 9px / 1 var(--linen-sans); letter-spacing: .15em; text-transform: uppercase; }
.ec-linen-product__related-grid strong { font: 400 clamp(23px, 2.1vw, 34px) / 1 var(--linen-serif); letter-spacing: -.03em; }
.ec-linen-product__related-grid em { color: var(--linen-muted); font: 400 13px / 1.3 var(--linen-sans); font-style: normal; }

/* Collections stays intentionally empty. The footer follows the masthead. */
.ec-linen-collections { min-height: 0; background: var(--linen-paper); }

/* Linen About — a compact brand story with a clear editorial rhythm. */
.ec-linen-about__opening { display: grid; grid-template-columns: minmax(0, .78fr) minmax(320px, .82fr); align-items: end; gap: clamp(38px, 8vw, 140px); padding-top: clamp(68px, 8vw, 122px); padding-bottom: clamp(60px, 7vw, 106px); border-bottom: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-about__intro { max-width: 520px; padding-bottom: clamp(2px, 1vw, 15px); }
.ec-linen-about .ec-linen-kicker { color: var(--linen-muted); font-weight: 400; font-size: 9px; letter-spacing: .2em; }
.ec-linen-about h1 { max-width: 13ch; margin: 21px 0 18px; color: var(--linen-ink); font: 300 clamp(39px, 4.3vw, 61px) / 1.02 var(--linen-serif); letter-spacing: -.05em; }
.ec-linen-about__lede { max-width: 43ch; margin: 0; color: var(--linen-muted); font: 300 14px / 1.72 var(--linen-sans); }
.ec-linen-about__note { max-width: 37ch; margin: 20px 0 0; color: var(--linen-sage); font: 400 10px / 1.55 var(--linen-sans); letter-spacing: .05em; }
.ec-linen-about__hero-media,
.ec-linen-about__story-media,
.ec-linen-about__material-media,
.ec-linen-contact__help-media { margin: 0; overflow: hidden; background: var(--linen-sand); }
.ec-linen-about__hero-media { aspect-ratio: 3 / 4; }
.ec-linen-about__hero-media img,
.ec-linen-about__story-media img,
.ec-linen-about__material-media img,
.ec-linen-contact__help-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ec-linen-about__story { display: grid; grid-template-columns: minmax(110px, .2fr) minmax(0, .55fr) minmax(255px, .43fr); align-items: start; gap: clamp(28px, 5vw, 86px); padding-top: clamp(58px, 8vw, 116px); padding-bottom: clamp(58px, 8vw, 116px); }
.ec-linen-about__story-label { padding-top: 5px; }
.ec-linen-about__story-copy { max-width: 525px; }
.ec-linen-about__story-media { aspect-ratio: 4 / 5; }
.ec-linen-about__story-copy h2 { max-width: 20ch; margin: 0 0 22px; font: 300 clamp(28px, 2.6vw, 42px) / 1.12 var(--linen-serif); letter-spacing: -.035em; }
.ec-linen-about__story-copy p { max-width: 55ch; margin: 0 0 15px; color: var(--linen-muted); font: 300 14px / 1.75 var(--linen-sans); }
.ec-linen-about__story-copy p:last-child { margin-bottom: 0; }
.ec-linen-about__principles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-about__principles article { min-height: 236px; padding: clamp(30px, 3.5vw, 52px) clamp(21px, 3.4vw, 62px) clamp(31px, 3.5vw, 54px); border-left: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-about__principles article:first-child { padding-left: 0; border-left: 0; }
.ec-linen-about__principles span { color: var(--linen-sage); font: 400 9px / 1 var(--linen-sans); letter-spacing: .18em; }
.ec-linen-about__principles h2 { max-width: 13ch; margin: clamp(32px, 4.2vw, 58px) 0 14px; color: var(--linen-ink); font: 300 clamp(23px, 2vw, 32px) / 1.08 var(--linen-serif); letter-spacing: -.035em; }
.ec-linen-about__principles p { max-width: 30ch; margin: 0; color: var(--linen-muted); font: 300 13px / 1.7 var(--linen-sans); }
.ec-linen-about__material { display: grid; grid-template-columns: minmax(270px, .78fr) minmax(0, .62fr); align-items: center; gap: clamp(38px, 8vw, 130px); padding-top: clamp(62px, 8vw, 118px); padding-bottom: clamp(62px, 8vw, 118px); border-top: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-about__material-media { aspect-ratio: 4 / 5; }
.ec-linen-about__material-copy { max-width: 475px; }
.ec-linen-about__material-copy h2 { max-width: 14ch; margin: 21px 0; color: var(--linen-ink); font: 300 clamp(30px, 3vw, 46px) / 1.08 var(--linen-serif); letter-spacing: -.04em; }
.ec-linen-about__material-copy > p:not(.ec-linen-kicker) { max-width: 43ch; margin: 0; color: var(--linen-muted); font: 300 14px / 1.72 var(--linen-sans); }
.ec-linen-about__material-copy dl { margin: 32px 0 0; }
.ec-linen-about__material-copy dl > div { display: grid; grid-template-columns: 82px minmax(0, 1fr); gap: 15px; padding: 13px 0; border-top: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-about__material-copy dl > div:last-child { border-bottom: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-about__material-copy dt { color: var(--linen-sage); font: 500 9px / 1.5 var(--linen-sans); letter-spacing: .16em; text-transform: uppercase; }
.ec-linen-about__material-copy dd { margin: 0; color: var(--linen-ink); font: 400 13px / 1.45 var(--linen-sans); }
.ec-linen-about__closing { display: flex; align-items: center; justify-content: space-between; gap: 35px; padding-top: clamp(58px, 7vw, 100px); padding-bottom: clamp(58px, 7vw, 100px); border-top: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-about__closing p { margin: 0; color: var(--linen-ink); font: 300 clamp(23px, 2.2vw, 34px) / 1.15 var(--linen-serif); letter-spacing: -.03em; }
.ec-linen-about .ec-linen-daylink { min-height: 34px; flex: 0 0 auto; gap: 24px; color: var(--linen-muted); font-weight: 400; font-size: 9px; letter-spacing: .14em; }
.ec-linen-about .ec-linen-daylink:hover,
.ec-linen-about .ec-linen-daylink:focus-visible { gap: 31px; color: var(--linen-sage); }

/* Linen Contact — form, details and help in a clear sequence. */
.ec-linen-contact__content { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, .48fr); align-items: start; gap: clamp(52px, 10vw, 164px); padding-top: clamp(58px, 7vw, 100px); padding-bottom: clamp(62px, 8vw, 118px); }
.ec-linen-contact__form-wrap h1,
.ec-linen-contact__details h2 { margin: 0 0 14px; font: 300 clamp(34px, 3.5vw, 52px) / 1 var(--linen-serif); letter-spacing: -.045em; }
.ec-linen-contact__form-copy,
.ec-linen-contact__details > p { max-width: 36ch; margin: 0 0 34px; color: var(--linen-muted); font: 300 14px / 1.65 var(--linen-sans); }
.ec-linen-contact__notice { margin: 0 0 28px; padding: 12px 0; border-top: 1px solid rgba(52, 52, 46, .18); border-bottom: 1px solid rgba(52, 52, 46, .18); color: var(--linen-sage); font: 400 14px / 1.6 var(--linen-sans); }
.ec-linen-contact__form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px 28px; }
.ec-linen-contact__form label { display: grid; gap: 9px; color: var(--linen-ink); font: 500 9px / 1.1 var(--linen-sans); letter-spacing: .16em; text-transform: uppercase; }
.ec-linen-contact__form input,
.ec-linen-contact__form textarea { width: 100%; min-width: 0; padding: 12px 0; border: 0; border-bottom: 1px solid rgba(52, 52, 46, .28); outline: 0; color: var(--linen-ink); background: transparent; font: 400 16px / 1.4 var(--linen-sans); transition: border-color .25s ease; }
.ec-linen-contact__form textarea { resize: vertical; }
.ec-linen-contact__form input:focus,
.ec-linen-contact__form textarea:focus { border-bottom-color: var(--linen-sage); box-shadow: 0 1px 0 var(--linen-sage); }
.ec-linen-contact__form-wide { grid-column: 1 / -1; }
.ec-linen-contact__form button { position: relative; display: inline-flex; grid-column: 1 / -1; align-items: center; justify-content: space-between; gap: 35px; justify-self: start; min-height: 50px; margin-top: 12px; padding: 0 0; border: 0; color: var(--linen-ink); background: transparent; cursor: pointer; font: 500 10px / 1 var(--linen-sans); letter-spacing: .18em; text-transform: uppercase; transition: gap .4s cubic-bezier(.22, 1, .36, 1), color .25s ease; }
.ec-linen-contact__form button:hover,
.ec-linen-contact__form button:focus-visible { gap: 50px; color: var(--linen-sage); outline: 0; }
.ec-linen-contact__form i { font-size: 17px; font-style: normal; }
.ec-linen-contact__details { padding-top: 1px; }
.ec-linen-contact__details dl { margin: 0; }
.ec-linen-contact__details dl > div { padding: 22px 0; border-top: 1px solid rgba(52, 52, 46, .19); }
.ec-linen-contact__details dl > div:last-child { border-bottom: 1px solid rgba(52, 52, 46, .19); }
.ec-linen-contact__details dt { margin-bottom: 8px; color: var(--linen-sage); font: 500 9px / 1 var(--linen-sans); letter-spacing: .17em; text-transform: uppercase; }
.ec-linen-contact__details dd { margin: 0; font: 400 18px / 1.45 var(--linen-serif); }
.ec-linen-contact__details a { color: inherit; text-decoration: none; }
.ec-linen-contact__details a:hover,
.ec-linen-contact__details a:focus-visible { color: var(--linen-sage); }
.ec-linen-contact__help { display: grid; grid-template-columns: minmax(0, .72fr) minmax(280px, .62fr); align-items: center; gap: clamp(42px, 9vw, 150px); padding-top: clamp(58px, 8vw, 116px); padding-bottom: clamp(62px, 8vw, 118px); border-top: 1px solid rgba(52, 52, 46, .19); }
.ec-linen-contact__help-copy { max-width: 540px; }
.ec-linen-contact__help-copy h2 { max-width: 15ch; margin: 21px 0 30px; color: var(--linen-ink); font: 300 clamp(30px, 3vw, 46px) / 1.08 var(--linen-serif); letter-spacing: -.04em; }
.ec-linen-contact__help-copy ul { margin: 0; padding: 0; list-style: none; }
.ec-linen-contact__help-copy li { display: grid; grid-template-columns: 93px minmax(0, 1fr); gap: 15px; padding: 15px 0; border-top: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-contact__help-copy li:last-child { border-bottom: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-contact__help-copy strong { color: var(--linen-sage); font: 500 9px / 1.5 var(--linen-sans); letter-spacing: .16em; text-transform: uppercase; }
.ec-linen-contact__help-copy span { color: var(--linen-muted); font: 300 13px / 1.55 var(--linen-sans); }
.ec-linen-contact__help-media { aspect-ratio: 4 / 5; }

@media (max-width: 900px) {
	.ec-linen-index__intro { grid-template-columns: minmax(80px, .2fr) minmax(0, 1fr); }
	.ec-linen-product__layout { grid-template-columns: 1fr; }
	.ec-linen-product__media { padding: 0; }
	.ec-linen-product__media figure { height: auto; min-height: 0; }
	.ec-linen-product__summary { position: relative; top: auto; min-height: 0; padding: clamp(26px, 6vw, 42px) clamp(20px, 7vw, 48px); border-top: 1px solid rgba(52, 52, 46, .18); border-left: 0; }
	.ec-linen-product__related-head { grid-template-columns: 1fr auto; }
	.ec-linen-product__related-head .ec-linen-kicker { grid-column: 1 / -1; }
	.ec-linen-index__intro > div > p { grid-column: 2; }
	.ec-linen-contact__content { gap: 70px; }
	.ec-linen-about__opening { grid-template-columns: minmax(0, .88fr) minmax(260px, .62fr); gap: 42px; }
	.ec-linen-about__story { grid-template-columns: minmax(0, .86fr) minmax(250px, .56fr); gap: 40px; }
	.ec-linen-about__story-label { grid-column: 1 / -1; }
	.ec-linen-about__material,
	.ec-linen-contact__help { grid-template-columns: minmax(0, .82fr) minmax(250px, .58fr); gap: 44px; }
}

@media (max-width: 680px) {
	.ec-linen-index { padding-top: 58px; }
	.ec-linen-index__intro { grid-template-columns: 1fr; gap: 22px; }
	.ec-linen-index__intro > div > p { grid-column: auto; }
	.ec-linen-index__tools { display: grid; align-items: start; padding: 19px 0; }
	.ec-linen-index__tools > p { order: -1; }
	.ec-linen-index__filters { gap: 9px 20px; }
	.ec-linen-product__crumbs { min-height: 60px; font-size: 8px; }
	.ec-linen-product__title-row h1 { font-size: clamp(29px, 8.5vw, 42px); }
	.ec-linen-product__related { padding-top: 80px; }
	.ec-linen-product__related-head { display: grid; gap: 22px; margin-bottom: 38px; }
	.ec-linen-product__related-head h2 { font-size: clamp(43px, 12vw, 65px); }
	.ec-linen-product__related-grid { grid-template-columns: 1fr; gap: 35px; }
	.ec-linen-product__related-grid > a { display: grid; grid-template-columns: minmax(0, .86fr) minmax(0, 1fr); gap: 16px; align-items: end; }
	.ec-linen-product__related-grid > a > span:last-child { padding: 0 0 4px; }
	.ec-linen-product__related-grid strong { font-size: clamp(27px, 8vw, 39px); }
	.ec-linen-index__piece > a { grid-template-columns: 28px minmax(0, 1fr) auto; gap: 15px; min-height: 0; padding: 20px 0; }
	.ec-linen-index__number { padding-top: 3px; }
	.ec-linen-index__surface { display: none; }
	.ec-linen-index__arrow { align-self: center; padding: 0; }
	.ec-linen-index__details strong { font-size: clamp(31px, 10vw, 52px); }
	.ec-linen-about__opening { grid-template-columns: 1fr; gap: 30px; padding-top: 58px; padding-bottom: 62px; }
	.ec-linen-about__intro { padding-bottom: 0; }
	.ec-linen-about__hero-media { max-width: 520px; }
	.ec-linen-about h1 { font-size: clamp(39px, 11vw, 60px); }
	.ec-linen-about__story { grid-template-columns: 1fr; gap: 30px; padding-top: 58px; padding-bottom: 58px; }
	.ec-linen-about__story-label { grid-column: auto; }
	.ec-linen-about__story-media { max-width: 460px; }
	.ec-linen-about__story-copy h2 { font-size: clamp(27px, 8vw, 38px); }
	.ec-linen-about__principles { grid-template-columns: 1fr; }
	.ec-linen-about__principles article,
	.ec-linen-about__principles article:first-child { min-height: 0; padding: 28px 0 32px; border-top: 1px solid rgba(52, 52, 46, .16); border-left: 0; }
	.ec-linen-about__principles article:first-child { border-top: 0; }
	.ec-linen-about__principles h2 { margin: 27px 0 11px; }
	.ec-linen-about__closing { display: grid; align-items: start; gap: 26px; padding-top: 58px; padding-bottom: 58px; }
	.ec-linen-about__material,
	.ec-linen-contact__help { grid-template-columns: 1fr; gap: 30px; padding-top: 58px; padding-bottom: 58px; }
	.ec-linen-about__material-media,
	.ec-linen-contact__help-media { max-width: 520px; }
	.ec-linen-contact__content { grid-template-columns: 1fr; gap: 58px; padding-top: 57px; padding-bottom: 58px; }
	.ec-linen-contact__form { grid-template-columns: 1fr; }
	.ec-linen-contact__form-wide,
	.ec-linen-contact__form button { grid-column: auto; }
}

/* =============================================================================
   LINEN HOME · RETAIL COMPOSITION
   Campaign → new pieces → shop by type → editorial → popular → proof.
   Product browsing is intentionally direct and the old coverflow does not
   run on this home; the dedicated Shop page remains a static catalogue.
   ============================================================================= */

/* A slow connection must never leave the masthead invisible. */
html.ec-linen-boot body.ec-linen-home .ec-header,
html.ec-linen-boot.ec-linen-entered body.ec-linen-home .ec-header { opacity: 1; pointer-events: auto; transform: none; }

.ec-linen-market { background: var(--linen-paper); color: var(--linen-ink); }
.ec-linen-market h1, .ec-linen-market h2, .ec-linen-market p, .ec-linen-market figure, .ec-linen-market blockquote { margin: 0; }
.ec-linen-market ol, .ec-linen-market ul { margin: 0; padding: 0; list-style: none; }
.ec-linen-market a { color: inherit; }
.ec-linen-market__eyebrow { margin-bottom: 12px !important; color: var(--linen-sage); font: 500 10px / 1.3 var(--linen-sans); letter-spacing: .19em; text-transform: uppercase; }
.ec-linen-market__text-link, .ec-linen-market__quiet-link { position: relative; display: inline-flex; align-items: center; gap: 14px; min-height: 44px; border: 0; color: var(--linen-paper); font: 500 10px / 1.25 var(--linen-sans); letter-spacing: .15em; text-decoration: none; text-transform: uppercase; transition: color .2s ease, gap .2s ease; }
.ec-linen-market__quiet-link { color: var(--linen-ink); white-space: nowrap; }
.ec-linen-market__text-link--ink { color: var(--linen-ink); }
.ec-linen-market__text-link:hover, .ec-linen-market__text-link:focus-visible, .ec-linen-market__quiet-link:hover, .ec-linen-market__quiet-link:focus-visible { gap: 20px; color: var(--linen-sage); }

/* Campaign --------------------------------------------------------------- */
.ec-linen-market__hero { position: relative; display: grid; min-height: max(680px, 100svh); overflow: hidden; isolation: isolate; background: var(--linen-sand); color: var(--linen-paper); }
.ec-linen-market__hero-media, .ec-linen-market__hero-wash { position: absolute; inset: 0; }
.ec-linen-market__hero-media { z-index: -2; background: var(--linen-sand); }
.ec-linen-market__hero-media video { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.ec-linen-market__hero-wash { z-index: -1; background: rgba(38, 39, 34, .34); }
.ec-linen-market__hero-copy { display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-end; padding-top: clamp(156px, 16vw, 230px); padding-bottom: clamp(52px, 8vw, 112px); }
.ec-linen-market__hero-copy .ec-linen-market__eyebrow { color: currentColor; }
.ec-linen-market__hero h1 { max-width: 11ch; margin-bottom: clamp(28px, 3vw, 44px); font: 400 clamp(52px, 7vw, 114px) / .94 var(--linen-serif); letter-spacing: -.05em; }

/* Collection feature ----------------------------------------------------- */
.ec-linen-market__feature { padding: clamp(42px, 6vw, 96px) 0; background: var(--linen-paper); }
.ec-linen-market__feature-layout { display: grid; grid-template-columns: minmax(0, .92fr) minmax(290px, 1.08fr); align-items: center; gap: clamp(34px, 7vw, 124px); }
.ec-linen-market__feature-image { overflow: hidden; background: var(--linen-sand); }
.ec-linen-market__feature-image img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.ec-linen-market__feature-copy { max-width: 520px; padding-block: clamp(18px, 4vw, 56px); }
.ec-linen-market__feature-copy h2 { margin-bottom: 23px; font: 400 clamp(40px, 5vw, 82px) / .98 var(--linen-serif); letter-spacing: -.045em; }
.ec-linen-market__feature-copy > p:not(.ec-linen-market__eyebrow) { max-width: 34ch; margin-bottom: 30px; color: var(--linen-muted); font: 400 clamp(15px, 1.2vw, 17px) / 1.65 var(--linen-sans); }

/* Shared heads ----------------------------------------------------------- */
.ec-linen-market__new, .ec-linen-market__popular, .ec-linen-market__categories, .ec-linen-market__reviews { padding: clamp(68px, 9vw, 136px) 0; }
.ec-linen-market__new, .ec-linen-market__categories, .ec-linen-market__reviews { background: var(--linen-paper); }
.ec-linen-market__popular { background: var(--linen-cream); }
.ec-linen-market__section-head { display: flex; align-items: end; justify-content: space-between; gap: 28px; margin-bottom: clamp(30px, 4.4vw, 58px); }
.ec-linen-market__section-head--center { justify-content: center; text-align: center; }
.ec-linen-market__section-head h2 { max-width: 12ch; font: 400 clamp(40px, 4.5vw, 76px) / .98 var(--linen-serif); letter-spacing: -.045em; }
.ec-linen-market__section-head--center h2 { max-width: 15ch; }

/* Product shelves -------------------------------------------------------- */
.ec-linen-market__product-grid, .ec-linen-market__popular-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(14px, 2vw, 30px); }
.ec-linen-market__popular-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ec-linen-market__product { min-width: 0; }
.ec-linen-market__product a { display: block; text-decoration: none; }
.ec-linen-market__product-image { display: block; aspect-ratio: 2 / 3; overflow: hidden; background: var(--linen-sand); }
.ec-linen-market__product-image img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; transition: transform .3s ease; }
.ec-linen-market__product a:hover .ec-linen-market__product-image img, .ec-linen-market__product a:focus-visible .ec-linen-market__product-image img { transform: scale(1.025); }
.ec-linen-market__product-copy { display: grid; grid-template-columns: 1fr auto; gap: 6px 14px; padding-top: 14px; }
.ec-linen-market__product-copy small { grid-column: 1 / -1; color: var(--linen-sage); font: 500 9px / 1.2 var(--linen-sans); letter-spacing: .16em; text-transform: uppercase; }
.ec-linen-market__product-copy strong { font: 400 clamp(18px, 1.55vw, 25px) / 1.06 var(--linen-serif); letter-spacing: -.035em; }
.ec-linen-market__product-copy em { align-self: end; color: var(--linen-muted); font: 400 13px / 1.3 var(--linen-sans); font-style: normal; white-space: nowrap; }

/* Collection entry points ------------------------------------------------ */
.ec-linen-market__category-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(14px, 2vw, 30px); }
.ec-linen-market__category { display: block; color: var(--linen-ink); text-decoration: none; }
.ec-linen-market__category-image { display: block; aspect-ratio: 2 / 3; overflow: hidden; background: var(--linen-sand); }
.ec-linen-market__category-image img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.ec-linen-market__category-copy { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding-top: 15px; }
.ec-linen-market__category-copy strong { font: 400 clamp(23px, 2.1vw, 33px) / 1 var(--linen-serif); letter-spacing: -.04em; }
.ec-linen-market__category-copy span { font: 500 9px / 1.3 var(--linen-sans); letter-spacing: .14em; text-transform: uppercase; white-space: nowrap; }
.ec-linen-market__category-copy i { display: inline-block; font-size: 14px; font-style: normal; transition: transform .2s ease; }
.ec-linen-market__category:hover .ec-linen-market__category-image img, .ec-linen-market__category:focus-visible .ec-linen-market__category-image img { transform: scale(1.025); }
.ec-linen-market__category:hover .ec-linen-market__category-copy i, .ec-linen-market__category:focus-visible .ec-linen-market__category-copy i { transform: translateX(5px); }

/* Editorial pause -------------------------------------------------------- */
.ec-linen-market__story { padding: clamp(54px, 7vw, 104px) 0; background: var(--linen-cream); }
.ec-linen-market__story-layout { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(280px, .92fr); align-items: center; gap: clamp(36px, 8vw, 136px); }
.ec-linen-market__story-image { overflow: hidden; background: var(--linen-sand); }
.ec-linen-market__story-image img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: center; }
.ec-linen-market__story-copy { max-width: 460px; }
.ec-linen-market__story-copy h2 { margin-bottom: 26px; font: 400 clamp(40px, 5vw, 82px) / .98 var(--linen-serif); letter-spacing: -.045em; }
.ec-linen-market__story-copy > p:not(.ec-linen-market__eyebrow) { margin-bottom: 32px; color: var(--linen-muted); font: 400 clamp(15px, 1.2vw, 17px) / 1.65 var(--linen-sans); }

/* Confidence and customer proof ----------------------------------------- */
.ec-linen-market__promises { background: var(--linen-ink); color: var(--linen-paper); }
.ec-linen-market__promises ul { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ec-linen-market__promises li { display: grid; gap: 10px; min-height: 178px; align-content: center; padding: clamp(26px, 3vw, 48px); border-left: 1px solid rgba(250, 247, 240, .25); }
.ec-linen-market__promises li:first-child { border-left: 0; }
.ec-linen-market__promises strong { font: 400 clamp(23px, 2vw, 31px) / 1.05 var(--linen-serif); letter-spacing: -.035em; }
.ec-linen-market__promises span { max-width: 28ch; color: rgba(250, 247, 240, .72); font: 400 14px / 1.45 var(--linen-sans); }
.ec-linen-market__review-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(18px, 3vw, 42px); }
.ec-linen-market__review-grid li { display: grid; gap: 20px; }
.ec-linen-market__review-grid figure { overflow: hidden; background: var(--linen-sand); }
.ec-linen-market__review-grid figure img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; object-position: center; }
.ec-linen-market__review-grid > li > div > span { display: block; margin-bottom: 16px; color: var(--linen-sage); font: 500 10px / 1 var(--linen-sans); letter-spacing: .15em; }
.ec-linen-market__review-grid blockquote { display: grid; gap: 22px; }
.ec-linen-market__review-grid blockquote p { font: 400 clamp(23px, 2vw, 31px) / 1.06 var(--linen-serif); letter-spacing: -.035em; }
.ec-linen-market__review-grid footer { display: grid; gap: 4px; color: var(--linen-muted); font: 400 13px / 1.35 var(--linen-sans); }
.ec-linen-market__review-grid cite { color: var(--linen-ink); font-style: normal; }

@media (max-width: 900px) {
	.ec-linen-market__feature-layout { grid-template-columns: 1fr; gap: 34px; }
	.ec-linen-market__feature-copy { max-width: 620px; padding: 0; }
	.ec-linen-market__product-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ec-linen-market__category-grid, .ec-linen-market__popular-grid, .ec-linen-market__review-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ec-linen-market__category-grid > :last-child { grid-column: 1 / -1; width: calc(50% - clamp(7px, 1vw, 15px)); }
	.ec-linen-market__story-layout { grid-template-columns: 1fr; gap: 36px; }
	.ec-linen-market__story-copy { max-width: 620px; }
	.ec-linen-market__promises ul { grid-template-columns: 1fr; }
	.ec-linen-market__promises li, .ec-linen-market__promises li:first-child { min-height: 0; border-top: 1px solid rgba(250, 247, 240, .25); border-left: 0; }
	.ec-linen-market__promises li:first-child { border-top: 0; }
}
@media (max-width: 620px) {
	.ec-linen-market__hero { min-height: max(620px, 88svh); }
	.ec-linen-market__hero-copy { padding-top: 150px; padding-bottom: 42px; }
	.ec-linen-market__hero h1 { max-width: 10ch; }
	.ec-linen-market__feature-image img { aspect-ratio: 2 / 3; }
	.ec-linen-market__section-head { display: grid; align-items: start; margin-bottom: 28px; }
	.ec-linen-market__section-head--center { text-align: left; justify-content: start; }
	.ec-linen-market__section-head h2, .ec-linen-market__section-head--center h2 { max-width: 13ch; }
	.ec-linen-market__product-grid, .ec-linen-market__popular-grid, .ec-linen-market__category-grid, .ec-linen-market__review-grid { grid-template-columns: 1fr; }
	.ec-linen-market__category-grid > :last-child { grid-column: auto; width: auto; }
	.ec-linen-market__product-copy strong { font-size: 20px; }
	.ec-linen-market__story-image img { aspect-ratio: 2 / 3; }
}
@media (prefers-reduced-motion: reduce) {
	.ec-linen-market__product-image img, .ec-linen-market__category-image img, .ec-linen-market__category-copy i, .ec-linen-market__text-link, .ec-linen-market__quiet-link { transform: none !important; transition: none; }
}

/* =============================================================================
   LINEN SHOP · PRODUCT CATALOGUE
   A dense, direct product grid with a small collection header and a single
   functional category filter. It deliberately avoids carousel or scroll
   effects so customers can compare pieces without visual lag.
   ============================================================================= */

.ec-linen-catalogue { padding: 0; background: var(--linen-paper); }
.ec-linen-catalogue__head { padding: clamp(48px, 6vw, 88px) 0 clamp(34px, 4vw, 58px); border-bottom: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-catalogue__head .ec-linen-kicker { margin: 0 0 13px; color: var(--linen-sage); }
.ec-linen-catalogue__head h1 { margin: 0 0 14px; font: 400 clamp(39px, 4vw, 63px) / .98 var(--linen-serif); letter-spacing: -.045em; }
.ec-linen-catalogue__head > .ec-linen-shell > p:last-child { max-width: 75ch; margin: 0; color: var(--linen-muted); font: 400 13px / 1.6 var(--linen-sans); }
.ec-linen-catalogue__products {
	/* Give the final product row a calm finish before the global footer. */
	padding-bottom: clamp(24px, 3vw, 48px);
	background: var(--linen-paper);
}
.ec-linen-catalogue__tools { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 66px; }
.ec-linen-catalogue__tools > p { flex: 0 0 auto; margin: 0; color: var(--linen-muted); font: 400 10px / 1 var(--linen-sans); letter-spacing: .08em; white-space: nowrap; }
.ec-linen-catalogue__tools .ec-linen-index__filters { display: flex; flex-wrap: wrap; gap: 8px clamp(18px, 2.1vw, 34px); }
.ec-linen-catalogue__tools .ec-linen-index__filters button { position: relative; min-height: 42px; padding: 0; border: 0; border-radius: 0; -webkit-appearance: none; appearance: none; box-shadow: none; color: var(--linen-muted); background: transparent; cursor: pointer; font: 500 9px / 1 var(--linen-sans); letter-spacing: .13em; text-transform: uppercase; transition: color .25s ease; }
.ec-linen-catalogue__tools .ec-linen-index__filters button::after { position: absolute; right: 0; bottom: 0; left: 0; height: 1px; content: ''; pointer-events: none; background: var(--linen-ink); border-radius: 0; transform: scaleX(0); transform-origin: right center; transition: transform .25s ease; }
.ec-linen-catalogue__tools .ec-linen-index__filters button:hover,
.ec-linen-catalogue__tools .ec-linen-index__filters button:focus-visible,
.ec-linen-catalogue__tools .ec-linen-index__filters button.is-active { border: 0; border-radius: 0; color: var(--linen-ink); outline: 0; }
.ec-linen-catalogue__tools .ec-linen-index__filters button:hover::after,
.ec-linen-catalogue__tools .ec-linen-index__filters button:focus-visible::after,
.ec-linen-catalogue__tools .ec-linen-index__filters button.is-active::after { transform: scaleX(1); transform-origin: left center; }
.ec-linen-catalogue__tools .ec-linen-index__filters button:focus-visible { outline: 2px solid var(--linen-ink); outline-offset: 4px; }
.ec-linen-catalogue__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid rgba(52, 52, 46, .16); border-left: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-catalogue__card { min-width: 0; border-right: 1px solid rgba(52, 52, 46, .16); border-bottom: 1px solid rgba(52, 52, 46, .16); }
.ec-linen-catalogue__card[hidden] { display: none; }
.ec-linen-catalogue__card > a { display: block; color: var(--linen-ink); text-decoration: none; }
.ec-linen-catalogue__image { display: block; aspect-ratio: 2 / 3; overflow: hidden; background: var(--linen-cream); }
.ec-linen-catalogue__image img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.ec-linen-catalogue__meta { display: grid; gap: 5px; min-height: 94px; padding: 12px clamp(10px, 1.2vw, 18px) 19px; }
.ec-linen-catalogue__meta small { color: var(--linen-sage); font: 500 8px / 1.2 var(--linen-sans); letter-spacing: .13em; text-transform: uppercase; }
.ec-linen-catalogue__meta strong { font: 400 clamp(16px, 1.25vw, 21px) / 1.07 var(--linen-serif); letter-spacing: -.025em; }
.ec-linen-catalogue__meta em { align-self: end; color: var(--linen-muted); font: 400 11px / 1.2 var(--linen-sans); font-style: normal; }
.ec-linen-catalogue__card > a:hover .ec-linen-catalogue__meta strong,
.ec-linen-catalogue__card > a:focus-visible .ec-linen-catalogue__meta strong { color: var(--linen-sage); }
.ec-linen-catalogue__card > a:focus-visible { position: relative; z-index: 1; outline: 2px solid var(--linen-ink); outline-offset: -2px; }

@media (max-width: 900px) {
	.ec-linen-catalogue__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 620px) {
	.ec-linen-catalogue__head { padding-top: 38px; }
	.ec-linen-catalogue__tools { display: grid; align-items: start; padding: 14px 0 16px; }
	.ec-linen-catalogue__tools > p { order: -1; }
	.ec-linen-catalogue__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ec-linen-catalogue__meta { min-height: 92px; padding: 10px 10px 15px; }
	.ec-linen-catalogue__meta strong { font-size: 17px; }
}

/* Mobile Linen: keep the existing desktop composition, with bounded menus,
   complete portrait frames and buying controls immediately after the gallery. */
.ec-linen-gallery-controls, .ec-linen-look-controls, .ec-linen-menu-close { display: none; }
@media (max-width: 900px) {
	body.ec-linen-page { --linen-mobile-gutter: clamp(16px, 4.5vw, 28px); --linen-mobile-space: clamp(32px, 6vw, 48px); }
	.ec-linen-shell { padding-inline: var(--linen-mobile-gutter); }
	.ec-linen-look__media { min-height: calc(clamp(390px, 72vw, 645px) + 40px); touch-action: pan-y pinch-zoom; }
	.ec-linen :is(h1, h2, h3, strong, p, dd, a) { overflow-wrap: anywhere; }
	.ec-linen :is(button, a, input, textarea, summary):focus-visible { outline: 2px solid var(--linen-ink); outline-offset: 3px; }
	/* The four desktop images become a native swipe gallery, not four screens
	   to scroll past before the size and Add to bag controls. */
	.ec-linen-product__gallery { display: grid; grid-auto-flow: column; grid-template-columns: none; grid-auto-columns: min(86vw, 400px); gap: 8px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scroll-padding-inline: var(--linen-mobile-gutter); padding-inline: var(--linen-mobile-gutter); padding-inline-end: max(var(--linen-mobile-gutter), calc(100% - min(86vw, 400px) - var(--linen-mobile-gutter))); scrollbar-width: thin; }
	.ec-linen-product__media { background: var(--linen-paper); }
	.ec-linen-product__gallery figure { scroll-snap-align: start; scroll-snap-stop: always; }
	.ec-linen-gallery-controls, .ec-linen-look-controls { display: flex; align-items: center; justify-content: center; gap: 16px; padding: 8px var(--linen-mobile-gutter); color: var(--linen-ink); font: 400 12px / 1.4 var(--linen-sans); }
	/* The arrows remain 44px touch targets but read as light editorial marks,
	   rather than boxed buttons. */
	.ec-linen-gallery-controls button, .ec-linen-look-controls button { display: grid; place-items: center; min-width: 44px; min-height: 44px; padding: 8px; border: 0; border-radius: 0 !important; background: transparent; color: inherit; font: 400 27px / 1 var(--linen-sans); cursor: pointer; }
	.ec-linen-menu-close { display: none; }
	.ec-linen-gallery-controls button:disabled { opacity: .4; cursor: default; }
	.ec-linen-product__summary { padding: 24px var(--linen-mobile-gutter); }
	.ec-linen-product__title-row { gap: 12px; }
	.ec-linen-product__title-row h1 { min-width: 0; font-size: clamp(24px, 6.2vw, 32px); line-height: 1.15; }
	.ec-linen-product__wishlist { width: 44px; height: 44px; }
	.ec-linen-product__identity { padding-bottom: 8px; }
	.ec-linen-product__form { gap: 16px; padding: 16px 0; }
	.ec-linen-product__quantity { grid-template-columns: 44px 1fr 44px; }
	.ec-linen-product__quantity input { font-size: 16px; }
	.ec-linen-product__sizes label { min-width: 44px; padding-inline: 12px; }
	.ec-linen-product__status:empty { display: none; }
	.ec-linen-product__details { margin-top: 8px; }
	.ec-linen-product__details :is(img, table) { max-width: 100%; }
	.ec-linen-product__details table { display: block; overflow-x: auto; }
	.ec-linen-product__related { padding-top: var(--linen-mobile-space); }
	.ec-linen-product__related-head { grid-template-columns: minmax(0, 1fr); gap: 12px; margin-bottom: 24px; }
	.ec-linen-product__related-head h2 { font-size: clamp(28px, 7vw, 40px); }
	.ec-linen-product__related-head a { justify-self: start; min-height: 44px; padding-top: 12px; }
	.ec-linen-product__related-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 12px; }
	.ec-linen-product__related-grid > a { display: block; }
	.ec-linen-product__related-grid > a > span:last-child { padding-top: 12px; }
	.ec-linen-product__related-grid strong { font-size: 18px; line-height: 1.25; }
	.ec-linen-product { padding-bottom: var(--linen-mobile-space); }
	.ec-linen-arrivals { padding-block: var(--linen-mobile-space); }
	.ec-linen-arrivals__head h2 { font-size: clamp(32px, 7vw, 44px); line-height: 1.1; }
	.ec-linen-arrivals__grid { gap: 24px 12px; }
	.ec-linen-arrivals__meta strong { font-size: 16px; line-height: 1.3; }
	.ec-linen-featured__meta { display: grid; grid-template-columns: minmax(0, 1fr); gap: 6px; }
	.ec-linen-featured__meta strong { font-size: 20px; line-height: 1.2; }
	.ec-linen-featured__meta em { justify-self: start; }
	.ec-linen-contact__content { grid-template-columns: minmax(0, 1fr); gap: var(--linen-mobile-space); padding-block: var(--linen-mobile-space); }
	.ec-linen-contact__form { gap: 24px; }
	body.ec-linen-page .ec-linen-contact__form :is(input, textarea) { min-height: 48px; border-radius: 0 !important; font-size: 16px; }
	.ec-linen-contact__form textarea { min-height: 144px; resize: vertical; }
	.ec-linen-contact__form button { min-height: 44px; }
	.ec-linen-contact__details { padding-top: 24px; border-top: 1px solid var(--linen-sand); }
	.ec-linen-about__opening, .ec-linen-about__story, .ec-linen-about__material { grid-template-columns: minmax(0, 1fr); gap: 28px; padding-block: var(--linen-mobile-space); }
	.ec-linen-about__hero-media, .ec-linen-about__story-media, .ec-linen-about__material-media { width: 100%; max-width: 520px; justify-self: center; }
	.ec-linen-about__closing { flex-wrap: wrap; gap: 16px; padding-block: var(--linen-mobile-space); }
	.ec-linen-about h1 { font-size: clamp(32px, 7vw, 48px); line-height: 1.1; }
	.ec-linen-about__story-copy h2, .ec-linen-about__material-copy h2 { font-size: clamp(26px, 6vw, 36px); line-height: 1.15; }
	/* Large below-fold blocks must not stay invisible while loading on phones. */
	html.ec-linen-motion .ec-linen [data-linen-reveal] { opacity: 1; transform: none; transition: none; }
}
@media (max-width: 860px) {
	html.ec-linen-boot body.ec-linen-page .ec-header { opacity: 1; transform: none; pointer-events: auto; }
	body.ec-linen-page .ec-header__inner { position: relative; padding-inline: var(--linen-mobile-gutter); }
	/* The menu is a self-contained mobile page. It deliberately covers the
	   masthead and the product beneath it, instead of appearing as a panel. */
	body.ec-linen-page .ec-nav { 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 var(--linen-mobile-gutter); background: var(--linen-paper); box-shadow: none; text-align: center; text-shadow: none; }
	body.ec-linen-page .ec-nav > * { flex: 0 0 auto; min-width: 0; width: 100%; }
	body.ec-linen-page .ec-nav:has(.ec-nav__item.is-open) { justify-content: flex-start; padding-top: 72px; }
	body.ec-linen-page:has(.ec-nav.is-expanded) .ec-announce { display: none; }
	/* Longhands: this button sits in the header, which --linen-sans does not reach,
	   and a failed var() inside the `font` shorthand dropped the 28px size with it,
	   leaving a 15px glyph that was hard to find. */
	body.ec-linen-page .ec-linen-menu-close { position: absolute; top: 16px; right: var(--linen-mobile-gutter); display: grid; width: 44px; height: 44px; place-items: center; padding: 0; border: 0; border-radius: 0 !important; color: var(--linen-ink); background: transparent; font-family: var(--linen-sans, var(--ec-font-text)); font-size: 30px; font-weight: 300; line-height: 1; cursor: pointer; }
	body.ec-linen-home .ec-header .ec-nav.is-expanded .ec-nav__link { color: var(--linen-ink); }
	body.ec-linen-page .ec-nav__link { min-height: 62px; font-size: 21px; line-height: 1.35; text-align: center; }
	body.ec-linen-page .ec-nav__link { -webkit-tap-highlight-color: transparent; }
	body.ec-linen-page .ec-nav__link::after { right: auto; left: 50%; transform: translateX(-50%) scaleX(0); transform-origin: center; }
	body.ec-linen-page .ec-nav__link:hover::after,
	body.ec-linen-page .ec-nav__link:focus-visible::after,
	body.ec-linen-page .ec-nav__item.is-open > .ec-nav__link::after,
	body.ec-linen-page .ec-nav__link[aria-current='page']::after { transform: translateX(-50%) scaleX(1); transform-origin: center; }
	body.ec-linen-page .ec-linen-mega { gap: 24px; padding: 12px 0 24px; text-align: center; }
	body.ec-linen-page .ec-mega__link, body.ec-linen-page .ec-mega__title { display: flex; align-items: center; justify-content: center; min-height: 44px; line-height: 1.5; }
	body.ec-linen-page .ec-navtoggle { justify-self: start; width: auto; min-width: 44px; min-height: 44px; border-radius: 0 !important; }
	/* The masthead overlays the campaign image on phones too. This avoids a
	   white band cutting through the hero, while the scroll state above adds a
	   translucent paper surface once content needs contrast. */
	body.ec-linen-home .ec-header { background: transparent; border-bottom-color: transparent; box-shadow: none; }
	body.ec-linen-home .ec-linen { padding-top: 0; }
	body.ec-linen-home .ec-header:not(.is-linen-scrolled) .ec-brand,
	body.ec-linen-home .ec-header:not(.is-linen-scrolled) .ec-brand:hover,
	body.ec-linen-home .ec-header:not(.is-linen-scrolled) .ec-navtoggle,
	body.ec-linen-home .ec-header:not(.is-linen-scrolled) .ec-action { color: #fffdf8; text-shadow: 0 1px 10px rgba(0, 0, 0, .28); }
	body.ec-linen-home .ec-header:not(.is-linen-scrolled) .ec-brand__mark::before { filter: brightness(0) invert(1); }
	body.ec-linen-home .ec-header:has(.ec-nav.is-expanded) { background: var(--linen-paper); text-shadow: none; }
}
@media (max-width: 640px) {
	.ec-linen-hero { min-height: 0; aspect-ratio: 4 / 5; }
	.ec-linen-hero__media img { transform: none; object-position: 50% 38%; }
	.ec-linen-hero__copy { padding-top: 130px; padding-bottom: 24px; }
	.ec-linen-hero h1 { font-size: clamp(32px, 9vw, 48px); line-height: 1.1; }
	.ec-linen-category-pair__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ec-linen-category-pair__copy { padding: 16px 12px; }
	.ec-linen-category-pair__copy strong { font-size: 14px; }
	.ec-linen-look__media { min-height: 0; aspect-ratio: 4 / 5; touch-action: pan-y pinch-zoom; }
	.ec-linen-look__slide { width: 72%; }
	.ec-linen-film__feature { aspect-ratio: 3 / 2; }
	.ec-linen-film__feature-copy { top: 16px; left: var(--linen-mobile-gutter); right: auto; max-width: 46%; }
	.ec-linen-film__feature-copy h2 { margin-bottom: 12px; font-size: clamp(24px, 7vw, 36px); line-height: 1.05; }
	.ec-linen-film__feature-copy a { gap: 6px; min-height: 44px; padding-bottom: 0; font-size: 9px; line-height: 1.5; letter-spacing: .08em; }
	.ec-linen-catalogue__tools { gap: 10px; padding: 16px var(--linen-mobile-gutter); }
	.ec-linen-catalogue__tools .ec-linen-index__filters { flex-wrap: wrap; gap: 0 18px; }
	.ec-linen-catalogue__tools .ec-linen-index__filters button { min-height: 44px; font-size: 10px; }
	.ec-linen-catalogue__head { padding-block: 28px; }
	.ec-linen-catalogue__head h1 { font-size: 32px; }
	.ec-linen-catalogue__meta strong { font-size: 16px; line-height: 1.25; }
	.ec-linen-about__principles h2 { margin-top: 16px; }
	body.ec-linen-page .ec-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 20px; }
	/* Currency and social occupy the space beside About, not an empty row below it. */
	body.ec-linen-page .ec-footer__utility { grid-column: 2; grid-row: 2; width: 100%; }
	body.ec-linen-page .ec-footer__inner { padding-inline: var(--linen-mobile-gutter); }
	body.ec-linen-page .ec-footer :is(a, p, select) { overflow-wrap: anywhere; }
}

/* =============================================================================
   Linen home — editorial layout
   -----------------------------------------------------------------------------
   Photography carries the page and product cards are held to two short rows.
   One type scale for the whole page: 12px labels, one headline size per level,
   so small text stays readable next to large text instead of vanishing.
   Banners use only the calm photography (grey studio winter, stone linen); see
   ecoleas_linen_editions() for why and for which photograph goes where.
   ============================================================================= */

.ec-linen-six {
	--linen-h1: clamp(44px, 6vw, 100px);
	--linen-h2: clamp(38px, 4.6vw, 76px);
	--linen-h3: clamp(26px, 2.5vw, 40px);
	--linen-label: 12px;
}

/* Shared: label and call to action -------------------------------------------
   Selectors carry .ec-linen-six so the shared `.ec-linen p` margin reset, which
   has equal specificity and loads earlier, cannot take their spacing away. */
.ec-linen-six .ec-linen-eyebrow {
	display: block;
	margin: 0;
	color: rgba(255, 253, 247, .88);
	font-family: var(--linen-sans);
	font-size: var(--linen-label);
	font-weight: 500;
	line-height: 1.4;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.ec-linen-six .ec-linen-eyebrow--ink { color: var(--linen-sage); }

.ec-linen-six .ec-linen-cta {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	padding-bottom: 7px;
	border-bottom: 1px solid rgba(255, 253, 247, .62);
	color: #fffdf8;
	font-family: var(--linen-sans);
	font-size: var(--linen-label);
	font-weight: 500;
	line-height: 1;
	letter-spacing: .14em;
	text-decoration: none;
	text-transform: uppercase;
	transition: gap .35s cubic-bezier(.22, 1, .36, 1), border-color .25s ease, color .25s ease;
}

.ec-linen-six .ec-linen-cta--quiet { border-bottom-color: rgba(255, 253, 247, .3); color: rgba(255, 253, 247, .84); }

.ec-linen-six a.ec-linen-cta:hover,
.ec-linen-six a.ec-linen-cta:focus-visible,
.ec-linen-wide:hover .ec-linen-cta,
.ec-linen-wide:focus-visible .ec-linen-cta {
	gap: 18px;
	border-bottom-color: #fffdf8;
	color: #fffdf8;
}

/* 01 · Hero ------------------------------------------------------------------ */
.ec-linen-hero--season .ec-linen-hero__media::after {
	background: linear-gradient(0deg, rgba(30, 30, 27, .58), rgba(30, 30, 27, .05) 48%, rgba(30, 30, 27, .22));
}

.ec-linen-hero--season .ec-linen-hero__copy { display: grid; justify-items: start; gap: 22px; }

.ec-linen-hero--season h1 {
	max-width: 12ch;
	font-size: var(--linen-h1);
	line-height: .98;
	letter-spacing: -.035em;
}

.ec-linen-six .ec-linen-cta-row {
	display: flex;
	flex-wrap: wrap;
	gap: 14px 34px;
	margin: 8px 0 0;
}

/* Winter feature: full-width banner ------------------------------------------ */
.ec-linen-edit { background: var(--linen-paper); scroll-margin-top: 72px; }

/* Copy sits top-left on desktop: that corner of the coral photograph is empty
   wall, while the bottom-left is the model's feet. */
.ec-linen-wide {
	position: relative;
	display: grid;
	align-content: start;
	height: min(100svh, 66.6vw);
	min-height: 520px;
	overflow: hidden;
	isolation: isolate;
	color: #fffdf8;
	background: #5f5f5c;
	text-decoration: none;
}

.ec-linen-wide > img {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1.6s cubic-bezier(.22, 1, .36, 1);
}

.ec-linen-wide::after {
	position: absolute;
	inset: 0;
	z-index: -1;
	content: '';
	background: linear-gradient(120deg, rgba(30, 30, 27, .46), rgba(30, 30, 27, .06) 48%, transparent 70%);
}

.ec-linen-wide:hover > img,
.ec-linen-wide:focus-visible > img { transform: scale(1.03); }

.ec-linen-wide__copy {
	display: grid;
	justify-items: start;
	gap: 20px;
	padding-block: clamp(40px, 6vw, 96px);
}

.ec-linen-wide__title {
	max-width: 11ch;
	font-family: var(--linen-serif);
	font-size: var(--linen-h2);
	font-weight: 400;
	line-height: 1;
	letter-spacing: -.035em;
}

/* Summer feature: image and copy side by side --------------------------------- */
.ec-linen-split {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	align-items: stretch;
}

.ec-linen-split__media {
	position: relative;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background: #ded7cb;
}

.ec-linen-split__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ec-linen-split__copy {
	display: grid;
	align-content: center;
	justify-items: start;
	padding: clamp(40px, 7vw, 128px);
}

.ec-linen-six .ec-linen-split__copy h2 {
	margin: 18px 0 0;
	color: var(--linen-ink);
	font-family: var(--linen-serif);
	font-size: var(--linen-h2);
	font-weight: 400;
	line-height: 1;
	letter-spacing: -.035em;
}

.ec-linen-six .ec-linen-split__intro {
	max-width: 36ch;
	margin: 24px 0 40px;
	color: var(--linen-muted);
	font-family: var(--linen-sans);
	font-size: 17px;
	line-height: 1.65;
}

.ec-linen-split__links {
	width: min(100%, 440px);
	margin: 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid rgba(52, 52, 46, .16);
}

.ec-linen-split__links a {
	display: grid;
	grid-template-columns: 1fr auto 20px;
	align-items: center;
	gap: 16px;
	min-height: 60px;
	border-bottom: 1px solid rgba(52, 52, 46, .16);
	color: var(--linen-ink);
	font-family: var(--linen-sans);
	font-size: 16px;
	text-decoration: none;
	transition: color .25s ease, padding .35s cubic-bezier(.22, 1, .36, 1);
}

.ec-linen-split__links small { color: var(--linen-muted); font-size: 13px; }
.ec-linen-split__links a:hover,
.ec-linen-split__links a:focus-visible { padding-left: 8px; color: var(--linen-sage); }

/* Category banners: portrait pair ------------------------------------------- */
.ec-linen-pair {
	display: grid;
	grid-template-columns: repeat(var(--linen-pair, 2), minmax(0, 1fr));
	gap: 2px;
	padding-top: 2px;
	background: var(--linen-paper);
}

.ec-linen-pair__item {
	position: relative;
	display: grid;
	align-content: end;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	isolation: isolate;
	color: #fffdf8;
	background: #8e8b83;
	text-decoration: none;
}

.ec-linen-pair__item > img {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1.6s cubic-bezier(.22, 1, .36, 1);
}

.ec-linen-pair__item::after {
	position: absolute;
	inset: 0;
	z-index: -1;
	content: '';
	background: linear-gradient(0deg, rgba(30, 30, 27, .64), rgba(30, 30, 27, .14) 34%, rgba(30, 30, 27, 0) 52%);
}

.ec-linen-pair__item:hover > img,
.ec-linen-pair__item:focus-visible > img { transform: scale(1.04); }

.ec-linen-pair__copy {
	display: grid;
	justify-items: start;
	gap: 10px;
	padding: clamp(24px, 3.4vw, 52px);
}

.ec-linen-pair__title {
	font-family: var(--linen-serif);
	font-size: var(--linen-h3);
	font-weight: 400;
	line-height: 1.05;
	letter-spacing: -.02em;
}

/* Statement ------------------------------------------------------------------ */
.ec-linen-statement {
	padding: clamp(88px, 11vw, 176px) 0;
	background: var(--linen-cream);
	text-align: center;
}

.ec-linen-statement .ec-linen-eyebrow { margin-bottom: 22px; }

.ec-linen-six .ec-linen-statement h2 {
	max-width: 20ch;
	margin: 0 auto;
	color: var(--linen-ink);
	font-family: var(--linen-serif);
	font-size: clamp(32px, 3.6vw, 58px);
	font-weight: 400;
	line-height: 1.12;
	letter-spacing: -.028em;
	text-wrap: balance;
}

/* Product rows --------------------------------------------------------------- */
.ec-linen-strip {
	padding: clamp(40px, 3.6vw, 64px) 0;
	background: var(--linen-paper);
}

.ec-linen-strip__head,
.ec-linen-strip__row { width: min(100%, 1280px); }

.ec-linen-strip__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 20px;
	margin-bottom: clamp(20px, 2vw, 32px);
}

.ec-linen-six .ec-linen-strip__head h2 {
	margin: 0;
	color: var(--linen-ink);
	font-family: var(--linen-serif);
	font-size: var(--linen-h3);
	font-weight: 400;
	line-height: 1.05;
	letter-spacing: -.02em;
}

.ec-linen-strip__all {
	color: var(--linen-ink);
	font-family: var(--linen-sans);
	font-size: var(--linen-label);
	font-weight: 500;
	letter-spacing: .14em;
	text-decoration: none;
	text-transform: uppercase;
	white-space: nowrap;
}

.ec-linen-strip__all:hover,
.ec-linen-strip__all:focus-visible { color: var(--linen-sage); }

.ec-linen-strip__row {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(12px, 1.4vw, 24px);
}

.ec-linen-card { min-width: 0; }
.ec-linen-card a { display: block; color: var(--linen-ink); text-decoration: none; }

.ec-linen-card__frame {
	display: block;
	aspect-ratio: 2 / 4;
	overflow: hidden;
	background: #e7e1d6;
}

.ec-linen-card__frame img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1.1s cubic-bezier(.22, 1, .36, 1);
}

.ec-linen-card a:hover .ec-linen-card__frame img,
.ec-linen-card a:focus-visible .ec-linen-card__frame img { transform: scale(1.04); }

.ec-linen-card__meta { display: grid; gap: 6px; padding-top: 14px; }

.ec-linen-card__label {
	color: var(--linen-sage);
	font-family: var(--linen-sans);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.ec-linen-card__meta strong {
	display: -webkit-box;
	overflow: hidden;
	font-family: var(--linen-sans);
	font-size: 15px;
	font-weight: 400;
	line-height: 1.4;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}

.ec-linen-card__meta em { color: var(--linen-muted); font-family: var(--linen-sans); font-size: 14px; font-style: normal; }

@media (prefers-reduced-motion: reduce) {
	.ec-linen-six .ec-linen-cta,
	.ec-linen-wide > img,
	.ec-linen-pair__item > img,
	.ec-linen-split__links a,
	.ec-linen-card__frame img { transition: none; }
}

/* Phone ---------------------------------------------------------------------- */
@media (max-width: 760px) {
	.ec-linen-six { --linen-h1: clamp(38px, 11vw, 52px); --linen-h2: clamp(34px, 10vw, 46px); --linen-h3: 26px; --linen-label: 11px; }

	.ec-linen-six .ec-linen-hero--season { min-height: 86svh; aspect-ratio: auto; }
	.ec-linen-six .ec-linen-hero--season .ec-linen-hero__copy { gap: 16px; padding-bottom: 40px; }

	/* The feature photograph is landscape and the model fills it edge to edge, so
	   any portrait crop cut off her shoe on one side and her hand on the other. On
	   a phone it shows at its own 3:2 shape, whole, with the copy below on paper
	   as the summer split already does. */
	.ec-linen-wide {
		display: block;
		height: auto;
		min-height: 0;
		color: var(--linen-ink);
		background: var(--linen-paper);
	}
	.ec-linen-wide::after { display: none; }
	.ec-linen-wide > img {
		position: relative;
		z-index: auto;
		display: block;
		height: auto;
		aspect-ratio: 3 / 2;
		object-position: center;
	}
	.ec-linen-wide__copy { gap: 14px; padding-block: 28px 40px; }
	.ec-linen-six .ec-linen-wide .ec-linen-eyebrow { color: var(--linen-sage); }
	.ec-linen-six .ec-linen-wide .ec-linen-cta { border-bottom-color: rgba(52, 52, 46, .4); color: var(--linen-ink); }

	.ec-linen-split { grid-template-columns: 1fr; }
	.ec-linen-split__copy { padding: 44px var(--linen-mobile-gutter, 20px) 56px; }
	.ec-linen-six .ec-linen-split__intro { margin: 18px 0 30px; font-size: 16px; }

	.ec-linen-pair { grid-template-columns: 1fr; }
	.ec-linen-pair__copy { padding: 24px 20px; }

	.ec-linen-statement { padding: 72px 0; }

	.ec-linen-strip { padding: 52px 0; }
	.ec-linen-strip__row {
		grid-template-columns: none;
		grid-auto-flow: column;
		grid-auto-columns: 42vw;
		overflow-x: auto;
		overscroll-behavior-x: contain;
		scroll-snap-type: x mandatory;
		/* Snap to the page gutter; without this the first card snaps to the
		   row's inner edge and opens 17px scrolled, cut off at the left. */
		scroll-padding-inline: var(--linen-mobile-gutter, 17px);
		scrollbar-width: none;
	}
	.ec-linen-strip__row::-webkit-scrollbar { display: none; }
	.ec-linen-strip__row > * { scroll-snap-align: start; }
	.ec-linen-card__meta strong { font-size: 14px; }
}
