/* NE Design System — base.css — Phase 1 (#65) */
/* Reset, body defaults, typography, links, selection */

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

/* === Body === */
body {
	background-color: var(--ne-bg);
	color: var(--ne-text);
	font-family: var(--ne-font-body);
	font-size: 1rem;
	font-weight: 400;
	letter-spacing: -0.1px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

/* === Typography === */
h1, .ne-h1 {
	font-family: var(--ne-font-display);
	font-size: 2.5rem;
	font-weight: 400;
	letter-spacing: -1.5px;
	line-height: 1.15;
	color: var(--ne-text);
}

h2, .ne-h2 {
	font-family: var(--ne-font-display);
	font-size: 1.8rem;
	font-weight: 400;
	letter-spacing: -1px;
	line-height: 1.2;
	color: var(--ne-text);
}

h3, .ne-h3 {
	font-family: var(--ne-font-body);
	font-size: 1.3rem;
	font-weight: 500;
	letter-spacing: -0.2px;
	line-height: 1.3;
	color: var(--ne-text);
}

h4, .ne-h4 {
	font-family: var(--ne-font-body);
	font-size: 1.1rem;
	font-weight: 500;
	letter-spacing: -0.1px;
	line-height: 1.4;
	color: var(--ne-text);
}

h5, h6 {
	font-family: var(--ne-font-body);
	font-weight: 500;
	color: var(--ne-text);
}

p {
	margin: 0 0 var(--ne-space-4);
	color: var(--ne-text);
}

/* === Body light variant === */
.ne-text-light {
	font-weight: 300;
}

/* === Data / Mono text === */
.ne-mono {
	font-family: var(--ne-font-mono);
	font-size: 0.85rem;
	font-weight: 400;
	letter-spacing: 0;
}

/* === Section label === */
.ne-section-label {
	font-family: var(--ne-font-mono);
	font-size: 0.7rem;
	font-weight: 500;
	letter-spacing: 0.8px;
	text-transform: uppercase;
	color: var(--ne-text-subtle);
	display: flex;
	align-items: center;
	gap: var(--ne-space-3);
}

.ne-section-label::after {
	content: '';
	flex: 1;
	height: 1px;
	background: var(--ne-border);
}

/* === Links === */
a {
	color: var(--ne-accent);
	text-decoration: none;
	transition: color var(--ne-duration) var(--ne-ease);
}

a:hover {
	color: var(--ne-accent-soft);
}

/* === Selection === */
::selection {
	background: var(--ne-accent-glow);
	color: var(--ne-text);
}

/* === Images === */
img {
	max-width: 100%;
	height: auto;
}

/* === Focus visible === */
:focus-visible {
	outline: 2px solid var(--ne-accent);
	outline-offset: 2px;
}

/* === Scrollbar (Webkit) === */
::-webkit-scrollbar {
	width: 6px;
}

::-webkit-scrollbar-track {
	background: var(--ne-bg);
}

::-webkit-scrollbar-thumb {
	background: var(--ne-border-s);
	border-radius: var(--ne-radius-pill);
}

::-webkit-scrollbar-thumb:hover {
	background: var(--ne-text-muted);
}

/* === Animations === */
@keyframes ne-fade-in {
	from {
		opacity: 0;
		transform: translateY(14px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes ne-pulse {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.3; }
}

.ne-animate-in {
	animation: ne-fade-in 0.6s var(--ne-ease) both;
}

.ne-animate-in-delay-1 { animation-delay: 50ms; }
.ne-animate-in-delay-2 { animation-delay: 100ms; }
.ne-animate-in-delay-3 { animation-delay: 150ms; }
.ne-animate-in-delay-4 { animation-delay: 200ms; }
.ne-animate-in-delay-5 { animation-delay: 250ms; }
.ne-animate-in-delay-6 { animation-delay: 300ms; }

.ne-pulse {
	animation: ne-pulse 2s ease-in-out infinite;
}
