.imp-archive-wrap {
	--imp-gold: #c8890a;
	--imp-gold-light: #f3c74d;
	--imp-green: #14804a;
	--imp-green-bg: #e9f8f0;
	--imp-red: #c53030;
	--imp-red-bg: #fdecec;
	--imp-blue: #1a56db;
	--imp-blue-bg: #eaf1ff;
	--imp-ink: #14181f;
	--imp-muted: #6b7280;
	--imp-border: #e8e9ec;
	--imp-surface: #fff;
	--font-display: 'Space Grotesk', 'Segoe UI', sans-serif;
	--font-body: 'Inter', 'Segoe UI', sans-serif;
	--font-editorial: 'Playfair Display', Georgia, serif;
	background: linear-gradient(180deg, #f8f7f4 0%, #f2f3f5 260px, #f2f3f5 100%);
	padding: clamp(24px, 5vw, 40px) clamp(12px, 3vw, 16px) 72px;
	font-family: var(--font-body);
	overflow-x: hidden;
}
.imp-archive-wrap,
.imp-archive-wrap *,
.imp-archive-wrap *::before,
.imp-archive-wrap *::after { box-sizing: border-box; }

.imp-archive-container { max-width: 1180px; margin: 0 auto; width: 100%; }

/* Header */
.imp-archive-header { text-align: center; margin-bottom: 22px; }
.imp-archive-title { font-size: clamp(22px, 5vw, 32px); font-weight: 800; margin: 0 0 6px; color: var(--imp-ink); letter-spacing: -.02em; font-family: var(--font-display); }
.imp-archive-sub { margin: 0 0 22px; color: var(--imp-muted); font-size: clamp(13px, 3vw, 14.5px); padding: 0 8px; }

/* Quick stat strip */
.imp-stat-strip { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; margin-bottom: 22px; }
.imp-stat-pill {
	background: var(--imp-surface); border: 1px solid var(--imp-border); border-radius: 12px;
	padding: 10px 20px; min-width: 92px; flex: 1 1 92px; max-width: 160px; text-align: center; box-shadow: 0 1px 2px rgba(16,24,40,.04);
}
.imp-stat-pill strong { display: block; font-size: clamp(17px, 4vw, 20px); font-weight: 800; color: var(--imp-ink); line-height: 1.2; font-family: var(--font-display); }
.imp-stat-pill span { font-size: 11px; color: var(--imp-muted); text-transform: uppercase; letter-spacing: .4px; font-weight: 600; }
.imp-stat-pill-open strong { color: var(--imp-green); }
.imp-stat-pill-upcoming strong { color: var(--imp-gold); }
.imp-stat-pill-listed strong { color: var(--imp-blue); }

.imp-archive-search { display: flex; justify-content: center; gap: 8px; max-width: 480px; margin: 0 auto; }
.imp-archive-search input[type="text"] { flex: 1; min-width: 0; width: 100%; padding: 12px 16px; border: 1px solid var(--imp-border); border-radius: 10px; font-size: 14px; background: var(--imp-surface); }
.imp-archive-search input[type="text"]:focus { outline: none; border-color: var(--imp-gold); box-shadow: 0 0 0 3px rgba(200,137,10,.12); }
.imp-archive-search button { padding: 12px 22px; border: none; border-radius: 10px; background: var(--imp-ink); color: #fff; font-weight: 700; font-size: 14px; cursor: pointer; transition: background .15s ease; white-space: nowrap; flex-shrink: 0; }
.imp-archive-search button:hover { background: var(--imp-gold); }

/* Status tabs */
.imp-archive-tabs { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 28px 0 18px; }
.imp-archive-tab { background: var(--imp-surface); border: 1px solid var(--imp-border); border-radius: 20px; padding: 9px 18px; font-size: 13px; font-weight: 700; color: var(--imp-ink); text-decoration: none; transition: all .15s ease; white-space: nowrap; }
.imp-archive-tab:hover { border-color: var(--imp-gold); color: var(--imp-gold); }
.imp-archive-tab.imp-tab-active { background: var(--imp-ink); border-color: var(--imp-ink); color: #fff; }

/* Filter bar */
.imp-filter-bar {
	display: flex; flex-wrap: wrap; gap: 14px; align-items: flex-end;
	background: var(--imp-surface); border: 1px solid var(--imp-border); border-radius: 14px;
	padding: 16px 18px; margin-bottom: 14px; box-shadow: 0 1px 2px rgba(16,24,40,.03);
}
.imp-filter-field { display: flex; flex-direction: column; gap: 5px; min-width: 140px; flex: 1 1 140px; }
.imp-filter-field label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .3px; color: var(--imp-muted); }
.imp-filter-field select,
.imp-filter-field input[type="date"] {
	width: 100%; max-width: 100%; padding: 9px 10px; border: 1px solid var(--imp-border); border-radius: 8px; font-size: 13px;
	background: #fbfbfc; color: var(--imp-ink); min-width: 0;
}
.imp-filter-field select:focus,
.imp-filter-field input[type="date"]:focus { outline: none; border-color: var(--imp-gold); }
.imp-filter-apply { padding: 9px 18px; border: none; border-radius: 8px; background: var(--imp-gold); color: #fff; font-weight: 700; cursor: pointer; width: 100%; }

/* Active filter chips */
.imp-active-filters { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 16px; }
.imp-filter-chip {
	display: inline-flex; align-items: center; gap: 6px; background: var(--imp-blue-bg); color: #1e3a8a;
	border-radius: 20px; padding: 6px 12px; font-size: 12px; font-weight: 700; text-decoration: none;
	border: 1px solid #d3e0fb; transition: opacity .15s ease; max-width: 100%; overflow-wrap: break-word;
}
.imp-filter-chip:hover { opacity: .75; }
.imp-filter-clear-all { font-size: 12px; font-weight: 700; color: var(--imp-red); text-decoration: none; }
.imp-filter-clear-all:hover { text-decoration: underline; }

.imp-results-count { text-align: center; font-size: 13px; color: var(--imp-muted); font-weight: 600; margin: 0 0 20px; }

/* ============================================================
   Card grid — every card fills its grid cell fully (no fixed %
   widths on the card itself). Grid rows stretch equally and each
   card is a column flex box so header / stats / dates line up
   across the whole row, at every breakpoint.
   ============================================================ */
.imp-archive-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	grid-auto-rows: 1fr;
	align-items: stretch;
	gap: 20px;
}
@media (max-width: 1024px) { .imp-archive-grid { grid-template-columns: repeat(2, 1fr); gap: 18px; } }
@media (max-width: 820px)  { .imp-archive-grid { gap: 16px; } }
@media (max-width: 640px)  { .imp-archive-grid { grid-template-columns: 1fr; gap: 14px; } }

/* ============================================================
   .imp-ipo-card — fluid card. width always 100% of its grid
   column; only typography/spacing scale with clamp() so it looks
   right at every phone / tablet / desktop width, not just at
   exact breakpoint values. Never give this a fixed % width in a
   media query — that shrinks the card inside its column and
   causes text/stat overflow on tablet & mobile.
   ============================================================ */
.imp-ipo-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	width: 100%;
	max-width: 100%;
	min-width: 0;
	background: var(--imp-surface);
	border: 1px solid var(--imp-border);
	border-top: 3px solid var(--imp-border);
	border-radius: 14px;
	padding: clamp(14px, 3vw, 18px);
	text-decoration: none;
	color: inherit;
	box-shadow: 0 1px 2px rgba(16,24,40,.03);
	transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
	-webkit-tap-highlight-color: transparent;
}
/* Only lift the card on hover-capable pointers (mouse/trackpad) —
   on touch screens :hover can otherwise stick after a tap. */
@media (hover: hover) and (pointer: fine) {
	.imp-ipo-card:hover { transform: translateY(-4px); box-shadow: 0 14px 28px rgba(16,24,40,.09); }
}
.imp-ipo-card:active { transform: translateY(-1px); }
.imp-ipo-card:focus-visible { outline: 2px solid var(--imp-gold); outline-offset: 2px; }
.imp-ipo-card-open { border-top-color: var(--imp-green); }
.imp-ipo-card-upcoming { border-top-color: var(--imp-gold); }
.imp-ipo-card-closed { border-top-color: var(--imp-red); }
.imp-ipo-card-listed { border-top-color: var(--imp-blue); }

.imp-ipo-card-top { display: flex; align-items: flex-start; gap: clamp(8px, 2vw, 10px); margin-bottom: clamp(10px, 2.5vw, 14px); flex-wrap: wrap; min-width: 0; }
.imp-ipo-card-logo { flex-shrink: 0; line-height: 0; }
.imp-ipo-card-logo img {
	display: block; width: clamp(34px, 8vw, 65px); height: clamp(34px, 8vw, 60px);
	border-radius: 9px; object-fit: contain; object-position: center;
	background: #fff; padding: 4px; border: 1px solid var(--imp-border);
}
.imp-ipo-card-logo-fallback {
	width: clamp(34px, 8vw, 42px); height: clamp(34px, 8vw, 42px); border-radius: 9px;
	background: linear-gradient(135deg, var(--imp-gold), var(--imp-gold-light));
	color: #fff; display: flex; align-items: center; justify-content: center;
	font-weight: 800; font-size: clamp(15px, 3.5vw, 18px); flex-shrink: 0;
}
.imp-ipo-card-heading { flex: 1 1 140px; min-width: 0; max-width: 100%; }
/* Fixed-height title area (2 lines) so every card's stats row starts at
   the same Y position regardless of title length, at every screen size */
.imp-ipo-card-heading h3 {
	margin: 0 0 2px; font-size: clamp(13.5px, 3.6vw, 15px); font-weight: 800; color: var(--imp-ink); line-height: 1.3;
	overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
	font-family: var(--font-display);
	min-height: calc(1.3em * 2);
	word-break: break-word;
}
.imp-ipo-card-meta { font-size: 11px; color: var(--imp-muted); font-weight: 600; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }

.imp-ipo-card .imp-badge { flex-shrink: 0; font-size: 10px; padding: 4px 10px; white-space: nowrap; }

.imp-ipo-card-stats {
	display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(6px, 2vw, 8px);
	padding: clamp(10px, 2.5vw, 13px) 0; border-top: 1px dashed var(--imp-border); border-bottom: 1px dashed var(--imp-border);
	margin-bottom: clamp(10px, 2.5vw, 12px);
	min-width: 0; width: 100%;
}
.imp-ipo-card-stats div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.imp-ipo-card-stats span { font-size: 10px; color: var(--imp-muted); text-transform: uppercase; letter-spacing: .2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; }
.imp-ipo-card-stats strong { font-size: clamp(11px, 3vw, 13px); font-weight: 800; color: var(--imp-ink); font-family: var(--font-display); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block; }

/* Push dates to the bottom of the card so the footer always lines up
   even if a card above has less content (flex + margin-top:auto) */
.imp-ipo-card-dates { margin-top: auto; font-size: 12px; color: var(--imp-muted); font-weight: 600; text-align: center; }

/* Reuse status colors from single page */
.imp-badge { display: inline-block; border-radius: 20px; font-weight: 700; letter-spacing: .3px; color: #fff; }
.imp-status-open { background: var(--imp-green); }
.imp-status-upcoming { background: var(--imp-gold); }
.imp-status-closed { background: var(--imp-red); }
.imp-status-listed { background: var(--imp-blue); }
.imp-positive { color: var(--imp-green); }
.imp-negative { color: var(--imp-red); }

/* Pagination */
.imp-archive-pagination { display: flex; justify-content: center; gap: 6px; margin-top: 32px; flex-wrap: wrap; }
.imp-archive-pagination .page-numbers { display: inline-block; padding: 8px 14px; border: 1px solid var(--imp-border); border-radius: 8px; background: var(--imp-surface); color: var(--imp-ink); text-decoration: none; font-size: 13px; font-weight: 600; }
.imp-archive-pagination .page-numbers.current { background: var(--imp-ink); border-color: var(--imp-ink); color: #fff; }
.imp-archive-pagination .page-numbers:hover:not(.current) { border-color: var(--imp-gold); color: var(--imp-gold); }

.imp-archive-empty { text-align: center; padding: 60px 20px; color: var(--imp-muted); font-size: 15px; }
.imp-archive-empty .imp-filter-clear-all { display: inline-block; margin-top: 10px; }

/* ============================================================
   Breakpoints — tuned in stages so nothing jumps abruptly:
   >1024        desktop, 3-col grid
   821–1024     small laptop / landscape tablet, 2-col grid
   641–820      portrait tablet, 2-col grid, tighter card padding
   481–640      phone landscape / small tablet, 1-col grid
   361–480      standard phone portrait
   ≤360         very small / older phones
   ============================================================ */
@media (max-width: 900px) {
	.imp-filter-field { min-width: 45%; flex: 1 1 45%; }
}
@media (max-width: 820px) {
	.imp-ipo-card-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
	.imp-ipo-card-top { gap: 8px; }
}
@media (max-width: 600px) {
	.imp-archive-wrap { padding: 26px 12px 56px; }
	.imp-filter-bar { padding: 14px; gap: 12px; }
	.imp-filter-field { min-width: 100%; flex: 1 1 100%; }
	.imp-archive-search { max-width: 100%; }
	.imp-stat-pill { min-width: 78px; padding: 8px 14px; }
}
@media (max-width: 480px) {
	.imp-ipo-card { padding: 14px; border-radius: 12px; }
	.imp-ipo-card-top { margin-bottom: 10px; }
	.imp-ipo-card-logo img,
	.imp-ipo-card-logo-fallback { width: 36px; height: 36px; }
	.imp-ipo-card-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 10px; column-gap: 10px; }
	.imp-ipo-card-dates { font-size: 11.5px; }
	.imp-archive-search { flex-wrap: wrap; }
	.imp-archive-search button { width: 100%; }
}
@media (max-width: 380px) {
	.imp-archive-title { font-size: 22px; }
}
@media (max-width: 360px) {
	.imp-ipo-card { padding: 12px; }
	.imp-ipo-card-heading h3 { font-size: 13.5px; }
	.imp-ipo-card-meta { font-size: 10.5px; }
	.imp-ipo-card .imp-badge { font-size: 9px; padding: 3px 8px; }
	.imp-ipo-card-stats { row-gap: 8px; column-gap: 8px; }
	.imp-ipo-card-stats strong { font-size: 11.5px; }
	.imp-stat-pill { min-width: 68px; padding: 7px 10px; }
}
