/* =========================================================================
 * TSF Reviews — region archive grid (redesigned).
 * Denser cards, region switcher + instant search + sort, 2-up on mobile.
 * ===================================================================== */

.tsfrv-arch {
	--arch-bg: #171717;
	--arch-line: #2b2b2b;
	--arch-red: #e10600;
	--arch-red-bright: #ff2a2a;
	--arch-text: #e8e8e8;
	--arch-mute: #8a8a8a;
	color: var(--arch-text);
	box-sizing: border-box;
	width: 100%;
}
.tsfrv-arch *,
.tsfrv-arch *::before,
.tsfrv-arch *::after { box-sizing: border-box; }

/* ── Controls: region switch · search · sort ────────────────────────────── */
.tsfrv-arch-controls {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin: 0 0 20px;
}
.tsfrv-arch-ctrl { display: flex; align-items: center; gap: 8px; min-width: 0; }
.tsfrv-arch-ctrl--search { flex: 1 1 240px; }
.tsfrv-arch-ctrl label {
	font-size: 0.72rem;
	text-transform: uppercase;
	letter-spacing: 0.6px;
	font-weight: 700;
	color: var(--arch-red-bright);
	white-space: nowrap;
}
.tsfrv-arch-select,
.tsfrv-arch-search-input {
	background: #151515;
	color: #f2f2f2;
	border: 1px solid #3a3a3a;
	border-radius: 9px;
	padding: 10px 12px;
	font-size: 0.95rem;
}
.tsfrv-arch-search-input { width: 100%; }
.tsfrv-arch-select:focus,
.tsfrv-arch-search-input:focus {
	border-color: var(--arch-red);
	box-shadow: 0 0 0 1px var(--arch-red);
	outline: none;
}

/* ── Grid ────────────────────────────────────────────────────────────────── */
/* Desktop caps at 5 columns; step down on narrower widths (mobile 2-up lives in
   the max-width:600 block below). */
.tsfrv-arch-grid {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 16px;
	width: 100%;
}
@media (max-width: 1159px) { .tsfrv-arch-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 899px)  { .tsfrv-arch-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

.tsfrv-arch-empty,
.tsfrv-arch-noresults {
	padding: 28px 16px;
	text-align: center;
	color: var(--arch-mute);
	font-size: 1rem;
}

/* ── Card ────────────────────────────────────────────────────────────────── */
.tsfrv-arch-card {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 6px;
	padding: 16px 15px 14px;
	background: var(--arch-bg);
	border: 1px solid var(--arch-line);
	border-radius: 12px;
	box-shadow: 0 4px 10px rgba(0, 0, 0, 0.35);
	transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}
.tsfrv-arch-card:hover {
	transform: translateY(-4px);
	border-color: var(--arch-red);
	box-shadow: 0 12px 24px rgba(0, 0, 0, 0.55);
}

.tsfrv-arch-year {
	position: absolute;
	top: 10px;
	right: 10px;
	padding: 2px 9px;
	font-size: 0.72rem;
	font-weight: 700;
	color: #cfcfcf;
	background: #232323;
	border: 1px solid #3d3d3d;
	border-radius: 20px;
}
.tsfrv-arch-year.is-recent {
	color: #fff;
	background: var(--arch-red);
	border-color: #ff5a5a;
}

.tsfrv-arch-logo {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 84px;
	margin-top: 6px;
}
.tsfrv-arch-logo img { max-height: 100px; max-width: 100%; width: auto; object-fit: contain; }

.tsfrv-arch-title {
	font-size: 1.28rem;
	line-height: 1.15;
	font-weight: 700;
	color: #ff0000 !important;
	text-decoration: none;
}
.tsfrv-arch-title:hover { color: #fff; }

.tsfrv-arch-loc {
	font-size: 0.72rem;
	text-transform: uppercase;
	letter-spacing: 0.6px;
	color: var(--arch-mute);
}

.tsfrv-arch-score {
	margin: 2px 0 4px;
	font-weight: 800;
	line-height: 1;
	text-decoration: none;
	color: #fff !important;
}
.tsfrv-arch-score-num { font-size: 1.9rem; }
.tsfrv-arch-score-max { font-size: 0.85rem; color: #ff0000; margin-left: 2px; }

.tsfrv-arch-actions {
	display: flex;
	gap: 8px;
	width: 100%;
	margin-top: auto;
	padding-top: 6px;
}
/* hello-elementor's reset (`[type=button], [type=submit], button`) sets its own
   border/background/color at equal specificity to a single class, and adds
   :focus/:active rules we don't otherwise touch — so every color-bearing
   property here needs !important AND an explicit :hover/:focus/:active/:visited
   pass, or its pink (#c36) border reappears the moment the button is clicked. */
.tsfrv-arch-btn,
.tsfrv-arch-btn:hover,
.tsfrv-arch-btn:focus,
.tsfrv-arch-btn:active,
.tsfrv-arch-btn:visited {
	border: 1px solid transparent !important;
	color: #fff !important;
	outline: none !important;
	box-shadow: none !important;
}
.tsfrv-arch-btn {
	flex: 1;
	padding: 8px 6px;
	font-size: 0.82rem;
	font-weight: 600;
	line-height: 1.15;
	text-align: center;
	text-decoration: none;
	border-radius: 7px !important;
	cursor: pointer;
}
.tsfrv-arch-btn--read,
.tsfrv-arch-btn--read:focus,
.tsfrv-arch-btn--read:active,
.tsfrv-arch-btn--read:visited {
	background: var(--arch-red) !important;
	border-color: var(--arch-red) !important;
}
.tsfrv-arch-btn--read:hover,
.tsfrv-arch-btn--active {
	background: #ff1a1a !important;
	border-color: #ff1a1a !important;
}
.tsfrv-arch-btn--scores,
.tsfrv-arch-btn--scores:focus,
.tsfrv-arch-btn--scores:active,
.tsfrv-arch-btn--scores:visited {
	background: #2a2a2a !important;
	border-color: #3d3d3d !important;
	color: #eee !important;
}
.tsfrv-arch-btn--scores:hover {
	background: #3a3a3a !important;
	border-color: #3d3d3d !important;
}

.tsfrv-arch-pills {
	display: flex;
	flex-wrap: wrap;
	gap: 5px;
	justify-content: center;
	margin-top: 8px;
}
.tsfrv-arch-pill {
	padding: 2px 9px;
	font-size: 0.72rem;
	color: #cfcfcf;
	background: #262626;
	border-radius: 5px;
	text-decoration: none;
}
.tsfrv-arch-pill:hover { color: #fff; background: #3a3a3a; }
.tsfrv-arch-pills-more { background: none; border: none !important; color: #888 !important; cursor: pointer; font-size: 1rem; line-height: 1; padding: 0 4px; }
.tsfrv-arch-pills-more:hover { background-color: #3a3a3a !important; }

.tsfrv-arch-scores {
	width: 100%;
	margin-top: 12px;
	padding-top: 12px;
	border-top: 1px solid var(--arch-line);
}

/* Compact 2x2 Quick Facts grid (Scare Intensity / Runtime / MPD / Touch) —
   deliberately tight (small type, minimal gap) so expanding "Preview Scores"
   doesn't cause a big layout shift on mobile. */
.tsfrv-arch-qf {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 8px 12px;
}
.tsfrv-arch-qf-cell {
	display: flex;
	flex-direction: column;
	gap: 1px;
	min-width: 0;
}
.tsfrv-arch-qf-label {
	font-size: 0.66rem;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	color: var(--arch-mute);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.tsfrv-arch-qf-value {
	font-size: 0.9rem;
	font-weight: 700;
	color: #fff;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.tsfrv-arch-qf-empty {
	margin: 0;
	font-size: 0.82rem;
	color: var(--arch-mute);
	text-align: center;
}

/* ── Top Picks sidebar widget ────────────────────────────────────────────── */
.top-picks-widget h3 {
	font-size: 1.1rem;
	color: #fff;
	margin: 0 0 10px;
	text-transform: uppercase;
	letter-spacing: 0.5px;
}
.top-picks-widget ol { margin: 0; padding-left: 1.4em; color: var(--arch-text); }
.top-picks-widget li { margin: 0 0 7px; }
.top-picks-widget a { color: var(--arch-red-bright); text-decoration: none; }
.top-picks-widget a:hover { color: #fff; }
.top-picks-score { float: right; color: #fff; font-weight: 700; }

/* ── Mobile: 2-up grid, stacked controls, compact cards ──────────────────── */
@media (max-width: 600px) {
	.tsfrv-arch-controls { gap: 10px; }
	.tsfrv-arch-ctrl--region,
	.tsfrv-arch-ctrl--sort { flex: 1 1 46%; }
	.tsfrv-arch-ctrl--region .tsfrv-arch-select,
	.tsfrv-arch-ctrl--sort .tsfrv-arch-select { flex: 1; min-width: 0; }
	.tsfrv-arch-ctrl--search { flex: 1 1 100%; order: -1; }

	.tsfrv-arch-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 12px;
	}
	.tsfrv-arch-card { padding: 12px 10px; }
	.tsfrv-arch-logo { height: 62px; }
	.tsfrv-arch-logo img { max-height: 62px; }
	.tsfrv-arch-title { font-size: 1.02rem; }
	.tsfrv-arch-score-num { font-size: 1.5rem; }
	.tsfrv-arch-actions { flex-direction: column; }
	.tsfrv-arch-btn { padding: 9px 6px; }
}
