/*
 * Electrical Shock Incident Tracker — public styles.
 * Clean, professional, non-sensational. Avoids relying on color alone to
 * convey meaning (fatal/nonfatal badges carry a text label; focus states
 * are visible for keyboard navigation).
 */

.est-wrap {
	--est-color-primary: #1b3a5c;
	--est-color-primary-dark: #12283f;
	--est-color-accent: #b3441e;
	--est-color-fatal: #7a1f1f;
	--est-color-nonfatal: #7a5c00;
	--est-color-border: #d8dee4;
	--est-color-bg-subtle: #f5f7f9;
	--est-color-text: #212b36;
	--est-color-text-muted: #5b6b79;
	--est-radius: 6px;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	color: var(--est-color-text);
	max-width: 100%;
	box-sizing: border-box;
}

.est-wrap *,
.est-wrap *::before,
.est-wrap *::after {
	box-sizing: border-box;
}

.est-disclaimer {
	background: var(--est-color-bg-subtle);
	border-left: 4px solid var(--est-color-primary);
	padding: 12px 16px;
	margin-bottom: 20px;
	border-radius: var(--est-radius);
}

.est-disclaimer p {
	margin: 0;
	font-size: 0.85rem;
	color: var(--est-color-text-muted);
	line-height: 1.5;
}

/* ---------------------------------------------------------------------
 * Filters
 * ------------------------------------------------------------------ */

.est-filters {
	background: #fff;
	border: 1px solid var(--est-color-border);
	border-radius: var(--est-radius);
	padding: 16px;
	margin-bottom: 20px;
}

.est-filters-row {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin-bottom: 12px;
}

.est-filters-row:last-child {
	margin-bottom: 0;
}

.est-field {
	display: flex;
	flex-direction: column;
	gap: 4px;
	flex: 1 1 160px;
	min-width: 140px;
}

.est-field label {
	font-size: 0.78rem;
	font-weight: 600;
	color: var(--est-color-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

.est-field input,
.est-field select {
	padding: 8px 10px;
	border: 1px solid var(--est-color-border);
	border-radius: var(--est-radius);
	font-size: 0.95rem;
	background: #fff;
	color: var(--est-color-text);
}

.est-field input:focus,
.est-field select:focus,
.est-btn:focus,
a:focus {
	outline: 3px solid #2271b1;
	outline-offset: 1px;
}

.est-filters-row-checks {
	align-items: center;
}

.est-check {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 0.9rem;
	padding: 6px 10px;
	border: 1px solid var(--est-color-border);
	border-radius: 999px;
	cursor: pointer;
	background: #fff;
}

.est-check input {
	margin: 0;
}

.est-btn {
	border: 1px solid var(--est-color-primary);
	background: #fff;
	color: var(--est-color-primary);
	border-radius: var(--est-radius);
	padding: 8px 16px;
	font-size: 0.9rem;
	font-weight: 600;
	cursor: pointer;
	margin-left: auto;
}

.est-btn:hover {
	background: var(--est-color-primary);
	color: #fff;
}

.est-btn-reset {
	margin-left: auto;
}

/* ---------------------------------------------------------------------
 * Results meta / grid
 * ------------------------------------------------------------------ */

.est-results-meta {
	font-size: 0.9rem;
	color: var(--est-color-text-muted);
	margin-bottom: 12px;
}

.est-results {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
	gap: 18px;
}

.est-results-empty,
.est-results-error {
	grid-column: 1 / -1;
	padding: 30px;
	text-align: center;
	border: 1px dashed var(--est-color-border);
	border-radius: var(--est-radius);
	color: var(--est-color-text-muted);
}

/* ---------------------------------------------------------------------
 * Incident card
 * ------------------------------------------------------------------ */

.est-card {
	border: 1px solid var(--est-color-border);
	border-radius: var(--est-radius);
	background: #fff;
	padding: 16px;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.est-card-top {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 8px;
}

.est-card-date {
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.03em;
	color: var(--est-color-text-muted);
	text-transform: uppercase;
}

.est-card-title {
	font-size: 1.05rem;
	font-weight: 700;
	margin: 2px 0 4px;
	line-height: 1.3;
}

.est-card-meta {
	font-size: 0.85rem;
	color: var(--est-color-text-muted);
	display: flex;
	flex-wrap: wrap;
	gap: 4px 12px;
}

.est-card-meta strong {
	color: var(--est-color-text);
}

.est-card-desc {
	font-size: 0.92rem;
	line-height: 1.5;
	color: var(--est-color-text);
	margin: 4px 0;
}

.est-card-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: auto;
	padding-top: 8px;
	border-top: 1px solid var(--est-color-border);
}

.est-card-actions a {
	font-size: 0.85rem;
	font-weight: 600;
	text-decoration: none;
	color: var(--est-color-primary);
}

.est-card-actions a:hover {
	text-decoration: underline;
}

/* Badges: never color-only — always paired with text */
.est-badge {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	padding: 3px 9px;
	border-radius: 999px;
	border: 1px solid transparent;
}

.est-badge-fatal {
	background: #fbe9e7;
	color: var(--est-color-fatal);
	border-color: #e8c4bd;
}

.est-badge-nonfatal {
	background: #fff6dc;
	color: var(--est-color-nonfatal);
	border-color: #ecdd9f;
}

.est-badge-published {
	background: #e6f4ea;
	color: #146c2e;
	border-color: #bfe3c9;
}

.est-badge-pending {
	background: #fff6dc;
	color: #7a5c00;
	border-color: #ecdd9f;
}

.est-badge-rejected {
	background: #f3f3f3;
	color: #555;
	border-color: #ddd;
}

.est-badge-lg {
	font-size: 0.85rem;
	padding: 5px 14px;
	margin-bottom: 12px;
}

/* ---------------------------------------------------------------------
 * Pagination
 * ------------------------------------------------------------------ */

.est-pagination {
	display: flex;
	justify-content: center;
	gap: 6px;
	margin-top: 22px;
	flex-wrap: wrap;
}

.est-pagination button {
	border: 1px solid var(--est-color-border);
	background: #fff;
	border-radius: var(--est-radius);
	padding: 6px 12px;
	cursor: pointer;
	font-size: 0.9rem;
}

.est-pagination button[aria-current="true"] {
	background: var(--est-color-primary);
	color: #fff;
	border-color: var(--est-color-primary);
}

.est-pagination button:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

/* ---------------------------------------------------------------------
 * Single incident report
 * ------------------------------------------------------------------ */

.est-single-incident {
	margin-top: 24px;
	border-top: 3px solid var(--est-color-primary);
	padding-top: 20px;
}

.est-report-heading {
	margin-top: 0;
}

.est-report-facts {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 10px 20px;
	margin: 16px 0;
	padding: 16px;
	background: var(--est-color-bg-subtle);
	border-radius: var(--est-radius);
}

.est-fact {
	display: flex;
	gap: 6px;
	font-size: 0.92rem;
}

.est-fact dt {
	font-weight: 700;
	color: var(--est-color-text-muted);
}

.est-fact dd {
	margin: 0;
}

.est-factors-list,
.est-source-list {
	margin: 0 0 16px 20px;
}

.est-verification-status {
	font-style: italic;
	color: var(--est-color-text-muted);
}

/* ---------------------------------------------------------------------
 * Stats grid (shared front-end/admin base; admin overrides in est-admin.css)
 * ------------------------------------------------------------------ */

.est-stat-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
	gap: 12px;
	margin-bottom: 24px;
}

.est-stat-tile {
	background: #fff;
	border: 1px solid var(--est-color-border);
	border-radius: var(--est-radius);
	padding: 16px;
	text-align: center;
}

.est-stat-num {
	display: block;
	font-size: 1.8rem;
	font-weight: 800;
	color: var(--est-color-primary);
}

.est-stat-label {
	display: block;
	font-size: 0.78rem;
	color: var(--est-color-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.03em;
	margin-top: 4px;
}

.est-charts-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
	gap: 20px;
}

.est-chart-card {
	background: #fff;
	border: 1px solid var(--est-color-border);
	border-radius: var(--est-radius);
	padding: 16px;
}

.est-chart-card h2,
.est-chart-card h3 {
	margin-top: 0;
	font-size: 1rem;
}

.est-skeleton {
	background: linear-gradient(90deg, #f0f0f0 25%, #f8f8f8 37%, #f0f0f0 63%);
	background-size: 400% 100%;
	animation: est-skeleton-loading 1.4s ease infinite;
	min-height: 76px;
}

@keyframes est-skeleton-loading {
	0% { background-position: 100% 50%; }
	100% { background-position: 0 50%; }
}

/* ---------------------------------------------------------------------
 * Map
 * ------------------------------------------------------------------ */

.est-map {
	width: 100%;
	border-radius: var(--est-radius);
	border: 1px solid var(--est-color-border);
}

.est-map-attribution {
	font-size: 0.78rem;
	color: var(--est-color-text-muted);
	margin-top: 6px;
}

.est-map-popup h4 {
	margin: 0 0 4px;
	font-size: 0.95rem;
}

.est-map-popup p {
	margin: 0 0 4px;
	font-size: 0.85rem;
}

/* ---------------------------------------------------------------------
 * Responsive
 * ------------------------------------------------------------------ */

@media (max-width: 782px) {
	.est-results {
		grid-template-columns: 1fr;
	}

	.est-filters-row {
		flex-direction: column;
	}

	.est-field {
		min-width: 0;
	}

	.est-btn-reset {
		margin-left: 0;
		width: 100%;
	}

	.est-report-facts {
		grid-template-columns: 1fr;
	}
}
