/* kumo-ui design tokens for HTMLX (no React/npm required) */
/* Based on https://kumo-ui.com/colors */

:root {
	/* Surface Hierarchy */
	--color-kumo-canvas: oklch(98.75% 0 0);
	--color-kumo-base: #fff;
	--color-kumo-elevated: oklch(98% 0 0);
	--color-kumo-recessed: oklch(96% 0 0);
	--color-kumo-tint: oklch(97% 0 0);
	--color-kumo-contrast: oklch(8.5% 0 0);

	/* Brand */
	--color-kumo-brand: oklch(0.5772 0.2324 260);
	--color-kumo-brand-hover: oklch(48.8% 0.243 264.376);

	/* Status Colors */
	--color-kumo-info: oklch(68.5% 0.169 237.323);
	--color-kumo-info-tint: oklch(93.2% 0.032 255.6 / 0.45);
	--color-kumo-success: oklch(59.6% 0.145 163.225);
	--color-kumo-success-tint: oklch(96.2% 0.043 156.7 / 0.57);
	--color-kumo-warning: oklch(73.9% 0.177 58.2);
	--color-kumo-warning-tint: oklch(93.1% 0.107 94.6 / 0.20);
	--color-kumo-danger: oklch(63.7% 0.237 25.331);
	--color-kumo-danger-tint: oklch(93.6% 0.032 17.7 / 0.42);

	/* Text Colors */
	--text-color-kumo-default: oklch(21% 0.006 285.885);
	--text-color-kumo-strong: oklch(14.5% 0 0);
	--text-color-kumo-subtle: oklch(55.6% 0 0);
	--text-color-kumo-inactive: oklch(87% 0 0);
	--text-color-kumo-placeholder: oklch(70.8% 0 0);
	--text-color-kumo-inverse: oklch(97% 0 0);
	--text-color-kumo-link: oklch(42.4% 0.199 265.638);
	--text-color-kumo-info: oklch(42.4% 0.199 265.638);
	--text-color-kumo-success: oklch(43.2% 0.095 166.913);
	--text-color-kumo-danger: oklch(50.5% 0.213 27.518);
	--text-color-kumo-warning: oklch(59.7% 0.144 57.5);

	/* Borders & Rings */
	--color-kumo-hairline: oklch(93.5% 0 0);
	--color-kumo-line: oklch(14.5% 0 0 / 0.1);
	--color-kumo-focus: oklch(15% 0 0);

	/* Shadows */
	--color-kumo-shadow-edge: oklch(0% 0 0 / 0.12);
	--color-kumo-shadow-drop: oklch(0% 0 0 / 0.08);
}

/* Dark mode */
[data-mode="dark"] {
	--color-kumo-canvas: oklch(10% 0 0);
	--color-kumo-base: oklch(17% 0 0);
	--color-kumo-elevated: oklch(12% 0 0);
	--color-kumo-recessed: oklch(15% 0 0);
	--color-kumo-tint: oklch(26.9% 0 0);
	--color-kumo-contrast: oklch(98.5% 0 0);

	--text-color-kumo-default: oklch(97% 0 0);
	--text-color-kumo-strong: oklch(98.5% 0 0);
	--text-color-kumo-subtle: oklch(70.8% 0 0);
	--text-color-kumo-inactive: oklch(43.9% 0 0);
	--text-color-kumo-placeholder: oklch(55.6% 0 0);
	--text-color-kumo-inverse: oklch(21% 0.006 285.885);
	--text-color-kumo-link: oklch(70.7% 0.165 254.624);
	--text-color-kumo-info: oklch(70.7% 0.165 254.624);
	--text-color-kumo-success: oklch(90.5% 0.093 164.15);
	--text-color-kumo-danger: oklch(70.4% 0.191 22.216);
	--text-color-kumo-warning: oklch(75% 0.183 55.934);

	--color-kumo-hairline: oklch(26.9% 0 0);
	--color-kumo-line: oklch(32% 0 0);
	--color-kumo-focus: oklch(93.5% 0 0);

	--color-kumo-shadow-edge: oklch(100% 0 0 / 0.1);
	--color-kumo-shadow-drop: oklch(0% 0 0 / 0.3);
}

/* Base styles using kumo-ui tokens */
body {
	background-color: var(--color-kumo-canvas);
	color: var(--text-color-kumo-default);
}

/* LayerCard component */
.layer-card {
	background-color: var(--color-kumo-base);
	border: 1px solid var(--color-kumo-hairline);
	border-radius: 0.75rem;
	box-shadow: 0 1px 2px 0 var(--color-kumo-shadow-edge), 0 1px 3px 0 var(--color-kumo-shadow-drop);
}

/* Button variants */
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 0.5rem;
	padding: 0.5rem 1rem;
	font-size: 0.875rem;
	font-weight: 500;
	transition: all 150ms ease;
	cursor: pointer;
	border: none;
	outline: none;
}

.btn:focus-visible {
	box-shadow: 0 0 0 2px var(--color-kumo-canvas), 0 0 0 4px var(--color-kumo-focus);
}

.btn-primary {
	background-color: var(--color-kumo-brand);
	color: var(--text-color-kumo-inverse);
}

.btn-primary:hover {
	background-color: var(--color-kumo-brand-hover);
}

.btn-secondary {
	background-color: var(--color-kumo-control);
	color: var(--text-color-kumo-default);
	border: 1px solid var(--color-kumo-hairline);
}

.btn-secondary:hover {
	background-color: var(--color-kumo-fill-hover);
}

.btn-danger {
	background-color: var(--color-kumo-danger);
	color: white;
}

.btn-danger:hover {
	opacity: 0.9;
}

/* Input styles */
.input {
	background-color: var(--color-kumo-control);
	border: 1px solid var(--color-kumo-hairline);
	border-radius: 0.5rem;
	padding: 0.5rem 0.75rem;
	font-size: 0.875rem;
	color: var(--text-color-kumo-default);
	width: 100%;
	transition: border-color 150ms ease;
}

.input::placeholder {
	color: var(--text-color-kumo-placeholder);
}

.input:focus {
	outline: none;
	border-color: var(--color-kumo-brand);
	box-shadow: 0 0 0 2px var(--color-kumo-brand) / 0.2;
}

/* Select styles */
.select {
	background-color: var(--color-kumo-control);
	border: 1px solid var(--color-kumo-hairline);
	border-radius: 0.5rem;
	padding: 0.5rem 0.75rem;
	font-size: 0.875rem;
	color: var(--text-color-kumo-default);
	width: 100%;
	cursor: pointer;
}

/* Badge styles */
.badge {
	display: inline-flex;
	align-items: center;
	border-radius: 9999px;
	padding: 0.125rem 0.625rem;
	font-size: 0.75rem;
	font-weight: 500;
}

.badge-info {
	background-color: var(--color-kumo-info-tint);
	color: var(--text-color-kumo-info);
	/* Ensure WCAG AA contrast - darken text if needed */
	font-weight: 600;
}

.badge-success {
	background-color: var(--color-kumo-success-tint);
	color: var(--text-color-kumo-success);
	font-weight: 600;
}

.badge-warning {
	background-color: var(--color-kumo-warning-tint);
	color: var(--text-color-kumo-warning);
	font-weight: 600;
}

.badge-danger {
	background-color: var(--color-kumo-danger-tint);
	color: var(--text-color-kumo-danger);
	font-weight: 600;
}

/* Status indicator */
.status-dot {
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 9999px;
	display: inline-block;
}

.status-dot-success {
	background-color: var(--color-kumo-success);
}

.status-dot-warning {
	background-color: var(--color-kumo-warning);
}

.status-dot-danger {
	background-color: var(--color-kumo-danger);
}

/* Link styles */
a {
	color: var(--text-color-kumo-link);
	text-decoration: underline;
}

a:hover {
	opacity: 0.8;
}

/* Text utilities */
.text-default {
	color: var(--text-color-kumo-default);
}

.text-strong {
	color: var(--text-color-kumo-strong);
}

.text-subtle {
	color: var(--text-color-kumo-subtle);
}

.text-success {
	color: var(--text-color-kumo-success);
}

.text-danger {
	color: var(--text-color-kumo-danger);
}

.text-warning {
	color: var(--text-color-kumo-warning);
}

/* Background utilities */
.bg-canvas {
	background-color: var(--color-kumo-canvas);
}

.bg-base {
	background-color: var(--color-kumo-base);
}

.bg-elevated {
	background-color: var(--color-kumo-elevated);
}

.bg-tint {
	background-color: var(--color-kumo-tint);
}

.bg-brand {
	background-color: var(--color-kumo-brand);
}

.bg-success {
	background-color: var(--color-kumo-success);
}

.bg-danger {
	background-color: var(--color-kumo-danger);
}

.bg-warning {
	background-color: var(--color-kumo-warning);
}

/* Border utilities */
.border-hairline {
	border-color: var(--color-kumo-hairline);
}

.border-line {
	border-color: var(--color-kumo-line);
}

/* Print styles */
@media print {
	body {
		background: white;
		color: black;
	}
	
	.htmx-indicator,
	.htmx-request,
	.modal,
	.toast,
	nav,
	footer,
	.btn,
	button {
		display: none !important;
	}
	
	.layer-card {
		border: 1px solid #ccc;
		box-shadow: none;
		page-break-inside: avoid;
	}
	
	.badge {
		border: 1px solid currentColor;
	}
	
	a {
		color: black;
		text-decoration: underline;
	}
	
	a[href^="http"]::after {
		content: " (" attr(href) ")";
		font-size: 0.8em;
		color: #666;
	}
}

/* CSS-only spinner (replaces inline SVG spinners) */
.spinner {
	display: inline-block;
	width: 1rem;
	height: 1rem;
	border: 2px solid var(--color-kumo-hairline);
	border-top-color: var(--color-kumo-brand);
	border-radius: 50%;
	animation: spin 0.6s linear infinite;
}

.spinner-lg {
	width: 2rem;
	height: 2rem;
	border-width: 3px;
}

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