/* =====================================================================
   ELIFIN Pulse article template — styles
   Loaded only on posts using elifin-pulse/pulse-article.php.

   Isolation rules (keep them):
   1. Every selector starts with .elifin-pulse — nothing here can reach the site
      header, footer, popups or any other page.
   2. Every class is prefixed elp- so generated content can't pick up theme classes.
   3. The reset below reverts the theme's element styles (h1-h3, p, a, table...) inside
      .elifin-pulse, so theme typography can't leak in. Component rules (two classes)
      then set everything explicitly.
   ===================================================================== */

article.elifin-pulse, .elifin-pulse {
	--elp-blue: #27427e;
	--elp-rubine: #ce0058;
	--elp-rubine-dark: #b0004b;
	--elp-ink: #1a1a1a;
	--elp-text: #333333;
	--elp-gray: #666666;
	--elp-line: #e2e6ee;
	--elp-soft: #f4f6fb;
	--elp-radius: 12px;
	--elp-sans: 'Archivo', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
	--elp-serif: 'Fraunces', Georgia, 'Times New Roman', serif;

	display: block;
	box-sizing: border-box;
	width: 100%;
	margin: 0;
	padding: 0 0 64px;
	background: #ffffff;
	color: var(--elp-ink);
	font-family: var(--elp-sans);
	font-size: 17px;
	font-weight: 400;
	font-style: normal;
	line-height: 1.6;
	letter-spacing: normal;
	word-spacing: normal;
	text-transform: none;
	text-align: left;
	-webkit-font-smoothing: antialiased;
}

/* 3. Reset: as if the theme had no rules for these elements (specificity 0,1,1). */
.elifin-pulse :is(div, span, p, a, h1, h2, h3, h4, ul, ol, li, table, caption, thead, tbody,
	tfoot, tr, th, td, img, figure, figcaption, section, article, aside, header, footer, nav,
	time, strong, b, em, i, small, button) {
	all: revert;
	box-sizing: border-box;
}

/* ---------- layout ---------- */
.elifin-pulse .elp-wrap { display: block; max-width: 1120px; margin: 0 auto; padding: 0 24px; }
.elifin-pulse .elp-body { display: block; }

/* ---------- buttons ---------- */
.elifin-pulse .elp-btn {
	display: inline-block; margin: 0; padding: 11px 18px; border: 0; border-radius: 8px;
	background: var(--elp-rubine); color: #ffffff;
	font: 700 15px/1.2 var(--elp-sans); letter-spacing: normal; text-transform: none; text-decoration: none;
	white-space: nowrap; cursor: pointer; transition: background-color .15s;
}
.elifin-pulse .elp-btn:hover, .elifin-pulse .elp-btn:focus-visible { background: var(--elp-rubine-dark); color: #ffffff; text-decoration: none; }
.elifin-pulse .elp-btn--lg { padding: 15px 26px; font-size: 16px; }

/* ---------- hero ---------- */
.elifin-pulse .elp-hero { display: block; padding: 44px 0 10px; }
.elifin-pulse .elp-crumbs {
	display: flex; flex-wrap: wrap; gap: 8px; margin: 0;
	font: 700 13px/1.4 var(--elp-sans); letter-spacing: .1em; text-transform: uppercase; color: var(--elp-rubine);
}
.elifin-pulse .elp-crumbs a { color: var(--elp-rubine); text-decoration: none; }
.elifin-pulse .elp-crumbs a:hover { text-decoration: underline; text-underline-offset: 3px; }
.elifin-pulse .elp-title {
	display: block; max-width: 22ch; margin: 14px 0; padding: 0;
	font-family: var(--elp-serif); font-size: clamp(2rem, 4.4vw, 3.1rem); font-weight: 800; font-style: normal;
	line-height: 1.1; letter-spacing: -.015em; text-transform: none; color: var(--elp-blue);
}
.elifin-pulse .elp-dek {
	display: block; max-width: 68ch; margin: 0; padding: 0;
	font: 400 1.1rem/1.6 var(--elp-sans); color: #3b4150;
}
.elifin-pulse .elp-meta {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px;
	margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--elp-line);
}
.elifin-pulse .elp-meta__line { display: block; margin: 0; font: 400 14px/1.5 var(--elp-sans); color: var(--elp-gray); }
.elifin-pulse .elp-meta__line span, .elifin-pulse .elp-meta__line time { display: inline; margin-right: 4px; }
.elifin-pulse .elp-meta__by { font-weight: 600; color: var(--elp-ink); }

/* ---------- stat tiles ---------- */
.elifin-pulse .elp-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin: 30px 0 8px; }
.elifin-pulse .elp-stat {
	display: block; padding: 18px 18px 16px; border: 1px solid var(--elp-line); border-top: 3px solid var(--elp-rubine);
	border-radius: 10px; background: var(--elp-soft);
}
.elifin-pulse .elp-stat__n {
	display: block; font: 700 2rem/1.05 var(--elp-sans); font-variant-numeric: tabular-nums; color: var(--elp-blue);
}
.elifin-pulse .elp-stat__l { display: block; margin-top: 6px; font: 400 .85rem/1.4 var(--elp-sans); color: var(--elp-gray); }

/* ---------- sections ---------- */
.elifin-pulse .elp-section { display: block; padding-top: 48px; }
.elifin-pulse .elp-h2 {
	display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 12px; row-gap: 2px;
	margin: 0 0 18px; padding: 0 0 10px; border-bottom: 2px solid var(--elp-line);
	font-family: var(--elp-serif); font-size: 1.65rem; font-weight: 700; line-height: 1.2;
	letter-spacing: normal; text-transform: none; color: var(--elp-blue);
}
.elifin-pulse .elp-h2__count { font: 600 .85rem/1.4 var(--elp-sans); color: var(--elp-gray); }

/* ---------- sale cards ---------- */
.elifin-pulse .elp-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin: 0; padding: 0; }
.elifin-pulse .elp-sale {
	display: flex; flex-direction: column; overflow: hidden; margin: 0;
	border: 1px solid var(--elp-line); border-radius: var(--elp-radius); background: #ffffff;
	scroll-margin-top: 110px; transition: box-shadow .15s, transform .15s;
}
.elifin-pulse .elp-sale:hover { box-shadow: 0 8px 24px rgba(39, 66, 126, .12); transform: translateY(-2px); }
.elifin-pulse .elp-sale:target {
	border-color: var(--elp-rubine);
	box-shadow: 0 0 0 3px rgba(206, 0, 88, .35), 0 10px 28px rgba(39, 66, 126, .16);
}
.elifin-pulse .elp-sale__img {
	display: block; width: 100%; max-width: none; height: auto; aspect-ratio: 3 / 2; margin: 0; padding: 0;
	border: 0; border-radius: 0; object-fit: cover; background: var(--elp-soft);
}
.elifin-pulse .elp-sale__body { display: flex; flex: 1; flex-direction: column; padding: 16px 18px 18px; }
.elifin-pulse .elp-sale__price {
	display: block; margin: 0 0 10px; font: 700 1.1rem/1.3 var(--elp-sans); font-variant-numeric: tabular-nums; color: var(--elp-ink);
}
.elifin-pulse .elp-sale__price--withheld { font-weight: 600; color: var(--elp-gray); }
.elifin-pulse .elp-sale__metric {
	display: inline-block; padding: 2px 7px; border: 1px solid var(--elp-line); border-radius: 6px;
	background: var(--elp-soft); vertical-align: middle; white-space: nowrap;
	font: 600 .8rem/1.4 var(--elp-sans); color: var(--elp-gray);
}
.elifin-pulse .elp-sale__addr {
	display: block; margin: 0 0 10px; padding: 0;
	font-family: var(--elp-serif); font-size: 1.4rem; font-weight: 700; font-style: normal;
	line-height: 1.2; letter-spacing: -.005em; text-transform: none; color: var(--elp-blue);
}
.elifin-pulse .elp-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; padding: 0; list-style: none; }
.elifin-pulse .elp-tags li {
	display: inline-block; margin: 0; padding: 3px 10px; border-radius: 99px; background: var(--elp-soft);
	font: 600 .74rem/1.4 var(--elp-sans); color: var(--elp-blue);
}
.elifin-pulse .elp-tags .elp-tag--type { background: rgba(206, 0, 88, .09); color: var(--elp-rubine); }
.elifin-pulse .elp-sale__note { display: block; margin: 0 0 12px; font: 400 .93rem/1.5 var(--elp-sans); color: var(--elp-text); }
.elifin-pulse .elp-sale__buyer {
	display: block; margin: auto 0 0; padding-top: 10px; border-top: 1px solid var(--elp-line);
	font: 600 .86rem/1.4 var(--elp-sans); color: var(--elp-ink);
}
.elifin-pulse .elp-sale__label {
	display: block; margin-bottom: 1px;
	font: 700 .68rem/1.4 var(--elp-sans); letter-spacing: .09em; text-transform: uppercase; color: var(--elp-gray);
}

/* ---------- permits table ---------- */
.elifin-pulse .elp-tablewrap { display: block; overflow-x: auto; border: 1px solid var(--elp-line); border-radius: var(--elp-radius); }
.elifin-pulse .elp-permits { display: table; width: 100%; margin: 0; border: 0; border-collapse: collapse; font: 400 .88rem/1.5 var(--elp-sans); color: var(--elp-ink); }
.elifin-pulse .elp-permits th {
	padding: 11px 14px; border: 0; background: var(--elp-blue); text-align: left; white-space: nowrap; vertical-align: bottom;
	font: 600 .88rem/1.4 var(--elp-sans); letter-spacing: normal; text-transform: none; color: #ffffff;
}
.elifin-pulse .elp-permits td { padding: 11px 14px; border: 0; border-bottom: 1px solid var(--elp-line); text-align: left; vertical-align: top; }
.elifin-pulse .elp-permits tbody tr:nth-child(even) td { background: var(--elp-soft); }
.elifin-pulse .elp-permits tbody tr:last-child td { border-bottom: 0; }
.elifin-pulse .elp-permits td:nth-child(1) { min-width: 150px; font-weight: 700; }
.elifin-pulse .elp-permits td:nth-child(2) { min-width: 160px; }
.elifin-pulse .elp-permits td:nth-child(3) { font-variant-numeric: tabular-nums; white-space: nowrap; }
.elifin-pulse .elp-permits td:nth-child(4) { min-width: 280px; }
.elifin-pulse .elp-permits td:nth-child(5) { min-width: 220px; }
.elifin-pulse .elp-party { display: block; padding-left: 16px; text-indent: -16px; }
.elifin-pulse .elp-role { display: inline-block; width: 14px; text-indent: 0; font: 700 .75rem/1 var(--elp-sans); color: var(--elp-rubine); }

/* notice in place of a table, e.g. "No permits reported due to a technical problem..." */
.elifin-pulse .elp-notice {
	display: block; margin: 0; padding: 16px 20px; border: 1px solid var(--elp-line); border-radius: var(--elp-radius);
	background: var(--elp-soft); font: 400 .95rem/1.55 var(--elp-sans); color: var(--elp-text);
}

/* ---------- signup box + disclaimer ---------- */
.elifin-pulse .elp-cta {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px 28px;
	margin-top: 48px; padding: 36px; border-radius: 16px; background: var(--elp-blue);
}
.elifin-pulse .elp-cta__text { display: block; flex: 1 1 380px; }
.elifin-pulse .elp-cta__title {
	display: block; margin: 0 0 8px; padding: 0; border: 0;
	font-family: var(--elp-serif); font-size: 1.9rem; font-weight: 700; line-height: 1.15;
	letter-spacing: normal; text-transform: none; color: #ffffff;
}
.elifin-pulse .elp-cta__copy { display: block; margin: 0; font: 400 1rem/1.55 var(--elp-sans); color: #dfe4ee; }
.elifin-pulse .elp-disclaimer { display: block; margin-top: 28px; padding-top: 16px; border-top: 1px solid var(--elp-line); }
.elifin-pulse .elp-disclaimer p { display: block; margin: 0; font: italic 400 .8rem/1.55 var(--elp-sans); color: var(--elp-gray); }

/* ---------- responsive ---------- */
@media (max-width: 1000px) {
	.elifin-pulse .elp-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 720px) {
	.elifin-pulse { font-size: 16px; }
	.elifin-pulse .elp-wrap { padding: 0 16px; }
	.elifin-pulse .elp-hero { padding-top: 28px; }
	.elifin-pulse .elp-stats { grid-template-columns: repeat(2, 1fr); gap: 10px; }
	.elifin-pulse .elp-stat { padding: 14px; }
	.elifin-pulse .elp-stat__n { font-size: 1.6rem; }
	.elifin-pulse .elp-grid { grid-template-columns: 1fr; }
	.elifin-pulse .elp-cta { padding: 26px 20px; }
	.elifin-pulse .elp-cta .elp-btn { width: 100%; text-align: center; }

	/* permits: one card per permit */
	.elifin-pulse .elp-tablewrap { overflow: visible; border: 0; border-radius: 0; }
	.elifin-pulse .elp-permits thead { display: none; }
	.elifin-pulse .elp-permits, .elifin-pulse .elp-permits tbody, .elifin-pulse .elp-permits tr { display: block; width: 100%; }
	.elifin-pulse .elp-permits tr { margin-bottom: 10px; padding: 12px 14px; border: 1px solid var(--elp-line); border-radius: 10px; }
	.elifin-pulse .elp-permits td,
	.elifin-pulse .elp-permits tbody tr:nth-child(even) td { display: block; min-width: 0; padding: 2px 0; border: 0; background: none; }
	.elifin-pulse .elp-permits td:nth-child(2),
	.elifin-pulse .elp-permits td:nth-child(3) { display: inline; font-size: .8rem; font-weight: 600; color: var(--elp-gray); }
	.elifin-pulse .elp-permits td:nth-child(2)::after { content: " · "; }
	.elifin-pulse .elp-permits td:nth-child(4) { margin: 6px 0; }
	.elifin-pulse .elp-permits td:nth-child(5) { font-size: .82rem; color: #444444; }
}
