/**
 * Shared component styles used by more than one Nuvobrix widget.
 *
 * Anything specific to a single section (e.g. the hero's illustration
 * panel) belongs in that widget's own stylesheet, not here — this file is
 * only for patterns that repeat across widgets, so no widget duplicates
 * another widget's CSS.
 */

.nuvobrix-eyebrow {
	font-family: var(--nuvobrix-font-mono);
	font-size: 12px;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--nuvobrix-signal);
	display: flex;
	align-items: center;
	gap: 10px;
}

.nuvobrix-eyebrow::before {
	content: "";
	width: 22px;
	height: 1px;
	background: currentColor;
	display: inline-block;
	flex: none;
}

/* Blueprint corner crosshair marks — the recurring "technical drawing"
   device used across hero, dashboard, and card panels. */
.nuvobrix-xmark {
	position: relative;
}

.nuvobrix-xmark::before,
.nuvobrix-xmark::after {
	content: "";
	position: absolute;
	width: 14px;
	height: 14px;
	border-color: var(--nuvobrix-line-strong);
	pointer-events: none;
}

.nuvobrix-xmark::before {
	top: -1px;
	left: -1px;
	border-top: 1px solid;
	border-left: 1px solid;
}

.nuvobrix-xmark::after {
	bottom: -1px;
	right: -1px;
	border-bottom: 1px solid;
	border-right: 1px solid;
}

.nuvobrix-xmark.on-dark::before,
.nuvobrix-xmark.on-dark::after {
	border-color: var(--nuvobrix-dark-line);
}

/* Shared button styling. Elementor's own Style tab controls (background,
   typography, border) override these per-instance where a widget exposes
   them; these rules just keep the resting/hover behavior consistent. */
.nuvobrix-btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: var(--nuvobrix-font-body);
	font-weight: 600;
	font-size: 14px;
	padding: 13px 22px;
	border-radius: var(--nuvobrix-radius);
	border: 1px solid var(--nuvobrix-ink);
	background: var(--nuvobrix-ink);
	color: var(--nuvobrix-paper);
	cursor: pointer;
	transition: transform .2s ease, box-shadow .2s ease, background .2s ease, color .2s ease;
	text-decoration: none;
}

.nuvobrix-btn:hover {
	transform: translateY(-2px);
	box-shadow: 0 10px 24px -10px rgba(2, 12, 73, .5);
	color: var(--nuvobrix-paper);
}

.nuvobrix-btn.is-signal {
	background: var(--nuvobrix-signal);
	border-color: var(--nuvobrix-signal);
	color: #fff;
}

.nuvobrix-btn.is-signal:hover {
	box-shadow: 0 10px 24px -8px rgba(5, 84, 244, .55);
	color: #fff;
}

.nuvobrix-btn.is-ghost {
	background: transparent;
	color: var(--nuvobrix-ink);
}

.nuvobrix-btn.is-ghost:hover {
	background: var(--nuvobrix-ink);
	color: var(--nuvobrix-paper);
}

.nuvobrix-btn svg {
	width: 14px;
	height: 14px;
	transition: transform .2s ease;
	flex: none;
}

.nuvobrix-btn:hover svg {
	transform: translate(3px, -3px);
}

@media (prefers-reduced-motion: reduce) {
	.nuvobrix-btn,
	.nuvobrix-btn svg {
		transition-duration: .01ms !important;
	}
}
