/* ECWE — front-end base. Page-level token overrides lifted from the v6 root
   element so the site ground matches the v6 design exactly. The DS token CSS
   (css/tokens/*) is enqueued before this; these refine a few ground values. */
:root {
	--ivory: #FDFCFA;
	--ivory-deep: #F9F7F2;
	--white: #FFFFFF;
	--obsidian: #15120D;
	--obsidian-2: #23201A;
	--border-hairline: #E5DDCC;
	--border-strong: #D7CCB6;
}

html, body { margin: 0; padding: 0; }
body {
	background: #FFFFFF;
	color: var(--ink-700);
	font-family: var(--font-sans);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

/* Remove WP's default block-gap margin between the top-level site blocks
   (header / main / footer) so sections sit flush — each section owns its own
   padding. Overrides core's :where(.wp-site-blocks) > * { margin-block-start }. */
.wp-site-blocks > * { margin-block-start: 0; margin-block-end: 0; }

/* ECWE full-bleed section blocks stack flush (they manage their own vertical
   padding). Cancel the block-gap margin WP applies when they render inside
   post-content (editable Home page) so no white strips appear between sections. */
.wp-block-ecwe-hero,
.wp-block-ecwe-index-grid,
.wp-block-ecwe-editorial,
.wp-block-ecwe-featured,
.wp-block-ecwe-certificate,
.wp-block-ecwe-awards-banner {
	/* These sections are always full-bleed: never let the block-gap margin or
	   the editor's/post-content's content-width constraint box them in. This is
	   what makes the page editor match the frontend edge-to-edge. */
	margin: 0 !important;
	max-width: none !important;
}

/* Animated copper blobs (hero) keyframes — used by the ecwe/hero block in Plan 2. */
/* Each blob drifts on an organic multi-stop path and "breathes" via opacity;
   the four are desynced (different stops + per-blob durations). Larger travel
   and quicker loops than the original so the drift of the copper ground is
   clearly visible, while ease-in-out keeps it smooth and calm. */
@keyframes ecweA1 {
	0%, 100% { transform: translate(-14%, -10%) scale(1.05); opacity: 0.5; }
	33%      { transform: translate(16%, 14%) scale(1.28);   opacity: 1; }
	66%      { transform: translate(24%, -8%) scale(1.36);   opacity: 0.78; }
}
@keyframes ecweA2 {
	0%, 100% { transform: translate(18%, 8%) scale(1.22);    opacity: 1; }
	50%      { transform: translate(-20%, -16%) scale(1);     opacity: 0.5; }
}
@keyframes ecweA3 {
	0%, 100% { transform: translate(-13%, 16%) scale(1.1);   opacity: 0.55; }
	40%      { transform: translate(20%, -12%) scale(1.34);   opacity: 1; }
	70%      { transform: translate(-6%, 11%) scale(1.2);     opacity: 0.85; }
}
@keyframes ecweA4 {
	0%, 100% { transform: translate(11%, -15%) scale(1.2);   opacity: 1; }
	50%      { transform: translate(-20%, 13%) scale(1);      opacity: 0.55; }
}
/* Quicker loops so the motion reads clearly while staying calm; overrides the
   inline durations on the hero blobs. */
.ecwe-blob:nth-child(1) { animation-duration: 8s !important; }
.ecwe-blob:nth-child(2) { animation-duration: 10s !important; }
.ecwe-blob:nth-child(3) { animation-duration: 11s !important; }
.ecwe-blob:nth-child(4) { animation-duration: 9s !important; }
@media (prefers-reduced-motion: reduce) { .ecwe-blob { animation: none !important; } }
