/* ── Application Kanban board ────────────────────────────────────────────── */

.wcb-ak-board {
	font-family: inherit;
	font-size: var( --wcb-text-base, 14px );
	overflow-x: auto;
}

.wcb-ak-placeholder {
	padding: var( --wcb-space-2xl, 24px );
	text-align: center;
	color: var( --wcb-text-secondary, #6b7280 );
}

.wcb-ak-loading {
	padding: var( --wcb-space-3xl, 32px );
	text-align: center;
	color: var( --wcb-text-secondary, #6b7280 );
}

/* Empty state — shown when the board has no configured stages.
   Hidden by default; the canonical `.wcb-shown` class (toggled via the
   Interactivity store) reveals it once the fetch resolves with no columns. */
.wcb-ak-empty {
	display: none;
	padding: var( --wcb-space-3xl, 32px );
	text-align: center;
	color: var( --wcb-text-secondary, #6b7280 );
	line-height: 1.5;
}

.wcb-ak-empty.wcb-shown {
	display: block;
}

/* Error states — load failure (role=alert) and a transient move-failure
   notice (role=status). Hidden by default; revealed by the canonical
   `.wcb-shown` class toggled from the Interactivity store, exactly like the
   empty state above. */
.wcb-ak-error,
.wcb-ak-move-error {
	display: none;
	padding: var( --wcb-space-md, 12px ) var( --wcb-space-lg, 16px );
	border-radius: var( --wcb-radius-md, 8px );
	line-height: 1.5;
	margin-bottom: var( --wcb-space-md, 12px );
}

.wcb-ak-error {
	background: var( --wcb-error-bg, #fef2f2 );
	color: var( --wcb-error, #b91c1c );
	border: 1px solid var( --wcb-error, #b91c1c );
}

.wcb-ak-move-error {
	background: var( --wcb-warning-bg, #fffbeb );
	color: var( --wcb-warning-text, #92400e );
	border: 1px solid var( --wcb-warning, #f59e0b );
}

.wcb-ak-error.wcb-shown,
.wcb-ak-move-error.wcb-shown {
	display: block;
}

/* ── Board columns ───────────────────────────────────────────────────────── */

.wcb-ak-columns {
	display: flex;
	gap: var( --wcb-space-lg, 16px );
	align-items: flex-start;
	padding: var( --wcb-space-xs, 4px ) 0 var( --wcb-space-lg, 16px );
}

.wcb-ak-column {
	flex: 0 0 240px;
	min-width: 0;
	background: var(--wcb-surface, #f1f5f9 );
	border: 1px solid var(--wcb-border, #e2e8f0 );
	border-radius: var( --wcb-radius-md, 8px );
	padding: var( --wcb-space-md, 12px );
	min-height: 200px;
	transition: border-color .15s, background .15s;
}

.wcb-ak-column--over {
	border-color: var(--wcb-primary, #2563eb );
	background: var( --wcb-info-bg, #dbeafe );
}

.wcb-ak-column-header {
	font-size: var( --wcb-text-xs, 12px );
	font-weight: var( --wcb-font-bold, 700 );
	text-transform: uppercase;
	letter-spacing: .04em;
	color: var( --wcb-text-secondary, #6b7280 );
	margin-bottom: var( --wcb-space-sm, 10px );
	padding-bottom: var( --wcb-space-sm, 8px );
	border-bottom: 1px solid var(--wcb-border, #e2e8f0 );
}

.wcb-ak-column-count {
	display: inline-block;
	min-width: 1.5em;
	padding: 0 var( --wcb-space-xs, 6px );
	border-radius: var( --wcb-radius-full, 9999px );
	background: var( --wcb-surface, #f1f5f9 );
	color: var( --wcb-text-secondary, #6b7280 );
	text-align: center;
	font-variant-numeric: tabular-nums;
}

.wcb-ak-loadmore {
	margin-top: var( --wcb-space-sm, 8px );
	width: 100%;
	padding: var( --wcb-space-sm, 8px );
	min-height: 40px;
	border: 1px dashed var( --wcb-border, #e2e8f0 );
	border-radius: var( --wcb-radius-md, 8px );
	background: transparent;
	color: var( --wcb-text-secondary, #6b7280 );
	font-family: inherit;
	font-size: var( --wcb-text-sm, 13px );
	font-weight: var( --wcb-font-medium, 500 );
	cursor: pointer;
	transition: background var( --wcb-transition-fast, 0.12s ), color var( --wcb-transition-fast, 0.12s );
}

.wcb-ak-loadmore:hover:not( :disabled ) {
	background: var( --wcb-surface, #f1f5f9 );
	color: var( --wcb-contrast, #0f172a );
}

.wcb-ak-loadmore:disabled {
	opacity: 0.6;
	cursor: default;
}

.wcb-ak-loadmore:focus-visible {
	outline: 2px solid var( --wcb-primary, #6366f1 );
	outline-offset: 2px;
}

.wcb-ak-cards {
	display: flex;
	flex-direction: column;
	gap: var( --wcb-space-sm, 8px );
	min-height: 60px;
}

/* ── Application cards ───────────────────────────────────────────────────── */

.wcb-ak-card {
	background: var(--wcb-on-primary, #ffffff );
	border: 1px solid var(--wcb-border, #e2e8f0 );
	border-radius: var( --wcb-radius-sm, 6px );
	padding: var( --wcb-space-sm, 10px ) var( --wcb-space-md, 12px );
	cursor: grab;
	transition: box-shadow .15s, opacity .15s;
	user-select: none;
	min-width: 0;
}

.wcb-ak-card:hover {
	box-shadow: var( --wcb-shadow-md, 0 4px 12px rgba( 0, 0, 0, .08 ) );
}

.wcb-ak-card--dragging {
	opacity: 0.5;
	cursor: grabbing;
}

@media ( prefers-reduced-motion: reduce ) {
	.wcb-ak-column,
	.wcb-ak-card {
		transition: none;
	}

	.wcb-ak-card--dragging {
		opacity: 1;
	}
}

.wcb-ak-card-name {
	font-weight: var( --wcb-font-semibold, 600 );
	color: var(--wcb-contrast, #0f172a );
	margin-bottom: 2px;
	font-size: var( --wcb-text-sm, 13px );
}

.wcb-ak-card-meta {
	font-size: var( --wcb-text-xs );
	color: var( --wcb-text-secondary, #6b7280 );
}

.wcb-ak-card-tags {
	display: flex;
	flex-wrap: wrap;
	gap: var( --wcb-space-xs, 4px );
	margin-top: var( --wcb-space-sm, 6px );
}

.wcb-ak-tag {
	font-size: var( --wcb-text-xs );
	font-weight: var( --wcb-font-medium, 500 );
	background: var( --wcb-info-bg, #dbeafe );
	color: var(--wcb-primary, #2563eb );
	border-radius: var( --wcb-radius-sm );
	padding: 2px var( --wcb-space-xs );
}
