/* ==========================================================================
   Free Email Checker Widget - visual layer
   A single consistent "premium" design language (soft cards, animated
   circular trust gauge, icon-led status pills, subtle motion) is used
   here and echoed in the standalone tools' own inline stylesheets, so
   every tool on the site looks and feels like it belongs to the same
   product - not five different widgets bolted together.
   ========================================================================== */

.fec-widget {
	--fec-ok: #16a34a;
	--fec-ok-bg: #f0fdf4;
	--fec-ok-border: #bbf7d0;
	--fec-warn: #b45309;
	--fec-warn-bg: #fffbeb;
	--fec-warn-border: #fde68a;
	--fec-bad: #dc2626;
	--fec-bad-bg: #fef2f2;
	--fec-bad-border: #fecaca;
	--fec-ink: #1f2937;
	--fec-muted: #6b7280;
	--fec-line: #e5e7eb;

	max-width: 480px;
	font-family: inherit;
	color: var(--fec-ink);
	background: #fff;
	border: 1px solid var(--fec-line);
	border-radius: 16px;
	padding: 22px;
	box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04), 0 8px 24px -12px rgba(16, 24, 40, 0.10);
	box-sizing: border-box;
}

.fec-widget *,
.fec-widget *::before,
.fec-widget *::after {
	box-sizing: border-box;
}

/*
 * Relying on the browser's native [hidden] behavior alone is fragile -
 * many WordPress themes' global CSS resets override element display
 * rules broadly enough to defeat it, making every hidden step of the
 * widget (OTP field, resend button, score box, bulk panel) show up
 * at once. This forces it to win regardless of theme CSS.
 */
.fec-widget [hidden] {
	display: none !important;
}

/* Persistent quota badge - always visible above the form so a visitor
   knows their remaining free checks / credits without having to run a
   check first, or dig into an error message to find out. */
.fec-widget__quota {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 14px;
	padding: 6px 12px;
	font-size: 12.5px;
	font-weight: 600;
	border-radius: 999px;
	background: #f3f4f6;
	color: var(--fec-muted);
	border: 1px solid var(--fec-line);
	line-height: 1.3;
}

.fec-widget__quota[data-tier="registered"] {
	background: #eff6ff;
	color: #1d4ed8;
	border-color: #bfdbfe;
}

.fec-widget__quota[data-tier="premium"] {
	background: #fffbeb;
	color: #92400e;
	border-color: #fde68a;
}

.fec-widget__quota[data-tier="anonymous"] {
	background: #f3f4f6;
	color: var(--fec-muted);
}

.fec-widget__quota[data-exhausted="1"] {
	background: #fef2f2;
	color: var(--fec-bad);
	border-color: var(--fec-bad-border);
}

.fec-widget__form {
	display: flex;
	gap: 10px;
}

.fec-widget__input {
	flex: 1 1 auto;
	padding: 12px 14px;
	border: 1.5px solid #d1d5db;
	border-radius: 10px;
	font-size: 14px;
	color: var(--fec-ink);
	background: #fff;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.fec-widget__input:focus {
	outline: none;
	border-color: var(--fec-accent, #2563eb);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--fec-accent, #2563eb) 18%, transparent);
}

.fec-widget__button {
	background: var(--fec-accent, #2563eb);
	color: #fff;
	border: none;
	border-radius: 10px;
	padding: 12px 20px;
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
	white-space: nowrap;
	transition: transform 0.1s ease, filter 0.15s ease, box-shadow 0.15s ease;
	box-shadow: 0 1px 2px rgba(16, 24, 40, 0.08);
}

.fec-widget__button:hover:not(:disabled) {
	filter: brightness(1.06);
	box-shadow: 0 4px 12px -2px color-mix(in srgb, var(--fec-accent, #2563eb) 45%, transparent);
}

.fec-widget__button:active:not(:disabled) {
	transform: translateY(1px);
}

.fec-widget__button:disabled {
	opacity: 0.6;
	cursor: not-allowed;
}

/* Status pill - icon-led, colored per result, gently animated in */
.fec-widget__status-line {
	margin: 14px 0 0;
	font-size: 14px;
	font-weight: 600;
	min-height: 1.2em;
	display: none;
	align-items: center;
	gap: 8px;
	padding: 10px 14px;
	border-radius: 10px;
	line-height: 1.35;
	animation: fec-fade-in 0.25s ease both;
}

.fec-widget__status-line:not(:empty) {
	display: flex;
}

.fec-widget__status-line::before {
	font-size: 15px;
	line-height: 1;
	flex: 0 0 auto;
}

.fec-widget__status-line:not([data-status]) {
	background: #f3f4f6;
	color: var(--fec-muted);
}

.fec-widget__status-line:not([data-status])::before {
	content: "⏳";
	animation: fec-pulse 1.1s ease-in-out infinite;
}

.fec-widget__status-line[data-status="valid"] {
	color: var(--fec-ok);
	background: var(--fec-ok-bg);
	border: 1px solid var(--fec-ok-border);
}
.fec-widget__status-line[data-status="valid"]::before { content: "✓"; }

.fec-widget__status-line[data-status="invalid"] {
	color: var(--fec-bad);
	background: var(--fec-bad-bg);
	border: 1px solid var(--fec-bad-border);
}
.fec-widget__status-line[data-status="invalid"]::before { content: "✕"; }

.fec-widget__status-line[data-status="risky"],
.fec-widget__status-line[data-status="unknown"] {
	color: var(--fec-warn);
	background: var(--fec-warn-bg);
	border: 1px solid var(--fec-warn-border);
}
.fec-widget__status-line[data-status="risky"]::before,
.fec-widget__status-line[data-status="unknown"]::before { content: "⚠"; }

.fec-widget__source-line {
	margin-top: 6px;
	font-size: 12px;
	color: var(--fec-muted);
}

/* Recent checks */
.fec-widget__recent {
	margin-top: 10px;
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 6px;
	font-size: 12px;
}

.fec-widget__recent-label {
	color: var(--fec-muted);
	font-weight: 600;
	flex: 0 0 auto;
}

.fec-widget__recent-list {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.fec-widget__recent-chip {
	background: #f3f4f6;
	border: 1px solid var(--fec-line);
	border-radius: 999px;
	padding: 4px 10px;
	font-size: 12px;
	color: var(--fec-ink);
	cursor: pointer;
	transition: background 0.15s ease, border-color 0.15s ease;
	font-family: inherit;
}

.fec-widget__recent-chip:hover {
	background: #e5e7eb;
	border-color: #d1d5db;
}

/* Copy result */
.fec-widget__copy-btn {
	margin-top: 14px;
	background: transparent;
	border: 1px solid var(--fec-line);
	border-radius: 8px;
	padding: 8px 14px;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--fec-muted);
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.fec-widget__copy-btn:hover {
	background: #f3f4f6;
	color: var(--fec-ink);
	border-color: #d1d5db;
}

.fec-widget__copy-btn[data-copied="1"] {
	color: var(--fec-ok);
	border-color: var(--fec-ok-border);
	background: var(--fec-ok-bg);
}

/* Accuracy report prompt */
.fec-widget__accuracy {
	margin-top: 14px;
	padding-top: 14px;
	border-top: 1px solid var(--fec-line);
}

.fec-widget__accuracy-prompt {
	margin: 0 0 8px;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--fec-muted);
}

.fec-widget__accuracy-buttons {
	display: flex;
	gap: 8px;
}

.fec-widget__accuracy-btn {
	flex: 1 1 0;
	padding: 8px 10px;
	font-size: 12.5px;
	font-weight: 700;
	border-radius: 8px;
	border: 1px solid var(--fec-line);
	background: transparent;
	color: var(--fec-ink);
	cursor: pointer;
	transition: background 0.15s ease, border-color 0.15s ease;
}

.fec-widget__accuracy-btn:hover {
	background: #f3f4f6;
}

.fec-widget__accuracy-btn[aria-pressed="true"] {
	background: var(--fec-ok-bg);
	border-color: var(--fec-ok-border);
	color: var(--fec-ok);
}

.fec-widget__accuracy-detail {
	margin-top: 10px;
}

.fec-widget__accuracy-comment {
	width: 100%;
	box-sizing: border-box;
	min-height: 56px;
	padding: 8px 10px;
	font-size: 12.5px;
	font-family: inherit;
	border-radius: 8px;
	border: 1px solid var(--fec-line);
	resize: vertical;
}

.fec-widget__accuracy-submit {
	margin-top: 8px;
	padding: 8px 16px;
	font-size: 12.5px;
	font-weight: 700;
	border-radius: 8px;
	border: none;
	background: var(--fec-accent, #2563eb);
	color: #fff;
	cursor: pointer;
}

.fec-widget__accuracy-thanks {
	margin: 0;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--fec-ok);
}

.fec-widget__suggestion-line {
	margin-top: 8px;
	font-size: 13px;
	color: var(--fec-ink);
}

.fec-widget__suggestion-apply {
	background: none;
	border: none;
	padding: 0;
	margin: 0 2px;
	color: var(--fec-accent, #2563eb);
	text-decoration: underline;
	cursor: pointer;
	font: inherit;
	font-weight: 600;
}

.fec-widget__suggestion-apply:hover {
	opacity: 0.8;
}

/* ---------------------------------------------------------------------
   Trust score - animated circular gauge + verdict + per-signal rows.
   This is the single biggest visual differentiator versus a plain
   "Score: 78/100" text line, and it's what people screenshot/share.
   --------------------------------------------------------------------- */
.fec-widget__score {
	margin-top: 16px;
	border: 1px solid var(--fec-line);
	border-radius: 14px;
	padding: 18px;
	background: linear-gradient(180deg, #fafbfc 0%, #ffffff 100%);
	animation: fec-fade-in 0.35s ease both;
}

.fec-widget__score-header {
	display: flex;
	align-items: center;
	gap: 18px;
}

.fec-widget__gauge {
	position: relative;
	width: 92px;
	height: 92px;
	flex: 0 0 auto;
}

.fec-widget__gauge-svg {
	width: 100%;
	height: 100%;
	transform: rotate(-90deg);
}

.fec-widget__gauge-track {
	fill: none;
	stroke: #eef0f3;
	stroke-width: 10;
}

.fec-widget__gauge-fill {
	fill: none;
	stroke-width: 10;
	stroke-linecap: round;
	stroke-dasharray: 326.7;
	stroke-dashoffset: 326.7;
	transition: stroke-dashoffset 0.8s cubic-bezier(0.22, 1, 0.36, 1), stroke 0.3s ease;
}

.fec-widget__score-total--excellent .fec-widget__gauge-fill { stroke: var(--fec-ok); }
.fec-widget__score-total--good .fec-widget__gauge-fill { stroke: #2563eb; }
.fec-widget__score-total--moderate .fec-widget__gauge-fill { stroke: var(--fec-warn); }
.fec-widget__score-total--poor .fec-widget__gauge-fill { stroke: var(--fec-bad); }

.fec-widget__gauge-label {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
}

.fec-widget__score-number {
	font-size: 24px;
	font-weight: 800;
	line-height: 1;
	color: var(--fec-ink);
}

.fec-widget__score-max {
	font-size: 11px;
	font-weight: 600;
	color: var(--fec-muted);
	margin-top: 1px;
}

.fec-widget__score-verdict {
	flex: 1 1 auto;
	min-width: 0;
}

.fec-widget__score-badge {
	display: inline-block;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	padding: 4px 10px;
	border-radius: 999px;
}

.fec-widget__score-total--excellent .fec-widget__score-badge { color: var(--fec-ok); background: var(--fec-ok-bg); border: 1px solid var(--fec-ok-border); }
.fec-widget__score-total--good .fec-widget__score-badge { color: #2563eb; background: #eff6ff; border: 1px solid #bfdbfe; }
.fec-widget__score-total--moderate .fec-widget__score-badge { color: var(--fec-warn); background: var(--fec-warn-bg); border: 1px solid var(--fec-warn-border); }
.fec-widget__score-total--poor .fec-widget__score-badge { color: var(--fec-bad); background: var(--fec-bad-bg); border: 1px solid var(--fec-bad-border); }

.fec-widget__score-desc {
	margin: 8px 0 0;
	font-size: 12.5px;
	line-height: 1.45;
	color: var(--fec-muted);
}

.fec-widget__signals {
	list-style: none;
	margin: 16px 0 0;
	padding: 14px 0 0;
	border-top: 1px solid var(--fec-line);
	display: flex;
	flex-direction: column;
	gap: 9px;
}

.fec-widget__signal {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
	font-size: 12.5px;
	cursor: pointer;
	border-radius: 8px;
	padding: 4px 6px;
	margin: 0 -6px;
	transition: background 0.12s ease;
}
.fec-widget__signal:hover,
.fec-widget__signal:focus-visible {
	background: #f7f8fa;
	outline: none;
}

.fec-widget__signal-icon {
	flex: 0 0 auto;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 10px;
	font-weight: 800;
	line-height: 1;
}

.fec-widget__signal--full .fec-widget__signal-icon { background: var(--fec-ok-bg); color: var(--fec-ok); }
.fec-widget__signal--partial .fec-widget__signal-icon { background: var(--fec-warn-bg); color: var(--fec-warn); }
.fec-widget__signal--zero .fec-widget__signal-icon { background: var(--fec-bad-bg); color: var(--fec-bad); }

.fec-widget__signal-label {
	flex: 1 1 auto;
	color: var(--fec-ink);
	min-width: 0;
}

.fec-widget__signal-bar-track {
	flex: 0 0 64px;
	width: 64px;
	height: 5px;
	border-radius: 999px;
	background: #eef0f3;
	overflow: hidden;
}

.fec-widget__signal-bar-fill {
	height: 100%;
	border-radius: 999px;
	transition: width 0.6s ease;
}

.fec-widget__signal--full .fec-widget__signal-bar-fill { background: var(--fec-ok); }
.fec-widget__signal--partial .fec-widget__signal-bar-fill { background: var(--fec-warn); }
.fec-widget__signal--zero .fec-widget__signal-bar-fill { background: var(--fec-bad); }

.fec-widget__signal-score {
	flex: 0 0 auto;
	width: 40px;
	text-align: right;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	color: var(--fec-muted);
}

.fec-widget__signal-chevron {
	flex: 0 0 auto;
	width: 14px;
	text-align: center;
	color: var(--fec-muted);
	font-size: 10px;
	transition: transform 0.15s ease;
}

.fec-widget__signal--expanded .fec-widget__signal-chevron {
	transform: rotate(90deg);
}

.fec-widget__signal-detail {
	flex: 1 0 100%;
	margin: 2px 0 0 28px;
	padding: 0;
	font-size: 12px;
	line-height: 1.5;
	color: var(--fec-muted);
}

/* Registration wall */
.fec-widget__register {
	margin-top: 14px;
	padding: 16px;
	border: 1.5px dashed #d1d5db;
	border-radius: 12px;
	background: #f9fafb;
	animation: fec-fade-in 0.3s ease both;
}

.fec-widget__register-msg {
	margin: 0 0 10px;
	font-size: 14px;
}

.fec-widget__register-form,
.fec-widget__otp-form {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.fec-widget__otp-input {
	max-width: 140px;
	letter-spacing: 4px;
	text-align: center;
	font-variant-numeric: tabular-nums;
}

.fec-widget__resend {
	background: transparent;
	border: 1px solid #d1d5db;
	border-radius: 8px;
	padding: 10px 14px;
	font-size: 13px;
	cursor: pointer;
	color: #4b5563;
}

.fec-widget__resend:disabled {
	opacity: 0.6;
	cursor: not-allowed;
}

/* Refer-a-friend panel */
.fec-widget__referral {
	margin-top: 14px;
	padding: 16px;
	border: 1.5px solid color-mix(in srgb, var(--fec-accent, #2563eb) 25%, transparent);
	border-radius: 12px;
	background: color-mix(in srgb, var(--fec-accent, #2563eb) 6%, #ffffff);
	animation: fec-fade-in 0.3s ease both;
}

.fec-widget__referral-msg {
	margin: 0 0 10px;
	font-size: 14px;
}

.fec-widget__referral-row {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.fec-widget__referral-link {
	flex: 1 1 200px;
	min-width: 0;
	font-size: 13px;
	color: #4b5563;
}

.fec-widget__referral-copy {
	flex: 0 0 auto;
	background: var(--fec-accent, #2563eb);
	color: #fff;
	border: none;
	border-radius: 8px;
	padding: 10px 16px;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
}

.fec-widget__referral-stats {
	margin: 10px 0 0;
	font-size: 12px;
	color: var(--fec-muted);
}

.fec-widget__credit {
	margin-top: 14px;
	font-size: 11px;
	color: #9ca3af;
	text-align: center;
}

.fec-widget__credit a {
	color: inherit;
}

/* Bulk checking */
.fec-widget__bulk-toggle {
	margin-top: 12px;
}

.fec-widget__bulk-toggle-btn {
	background: transparent;
	border: 1.5px solid var(--fec-accent, #2563eb);
	border-radius: 10px;
	padding: 10px 16px;
	font-size: 13.5px;
	font-weight: 600;
	color: var(--fec-accent, #2563eb);
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	transition: background 0.15s ease, color 0.15s ease;
}

.fec-widget__bulk-toggle-btn:hover {
	background: var(--fec-accent, #2563eb);
	color: #ffffff;
}

.fec-widget__bulk-toggle-arrow {
	font-size: 16px;
	line-height: 1;
}

.fec-widget__bulk {
	margin-top: 12px;
	padding: 16px;
	border: 1px solid var(--fec-line);
	border-radius: 12px;
	animation: fec-fade-in 0.25s ease both;
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

/* Applied for the whole time a bulk job is in flight (queuing + polling)
   so the "something is happening" signal isn't limited to the small
   progress bar - the entire panel outline picks it up too. */
.fec-widget__bulk--running {
	border-color: var(--fec-accent, #2563eb);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--fec-accent, #2563eb) 12%, transparent);
}

.fec-widget__bulk-msg {
	margin: 0 0 10px;
	font-size: 13px;
	color: #4b5563;
	display: flex;
	align-items: center;
	gap: 8px;
	min-height: 18px;
}

/* Hidden unless the bulk panel is actively running a job - toggled via
   the .fec-widget__bulk--running class on the panel (see checker.js).
   Without this spinner, the only sign a background job is in flight is
   a disabled button and a bar that can sit at 0% width (i.e. invisible)
   for several seconds while the first chunk is queued server-side. */
.fec-widget__bulk-msg-spinner {
	display: none;
	flex: none;
	width: 14px;
	height: 14px;
	border-radius: 50%;
	border: 2px solid color-mix(in srgb, var(--fec-accent, #2563eb) 25%, transparent);
	border-top-color: var(--fec-accent, #2563eb);
	animation: fec-spin 0.7s linear infinite;
}

.fec-widget__bulk--running .fec-widget__bulk-msg {
	color: #1f2937;
	font-weight: 600;
}

.fec-widget__bulk--running .fec-widget__bulk-msg-spinner {
	display: inline-block;
}

@keyframes fec-spin {
	to { transform: rotate( 360deg ); }
}

.fec-widget__bulk-label {
	margin: 0 0 6px;
	font-size: 13px;
	font-weight: 600;
	color: #1f2937;
}

.fec-widget__bulk-divider {
	margin: 10px 0;
	font-size: 12px;
	text-align: center;
	color: #9ca3af;
}

.fec-widget__bulk-input-row {
	margin-bottom: 8px;
}

.fec-widget__bulk-textarea {
	width: 100%;
	box-sizing: border-box;
	padding: 10px 12px;
	border: 1.5px solid #d1d5db;
	border-radius: 8px;
	font-size: 13px;
	font-family: Consolas, Menlo, monospace;
	resize: vertical;
}

.fec-widget__bulk-textarea:focus {
	outline: none;
	border-color: var(--fec-accent, #2563eb);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--fec-accent, #2563eb) 18%, transparent);
}

.fec-widget__bulk-progress {
	margin-bottom: 10px;
}

.fec-widget__bulk-progress-track {
	height: 10px;
	border-radius: 5px;
	background: #eef0f3;
	border: 1px solid #e2e5ea;
	overflow: hidden;
	margin-top: 8px;
	position: relative;
}

.fec-widget__bulk-progress-fill {
	height: 100%;
	width: 0%;
	min-width: 10px; /* stays a visible dot even at 0-1%, instead of disappearing */
	background: var(--fec-accent);
	border-radius: 5px;
	transition: width 0.3s ease;
}

/* While the very first chunk is being queued, "processed" is still 0
   and the bar above has nothing to show - a moving stripe here makes
   clear the job is running rather than stuck or not started. Removed
   as soon as real progress (processed > 0) comes back from the poll. */
.fec-widget__bulk-progress-track.is-indeterminate .fec-widget__bulk-progress-fill {
	width: 40% !important;
	min-width: 0;
	background: linear-gradient(
		90deg,
		transparent,
		var(--fec-accent),
		transparent
	);
	animation: fec-progress-sweep 1.1s ease-in-out infinite;
}

@keyframes fec-progress-sweep {
	0% { transform: translateX( -100% ); }
	100% { transform: translateX( 250% ); }
}

.fec-widget__bulk-progress-percent {
	margin: 6px 0 0;
	font-size: 12px;
	font-weight: 600;
	color: var(--fec-accent, #2563eb);
	text-align: right;
}

.fec-widget__bulk-actions {
	margin-top: 10px;
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.fec-widget__bulk-run {
	display: inline-flex;
	align-items: center;
	gap: 8px;
}

.fec-widget__bulk-run-spinner {
	display: none;
	flex: none;
	width: 14px;
	height: 14px;
	border-radius: 50%;
	border: 2px solid rgba(255, 255, 255, 0.4);
	border-top-color: #fff;
	animation: fec-spin 0.7s linear infinite;
}

/* Swaps the button label to "Checking…" and shows the spinner - relying
   on :disabled + opacity alone (the previous behavior) was too subtle
   for people to register the click actually did something, especially
   on mobile where there's no hover state to draw the eye. */
.fec-widget__bulk-run.is-loading .fec-widget__bulk-run-spinner {
	display: inline-block;
}

.fec-widget__bulk-download {
	background: transparent;
	border: 1px solid #d1d5db;
	border-radius: 8px;
	padding: 10px 14px;
	font-size: 13px;
	cursor: pointer;
	color: #4b5563;
}

.fec-widget__bulk-results {
	margin-top: 14px;
	max-height: 260px;
	overflow-y: auto;
	border-radius: 8px;
}

.fec-widget__bulk-results table {
	width: 100%;
	border-collapse: collapse;
	font-size: 13px;
}

.fec-widget__bulk-results th {
	text-align: left;
	padding: 8px 6px;
	border-bottom: 2px solid var(--fec-line);
	position: sticky;
	top: 0;
	background: #fff;
}

.fec-widget__bulk-results td {
	padding: 7px 6px;
	border-bottom: 1px solid #f3f4f6;
}

.fec-widget__bulk-results tr:hover td {
	background: #fafbfc;
}

.fec-widget__bulk-th-details {
	width: 1%;
	white-space: nowrap;
}

.fec-widget__bulk-row {
	cursor: pointer;
}

.fec-widget__bulk-view-btn {
	background: #eff6ff;
	color: #2563eb;
	border: 1px solid #bfdbfe;
	border-radius: 6px;
	padding: 4px 10px;
	font-size: 11.5px;
	font-weight: 700;
	cursor: pointer;
	white-space: nowrap;
}

.fec-widget__bulk-view-btn:hover {
	background: #dbeafe;
}

/* ---------------------------------------------------------------------
   Bulk result detail overlay - a distraction-free "report" view for a
   single address, reusing the same trust-gauge markup as the main
   score box. Framed like a verification certificate (trustmark strip,
   report title, footer line on how the score was produced) rather than
   a plain modal, so it reads as evidence rather than just a bigger
   table row.
   --------------------------------------------------------------------- */
.fec-widget__bulk-detail-overlay {
	position: fixed;
	inset: 0;
	background: rgba(15, 23, 42, 0.55);
	backdrop-filter: blur(2px);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
	z-index: 999999;
	animation: fec-fade-in 0.2s ease both;
}

.fec-widget__bulk-detail-page {
	position: relative;
	width: 100%;
	max-width: 460px;
	max-height: 90vh;
	overflow-y: auto;
	background: #fff;
	border-radius: 18px;
	padding: 26px 24px 22px;
	box-shadow: 0 24px 60px -20px rgba(15, 23, 42, 0.45);
	box-sizing: border-box;
}

.fec-widget__bulk-detail-close {
	position: absolute;
	top: 14px;
	right: 14px;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	border: none;
	background: #f3f4f6;
	color: #4b5563;
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
}

.fec-widget__bulk-detail-close:hover {
	background: #e5e7eb;
}

.fec-widget__bulk-detail-nav {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	margin: 0 0 14px;
}

.fec-widget__bulk-detail-prev,
.fec-widget__bulk-detail-next {
	width: 28px;
	height: 28px;
	border-radius: 50%;
	border: 1px solid var(--fec-line);
	background: #fff;
	color: var(--fec-ink);
	font-size: 16px;
	line-height: 1;
	cursor: pointer;
}

.fec-widget__bulk-detail-prev:disabled,
.fec-widget__bulk-detail-next:disabled {
	opacity: 0.35;
	cursor: default;
}

.fec-widget__bulk-detail-position {
	font-size: 12px;
	font-weight: 700;
	color: var(--fec-muted);
	min-width: 48px;
	text-align: center;
}

.fec-widget__bulk-detail-trustmark {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	margin: 0 auto 14px;
	width: fit-content;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #1d4ed8;
	background: linear-gradient(180deg, #eff6ff 0%, #dbeafe 100%);
	border: 1px solid #bfdbfe;
	border-radius: 999px;
	padding: 5px 14px;
}

.fec-widget__bulk-detail-trustmark-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background: #2563eb;
	color: #fff;
	font-size: 9px;
}

.fec-widget__bulk-detail-email {
	margin: 0;
	font-size: 16px;
	font-weight: 800;
	text-align: center;
	word-break: break-all;
	color: var(--fec-ink);
}

.fec-widget__bulk-detail-status {
	margin: 4px 0 0;
	text-align: center;
	font-size: 12.5px;
	font-weight: 700;
	color: var(--fec-muted);
}

.fec-widget__bulk-detail-status--valid { color: var(--fec-ok); }
.fec-widget__bulk-detail-status--invalid { color: var(--fec-bad); }
.fec-widget__bulk-detail-status--risky { color: var(--fec-warn); }

.fec-widget__bulk-detail-score {
	margin-top: 18px;
}

.fec-widget__bulk-detail-empty {
	margin: 18px 0 0;
	font-size: 12.5px;
	color: var(--fec-muted);
	text-align: center;
}

.fec-widget__bulk-detail-footer {
	margin: 18px 0 0;
	padding-top: 14px;
	border-top: 1px dashed var(--fec-line);
	font-size: 11px;
	line-height: 1.5;
	color: var(--fec-muted);
	text-align: center;
}

@media (max-width: 420px) {
	.fec-widget__bulk-detail-page { padding: 22px 16px 18px; border-radius: 14px; }
}

@keyframes fec-fade-in {
	from { opacity: 0; transform: translateY(4px); }
	to { opacity: 1; transform: translateY(0); }
}

@keyframes fec-pulse {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.4; }
}

@media (max-width: 420px) {
	.fec-widget { padding: 16px; border-radius: 14px; }
	.fec-widget__form { flex-direction: column; }
	.fec-widget__score-header { flex-direction: column; align-items: flex-start; }
}

.fec-ad-slot {
	margin-top: 18px;
	padding-top: 14px;
	border-top: 1px dashed #e5e7eb;
	text-align: center;
}

.fec-ad-slot__label {
	display: block;
	font-size: 11px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #9ca3af;
	margin-bottom: 8px;
}

.fec-ad-slot__body {
	display: flex;
	justify-content: center;
	overflow: hidden;
}

/* FAQ block appended to the auto-created tool pages (see
   FEC_Page_Installer::build_faq_block()) - plain <details>/<summary>
   so it works with no JS and any theme. */
details {
	border: 1px solid #e5e7eb;
	border-radius: 6px;
	padding: 10px 14px;
	margin-bottom: 8px;
}

details summary {
	cursor: pointer;
	font-weight: 600;
}

details p {
	margin: 8px 0 2px;
}
