.cmj-table-query-editor {
	border: 1px dashed #c3c4c7;
	padding: 8px 12px;
	margin-bottom: 8px;
}

.cmj-table-query-editor__label {
	color: #646970;
	font-size: 12px;
	margin: 0 0 8px;
}

.cmj-table-row-editor {
	display: contents;
}

.cmj-table {
	display: table;
	width: 100%;
	border-collapse: collapse;
	table-layout: auto;
}

.cmj-table thead {
	display: table-header-group;
}

.cmj-table tbody {
	display: table-row-group;
}

.cmj-table tr {
	display: table-row;
}

.cmj-table th,
.cmj-table td {
	display: table-cell;
}

.cmj-table thead th {
	background-color: var(--cmj-header-bg, #1f2937);
	color: var(--cmj-header-color, #f9fafb);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	padding: var(--cmj-cell-padding, 0.75rem 1rem);
	text-align: left;
	text-transform: uppercase;
}

.cmj-table thead th.has-text-align-left,
.cmj-table tbody td.has-text-align-left {
	text-align: left;
}

.cmj-table thead th.has-text-align-center,
.cmj-table tbody td.has-text-align-center {
	text-align: center;
}

.cmj-table thead th.has-text-align-right,
.cmj-table tbody td.has-text-align-right {
	text-align: right;
}

.cmj-table thead th.cmj-cell-text--black,
.cmj-table tbody td.cmj-cell-text--black {
	font-weight: 900;
}

.cmj-table thead th.cmj-cell-text--italic,
.cmj-table tbody td.cmj-cell-text--italic {
	font-style: italic;
}

.cmj-table thead th.cmj-cell-text--normal,
.cmj-table tbody td.cmj-cell-text--normal {
	font-weight: 400;
	font-style: normal;
}

.cmj-table tbody td {
	border-bottom: 1px solid #e5e7eb;
	font-size: 0.875rem;
	padding: var(--cmj-cell-padding, 0.75rem 1rem);
	vertical-align: top;
}

.cmj-table.is-striped tbody tr.cmj-table__row--even {
	background-color: var(--cmj-row-even-bg, var(--cmj-stripe-bg, #f9fafb));
	color: var(--cmj-row-even-color, inherit);
}

.cmj-table.is-striped tbody tr.cmj-table__row--odd {
	background-color: var(--cmj-row-odd-bg, transparent);
	color: var(--cmj-row-odd-color, inherit);
}

.cmj-table__cell--amount {
	text-align: right;
	white-space: nowrap;
}

.cmj-table tbody td.cmj-table__cell--amount.has-text-align-left {
	text-align: left;
}

.cmj-table tbody td.cmj-table__cell--amount.has-text-align-center {
	text-align: center;
}

.cmj-table tbody td.cmj-table__cell--amount.has-text-align-right {
	text-align: right;
}

.cmj-empty {
	color: #6b7280;
	font-style: italic;
	margin: 0;
}

.cmj-total {
	margin: 0;
}

.cmj-total--amount {
	font-variant-numeric: tabular-nums;
}

.cmj-live-ping {
	--cmj-ping-color: #ef4444;
	--cmj-ping-duration: 1s;
	--cmj-ping-size: 12px;
	position: relative;
	display: inline-flex;
	width: var(--cmj-ping-size);
	height: var(--cmj-ping-size);
	vertical-align: middle;
}

.cmj-live-ping__ring {
	position: absolute;
	inset: 0;
	display: inline-flex;
	width: 100%;
	height: 100%;
	border-radius: 9999px;
	background-color: var(--cmj-ping-color);
	opacity: 0.75;
	animation: cmj-ping var(--cmj-ping-duration) cubic-bezier(0, 0, 0.2, 1) infinite;
}

.cmj-live-ping__dot {
	position: relative;
	display: inline-flex;
	width: 100%;
	height: 100%;
	border-radius: 9999px;
	background-color: var(--cmj-ping-color);
}

/* Pulse: dot scales and fades without expanding ring */
.cmj-live-ping--pulse .cmj-live-ping__ring {
	display: none;
}

.cmj-live-ping--pulse .cmj-live-ping__dot {
	animation: cmj-pulse var(--cmj-ping-duration) ease-in-out infinite;
}

/* Radar: two staggered expanding rings */
.cmj-live-ping--radar::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 9999px;
	background-color: var(--cmj-ping-color);
	opacity: 0.75;
	animation: cmj-ping var(--cmj-ping-duration) cubic-bezier(0, 0, 0.2, 1) infinite;
	animation-delay: calc(var(--cmj-ping-duration) / 2);
}

/* Heartbeat: double rhythmic beat on dot */
.cmj-live-ping--heartbeat .cmj-live-ping__ring {
	display: none;
}

.cmj-live-ping--heartbeat .cmj-live-ping__dot {
	animation: cmj-heartbeat var(--cmj-ping-duration) ease-in-out infinite;
}

/* Glow: breathing halo via box-shadow */
.cmj-live-ping--glow .cmj-live-ping__ring {
	display: none;
}

.cmj-live-ping--glow .cmj-live-ping__dot {
	animation: cmj-glow var(--cmj-ping-duration) ease-in-out infinite;
}

@keyframes cmj-ping {
	75%,
	100% {
		transform: scale(2);
		opacity: 0;
	}
}

@keyframes cmj-pulse {
	0%,
	100% {
		transform: scale(1);
		opacity: 1;
	}

	50% {
		transform: scale(0.85);
		opacity: 0.6;
	}
}

@keyframes cmj-heartbeat {
	0%,
	100% {
		transform: scale(1);
	}

	14% {
		transform: scale(1.25);
	}

	28% {
		transform: scale(1);
	}

	42% {
		transform: scale(1.25);
	}

	70% {
		transform: scale(1);
	}
}

@keyframes cmj-glow {
	0%,
	100% {
		box-shadow: 0 0 0 0 color-mix(in srgb, var(--cmj-ping-color) 70%, transparent);
	}

	50% {
		box-shadow: 0 0 0 calc(var(--cmj-ping-size) * 0.75) color-mix(in srgb, var(--cmj-ping-color) 0%, transparent);
	}
}

@media (prefers-reduced-motion: reduce) {
	.cmj-live-ping__ring,
	.cmj-live-ping__dot,
	.cmj-live-ping::after {
		animation: none !important;
	}
}
