/* ==========================================================================
   Aminex Nova — Base
   Reset, typography, layout primitives.
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

html {
	-webkit-text-size-adjust: 100%;
	text-rendering: optimizeLegibility;
	scroll-behavior: smooth;
}

body {
	margin: 0;
	background: var(--nova-canvas);
	color: var(--nova-ink-2);
	font-family: var(--nova-sans);
	font-size: var(--nova-fs-body);
	line-height: var(--nova-lh-body);
	font-feature-settings: "ss01", "cv11";
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

img, svg, video { max-width: 100%; height: auto; display: block; }

a {
	color: var(--nova-ink);
	text-decoration: none;
	transition: color var(--nova-fast) var(--nova-ease);
}
a:hover { color: var(--nova-purple); }

::selection {
	background: var(--nova-purple-soft);
	color: var(--nova-purple-deep);
}

/* ---------- Typography ---------- */
h1, h2, h3, h4, h5, h6 {
	font-family: var(--nova-serif);
	font-weight: 400;
	color: var(--nova-ink);
	letter-spacing: var(--nova-track-tight);
	line-height: var(--nova-lh-tight);
	margin: 0 0 var(--nova-space-4);
}
h1 { font-size: var(--nova-fs-h1); }
h2 { font-size: var(--nova-fs-h2); }
h3 { font-size: var(--nova-fs-h3); line-height: var(--nova-lh-snug); }
h4 { font-size: var(--nova-fs-h4); font-family: var(--nova-sans); font-weight: 600; letter-spacing: 0; }
h5, h6 { font-family: var(--nova-sans); font-weight: 600; letter-spacing: 0; }

p { margin: 0 0 var(--nova-space-4); }
p:last-child { margin-bottom: 0; }

small, .nova-small { font-size: var(--nova-fs-small); color: var(--nova-ink-3); }

.nova-eyebrow {
	font-family: var(--nova-sans);
	font-size: var(--nova-fs-eyebrow);
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: var(--nova-track-eyebrow);
	color: var(--nova-purple);
	display: inline-block;
	margin-bottom: var(--nova-space-4);
}

blockquote {
	margin: var(--nova-space-6) 0;
	padding-left: var(--nova-space-5);
	border-left: 2px solid var(--nova-purple);
	font-family: var(--nova-serif);
	font-size: 1.35rem;
	color: var(--nova-ink);
	font-style: italic;
	line-height: 1.4;
}

code, kbd, pre, samp { font-family: var(--nova-mono); font-size: 0.9em; }
code {
	background: var(--nova-canvas-3);
	padding: 0.15em 0.4em;
	border-radius: var(--nova-radius-xs);
	color: var(--nova-purple-deep);
}
pre {
	background: var(--nova-canvas-3);
	padding: var(--nova-space-5);
	border-radius: var(--nova-radius-sm);
	overflow-x: auto;
}
pre code { background: none; padding: 0; color: inherit; }

hr {
	border: 0;
	height: 1px;
	background: var(--nova-line);
	margin: var(--nova-space-7) 0;
}

/* ---------- Layout primitives ---------- */
.nova-container {
	width: 100%;
	max-width: var(--nova-container);
	margin: 0 auto;
	padding-left: var(--nova-gutter);
	padding-right: var(--nova-gutter);
}
.nova-container--narrow { max-width: var(--nova-container-narrow); }

.nova-section {
	padding-top: var(--nova-space-9);
	padding-bottom: var(--nova-space-9);
}
.nova-section--tight {
	padding-top: var(--nova-space-7);
	padding-bottom: var(--nova-space-7);
}
.nova-section--tint { background: var(--nova-purple-tint); }
.nova-section--soft { background: var(--nova-canvas-2); }
.nova-section--ink  { background: var(--nova-ink); color: #E9E7F0; }
.nova-section--ink h1, .nova-section--ink h2, .nova-section--ink h3 { color: #FFFFFF; }

.nova-grid { display: grid; gap: var(--nova-space-6); }
.nova-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.nova-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.nova-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

@media (max-width: 900px) {
	.nova-grid--3, .nova-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
	.nova-grid--2, .nova-grid--3, .nova-grid--4 { grid-template-columns: 1fr; }
}

/* ---------- Forms (base) ---------- */
input[type="text"], input[type="email"], input[type="tel"], input[type="password"],
input[type="search"], input[type="number"], input[type="url"], textarea, select {
	width: 100%;
	font-family: var(--nova-sans);
	font-size: 1rem;
	color: var(--nova-ink);
	background: var(--nova-canvas);
	border: 1px solid var(--nova-line-strong);
	border-radius: var(--nova-radius-sm);
	padding: 0.85rem 1rem;
	transition: border-color var(--nova-fast) var(--nova-ease), box-shadow var(--nova-fast) var(--nova-ease);
}
input:focus, textarea:focus, select:focus {
	outline: none;
	border-color: var(--nova-purple);
	box-shadow: 0 0 0 4px rgba(107, 78, 255, 0.12);
}
::placeholder { color: var(--nova-ink-4); }

label {
	display: block;
	font-size: var(--nova-fs-small);
	font-weight: 500;
	color: var(--nova-ink);
	margin-bottom: var(--nova-space-2);
}

/* ---------- Utility ---------- */
.screen-reader-text {
	position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.nova-text-center { text-align: center; }
.nova-mt-0 { margin-top: 0; }

/* ---------- Motion (respect reduced-motion) ---------- */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}
