/* =====================================================================
   MrkTim Components
   Återanvändbara UI-klasser. Mobile First – touch-vänliga som default.
   ===================================================================== */

/* =========================== Navigation ============================ */
.nav-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--space-1);
}

.nav-item {
	display: flex;
	align-items: center;
	gap: var(--space-3);
	min-height: var(--touch-target-min);
	padding: 0 var(--space-3);
	border-radius: var(--radius-md);
	color: var(--color-text-secondary);
	font-size: var(--text-sm);
	font-weight: var(--weight-medium);
	transition: background var(--transition-fast), color var(--transition-fast);
}

.nav-item:hover {
	background: var(--color-surface-hover);
	color: var(--color-text);
}

.nav-item.active {
	background: var(--color-accent-subtle);
	color: var(--color-accent);
}

/* Delade ikonregler (nav + knappar) */
.nav-item__icon,
.btn__icon {
	width: 1.125rem;
	height: 1.125rem;
	flex-shrink: 0;
	stroke: currentColor;
	fill: none;
	stroke-width: 1.75;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* =========================== Buttons =============================== */
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-2);
	min-height: var(--control-height);
	padding: 0 var(--space-4);
	border: 1px solid transparent;
	border-radius: var(--radius-md);
	font-size: var(--text-sm);
	font-weight: var(--weight-semibold);
	line-height: 1;
	white-space: nowrap;
	text-decoration: none;
	cursor: pointer;
	transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
	-webkit-tap-highlight-color: transparent;
}

.btn:disabled,
.btn[aria-disabled="true"] {
	opacity: 0.5;
	cursor: not-allowed;
}

.btn--primary {
	background: var(--color-accent);
	color: var(--color-text-on-accent);
}

.btn--primary:hover:not(:disabled) { background: var(--color-accent-hover); color: var(--color-text-on-accent); }
.btn--primary:active:not(:disabled) { background: var(--color-accent-active); }

.btn--secondary {
	background: var(--color-surface-alt);
	border-color: var(--color-border);
	color: var(--color-text);
}

.btn--secondary:hover:not(:disabled) { background: var(--color-surface-hover); border-color: var(--color-border-strong); color: var(--color-text); }

.btn--ghost {
	background: transparent;
	color: var(--color-text-secondary);
}

.btn--ghost:hover:not(:disabled) { background: var(--color-surface-hover); color: var(--color-text); }

.btn--danger {
	background: transparent;
	border-color: var(--color-danger-border);
	color: var(--color-danger);
}

.btn--danger:hover:not(:disabled) { background: var(--color-danger-subtle); border-color: var(--color-danger); color: var(--color-danger-hover); }

.btn--sm {
	min-height: var(--control-height-sm);
	padding: 0 var(--space-3);
	font-size: var(--text-xs);
}

.btn--block {
	width: 100%;
}

.btn--icon {
	width: var(--control-height);
	padding: 0;
}

.btn--icon.btn--sm {
	width: var(--control-height-sm);
}

/* På tablet+ är "block"-knappar bara block på mobil */
@media (min-width: 768px) {
	.btn--block-mobile {
		width: auto;
	}
}

@media (max-width: 767.98px) {
	.btn--block-mobile {
		width: 100%;
	}
}

/* =========================== Forms ================================= */
.field {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	min-width: 0;
}

.field__label {
	font-size: var(--text-sm);
	font-weight: var(--weight-medium);
	color: var(--color-text-secondary);
}

.field__hint {
	font-size: var(--text-xs);
	color: var(--color-text-muted);
}

.input,
.select,
.textarea {
	width: 100%;
	min-height: var(--control-height);
	padding: 0 var(--control-padding-x);
	background: var(--color-surface-alt);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-md);
	color: var(--color-text);
	font-size: var(--text-base);
	transition: border-color var(--transition-fast), background var(--transition-fast);
	appearance: none;
	-webkit-appearance: none;
}

.textarea {
	min-height: calc(var(--control-height) * 2);
	padding-top: var(--space-2);
	padding-bottom: var(--space-2);
	resize: vertical;
	line-height: var(--leading-normal);
}

.input::placeholder,
.textarea::placeholder {
	color: var(--color-text-muted);
}

.input:hover,
.select:hover,
.textarea:hover {
	border-color: var(--color-border-strong);
}

.input:focus,
.select:focus,
.textarea:focus,
.input:focus-visible,
.select:focus-visible,
.textarea:focus-visible {
	border-color: var(--color-accent);
	box-shadow: 0 0 0 3px var(--color-accent-subtle);
	border-radius: var(--radius-md);
}

.input:disabled,
.select:disabled,
.textarea:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

.select {
	padding-right: var(--space-10);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23b3b3b3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right var(--space-3) center;
}

.select option {
	background: var(--color-surface-alt);
	color: var(--color-text);
}

.input--numeric {
	text-align: right;
	font-variant-numeric: tabular-nums;
}

/* Datum/tid: Chromium-ikoner i mörkt tema */
.input::-webkit-calendar-picker-indicator {
	filter: invert(0.75);
	cursor: pointer;
}

/* Validering (Blazor sätter .invalid/.valid.modified) */
.input.invalid,
.select.invalid,
.textarea.invalid {
	border-color: var(--color-danger);
}

.validation-message {
	display: flex;
	align-items: center;
	gap: var(--space-1);
	font-size: var(--text-xs);
	color: var(--color-danger);
}

.validation-message::before {
	content: "!";
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 0.875rem;
	height: 0.875rem;
	border-radius: var(--radius-full);
	background: var(--color-danger);
	color: var(--color-text);
	font-weight: var(--weight-bold);
	font-size: 0.625rem;
	flex-shrink: 0;
}

.form-actions {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	margin-top: var(--space-2);
}

@media (min-width: 768px) {
	.form-actions {
		flex-direction: row;
		align-items: center;
	}
}

/* =========================== Card / Panel ========================== */
.card {
	background: var(--color-surface);
	border: 1px solid var(--color-border-subtle);
	border-radius: var(--radius-lg);
	padding: var(--space-4);
}

.card__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-3);
	margin-bottom: var(--space-4);
}

.card__title {
	font-size: var(--text-base);
	font-weight: var(--weight-semibold);
}

@media (min-width: 768px) {
	.card {
		padding: var(--space-5);
	}
}

/* =========================== Alerts ================================ */
.alert {
	display: flex;
	align-items: flex-start;
	gap: var(--space-3);
	padding: var(--space-3) var(--space-4);
	border-radius: var(--radius-md);
	border: 1px solid var(--color-border);
	border-left-width: 3px;
	background: var(--color-surface-alt);
	font-size: var(--text-sm);
	color: var(--color-text);
}

.alert--success { border-left-color: var(--color-success); background: var(--color-success-subtle); }
.alert--warning { border-left-color: var(--color-warning); background: var(--color-warning-subtle); }
.alert--danger  { border-left-color: var(--color-danger);  background: var(--color-danger-subtle); }

/* =========================== Badge ================================= */
.badge {
	display: inline-flex;
	align-items: center;
	gap: var(--space-1);
	padding: 0.125rem var(--space-2);
	border-radius: var(--radius-sm);
	font-size: var(--text-xs);
	font-weight: var(--weight-medium);
	background: var(--color-surface-alt);
	border: 1px solid var(--color-border);
	color: var(--color-text-secondary);
	white-space: nowrap;
}

.badge--accent { background: var(--color-accent-subtle); border-color: var(--color-accent-border); color: var(--color-accent); }
.badge--muted  { color: var(--color-text-muted); }

/* =========================== States ================================ */
.state {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--space-2);
	padding: var(--space-8) var(--space-4);
	text-align: center;
	color: var(--color-text-muted);
	font-size: var(--text-sm);
}

.state__title {
	color: var(--color-text-secondary);
	font-weight: var(--weight-medium);
}

.spinner {
	width: 1.25rem;
	height: 1.25rem;
	border: 2px solid var(--color-border);
	border-top-color: var(--color-accent);
	border-radius: var(--radius-full);
	animation: spin 0.7s linear infinite;
}

.spinner--sm {
	width: 0.875rem;
	height: 0.875rem;
	border-width: 2px;
}

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

@media (prefers-reduced-motion: reduce) {
	.spinner { animation-duration: 1.5s; }
}

/* =========================== Data list / table =====================
   Mobil: varje rad är ett "list item" med staplad info.
   ≥768px: samma markup blir en riktig tabell.
   =================================================================== */
.data-list {
	display: flex;
	flex-direction: column;
	border-top: 1px solid var(--color-border-subtle);
}

.data-list__head {
	display: none;
}

.data-list__row {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: var(--space-1) var(--space-3);
	padding: var(--space-3) 0;
	border-bottom: 1px solid var(--color-border-subtle);
}

.data-list__row--editing {
	grid-template-columns: 1fr;
	gap: var(--space-3);
	background: var(--color-surface);
	padding: var(--space-3);
	margin: 0 calc(-1 * var(--space-3));
	border-radius: var(--radius-md);
	border-bottom-color: transparent;
}

.data-list__primary {
	font-weight: var(--weight-medium);
	color: var(--color-text);
	min-width: 0;
	overflow-wrap: anywhere;
}

.data-list__secondary {
	grid-column: 1;
	font-size: var(--text-sm);
	color: var(--color-text-secondary);
	min-width: 0;
	overflow-wrap: anywhere;
}

.data-list__meta {
	grid-column: 1;
	font-size: var(--text-xs);
	color: var(--color-text-muted);
}

.data-list__value {
	grid-column: 2;
	grid-row: 1;
	font-variant-numeric: tabular-nums;
	font-weight: var(--weight-semibold);
	text-align: right;
	white-space: nowrap;
}

.data-list__actions {
	grid-column: 1 / -1;
	display: flex;
	gap: var(--space-2);
	margin-top: var(--space-2);
}

.data-list__actions .btn {
	flex: 1;
}

.data-list__footer {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: var(--space-4) 0;
	font-weight: var(--weight-semibold);
}

.data-list__footer .data-list__cell--numeric {
	color: var(--color-accent);
	font-size: var(--text-lg);
	font-variant-numeric: tabular-nums;
}

/* Celler som bara visas i tabell-läge */
.data-list__cell--table {
	display: none;
}

@media (min-width: 768px) {
	.data-list {
		display: table;
		width: 100%;
		border-collapse: collapse;
		border-top: none;
	}

	.data-list__head,
	.data-list__body,
	.data-list__foot {
		display: table-row-group;
	}

	.data-list__head {
		display: table-header-group;
	}

	.data-list__foot {
		display: table-footer-group;
	}

	.data-list__row,
	.data-list__head-row,
	.data-list__footer {
		display: table-row;
	}

	.data-list__row {
		transition: background var(--transition-fast);
	}

	.data-list__row:hover {
		background: var(--color-surface);
	}

	.data-list__row--editing {
		background: var(--color-surface);
		margin: 0;
	}

	.data-list__row--editing:hover {
		background: var(--color-surface);
	}

	.data-list__cell,
	.data-list__head-cell {
		display: table-cell;
		vertical-align: middle;
		padding: var(--space-3) var(--space-3);
		border-bottom: 1px solid var(--color-border-subtle);
		font-size: var(--text-sm);
	}

	.data-list__cell:first-child,
	.data-list__head-cell:first-child {
		padding-left: var(--space-2);
	}

	.data-list__cell:last-child,
	.data-list__head-cell:last-child {
		padding-right: var(--space-2);
	}

	.data-list__head-cell {
		border-bottom-color: var(--color-border);
		white-space: nowrap;
	}

	.data-list__cell--table {
		display: table-cell;
	}

	.data-list__cell--mobile {
		display: none;
	}

	.data-list__cell--numeric,
	.data-list__head-cell--numeric {
		text-align: right;
		font-variant-numeric: tabular-nums;
	}

	.data-list__cell--actions {
		text-align: right;
		white-space: nowrap;
	}

	.data-list__cell--actions .btn + .btn {
		margin-left: var(--space-1);
	}

	.data-list__primary,
	.data-list__secondary,
	.data-list__meta,
	.data-list__value,
	.data-list__actions {
		display: contents;
	}

	.data-list__footer .data-list__cell {
		border-bottom: none;
		border-top: 1px solid var(--color-border);
		font-weight: var(--weight-semibold);
	}

	.data-list__footer .data-list__cell--numeric {
		color: var(--color-accent);
		font-size: var(--text-base);
	}
}

/* =========================== Stat / KPI ============================ */
.stat {
	display: flex;
	flex-direction: column;
	gap: var(--space-1);
	padding: var(--space-3) var(--space-4);
	background: var(--color-surface);
	border: 1px solid var(--color-border-subtle);
	border-radius: var(--radius-md);
}

.stat__value {
	font-size: var(--text-xl);
	font-weight: var(--weight-bold);
	font-variant-numeric: tabular-nums;
	line-height: 1;
}

.stat__value--accent {
	color: var(--color-accent);
}

/* =========================== Segmented control ===================== */
.segmented {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 1fr;
	width: 100%;
	padding: var(--space-1);
	background: var(--color-surface);
	border: 1px solid var(--color-border-subtle);
	border-radius: var(--radius-md);
	gap: var(--space-1);
}

.segmented__item {
	min-height: var(--control-height-sm);
	padding: 0 var(--space-3);
	border: 0;
	border-radius: var(--radius-sm);
	background: transparent;
	color: var(--color-text-secondary);
	font-size: var(--text-sm);
	font-weight: var(--weight-medium);
	white-space: nowrap;
	transition: background var(--transition-fast), color var(--transition-fast);
}

.segmented__item:hover { color: var(--color-text); }

.segmented__item[aria-pressed="true"] {
	background: var(--color-surface-alt);
	color: var(--color-text);
	box-shadow: inset 0 0 0 1px var(--color-border);
}

@media (min-width: 768px) {
	.segmented {
		display: inline-grid;
		width: auto;
	}
}

/* =========================== Stepper (−/+ knappar) ================= */
.stepper {
	display: flex;
	align-items: center;
	gap: var(--space-1);
}

.stepper .btn {
	min-width: var(--control-height-sm);
	padding: 0 var(--space-2);
	font-variant-numeric: tabular-nums;
}

.stepper__value {
	width: 4.5rem;
	min-height: var(--control-height-sm);
	padding: 0 var(--space-2);
	text-align: center;
	font-weight: var(--weight-semibold);
	font-size: var(--text-base);
}

/* =========================== Summary rows ========================== */
.summary {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	padding-top: var(--space-3);
	border-top: 1px solid var(--color-border);
}

.summary__row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: var(--space-3);
	font-size: var(--text-sm);
	color: var(--color-text-secondary);
}

.summary__row--total {
	font-size: var(--text-base);
	font-weight: var(--weight-semibold);
	color: var(--color-text);
}

.summary__value {
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.summary__row--total .summary__value {
	font-size: var(--text-xl);
	font-weight: var(--weight-bold);
}

.summary__value--accent {
	color: var(--color-accent);
}

/* =========================== Misc / utilities ====================== */
/* Liten versal etikett – används av sektionsrubriker, tabellhuvuden och KPI-etiketter */
.eyebrow,
.section__title,
.stat__label,
.data-list__head-cell {
	font-size: var(--text-xs);
	font-weight: var(--weight-semibold);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--color-text-muted);
}

.text-muted { color: var(--color-text-muted); }
.text-secondary { color: var(--color-text-secondary); }
.text-accent { color: var(--color-accent); }
.text-numeric { font-variant-numeric: tabular-nums; }
