/**
 * MilitarySci — Base Layer v5.0
 * Reset, document typography, atmosphere, shared primitives.
 * Consumes --ms-* tokens only.
 *//* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html {
	-webkit-text-size-adjust: 100%;
	tab-size: 4;
	scroll-behavior: smooth;
}
body {
	font-family: var(--ms-font-body);
	font-size: var(--ms-fs-body);
	line-height: var(--ms-lh-body);
	color: var(--ms-color-text);
	background-color: var(--ms-color-bg);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	min-block-size: 100vh;
	overflow-x: clip;
}
img, picture, svg, video, canvas { display: block; max-inline-size: 100%; color: var(--ms-color-text-secondary); }
input, button, textarea, select { font: inherit; color: inherit; }
p, h1, h2, h3, h4, h5, h6 { overflow-wrap: break-word; color: var(--ms-color-text); }
ul[role="list"], ol[role="list"] { list-style: none; padding: 0; }
button { cursor: pointer; background: none; border: none; }
a { color: inherit; text-decoration: none; }
hr { border: 0; border-block-start: 1px solid var(--ms-color-hairline); }
:target { scroll-margin-block-start: calc(var(--ms-header-h) + var(--ms-subnav-h) + 12px); }
/* Arabic optical scale */
html[lang^="ar"] body { font-size: calc(var(--ms-fs-body) * var(--ms-ar-scale)); }
/* ---------- Focus / selection ---------- */
:focus { outline: none; }
:focus-visible {
	outline: none;
	box-shadow: var(--ms-focus-ring);
	border-radius: var(--ms-radius-sm);
}
::selection {
	background: var(--ms-color-accent-soft);
	color: var(--ms-color-text);
}
/* ---------- Scrollbars (WebKit + thin Firefox) ---------- */
* { scrollbar-width: thin; scrollbar-color: var(--ms-color-neutral-2) transparent; }
::-webkit-scrollbar { inline-size: 10px; block-size: 10px; }
::-webkit-scrollbar-thumb {
	background: var(--ms-color-neutral-2);
	border-radius: var(--ms-radius-pill);
	border: 2px solid transparent;
	background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover { background-color: var(--ms-color-neutral-3); background-clip: content-box; }
::-webkit-scrollbar-track { background: transparent; }
/* ---------- Data mono ---------- */
[data-mono], .msi-mono {
	font-family: var(--ms-font-mono);
	font-size: .88em;
	font-feature-settings: "zero" 1, "tnum" 1;
	direction: ltr;
	unicode-bidi: embed;
	letter-spacing: -.01em;
}
/* Numeric precision everywhere data appears */
table[data-mono] td, .msi-stat__value, .msi-fact__value {
	font-variant-numeric: tabular-nums;
}
/* ============================================================
   ATMOSPHERE — the "Dark Galaxy Intelligence" ambience.
   Applied sparingly: page shells, heroes, command surfaces.
   Never decorative noise on content blocks.
   ============================================================ *//* Deep-space page canvas: subtle vertical strata + horizon glow */
.ms-atmo {
	position: relative;
}
.ms-atmo::before {
	content: "";
	position: absolute;
	inset-inline: 0;
	inset-block-start: 0;
	block-size: 520px;
	pointer-events: none;
	background:
		var(--ms-atmo-vignette),
		linear-gradient(to bottom, rgba(0,0,0,.22), transparent 60%);
	z-index: -1;
}
[data-theme="light"] .ms-atmo::before {
	background:
		var(--ms-atmo-vignette),
		linear-gradient(to bottom, rgba(20,24,32,.04), transparent 55%);
}
/* Engineering grid — for hero/empty/landing surfaces only */
.ms-grid-bg {
	background-image:
		linear-gradient(var(--ms-atmo-grid) 1px, transparent 1px),
		linear-gradient(90deg, var(--ms-atmo-grid) 1px, transparent 1px);
	background-size: 44px 44px;
	mask-image: radial-gradient(85% 90% at 50% 20%, #000 40%, transparent 100%);
}
/* Radar sweep — one per screen max, heroes/palette only */
@keyframes ms-sweep {
	from { transform: rotate(0turn); }
	to   { transform: rotate(1turn); }
}
.ms-radar {
	position: relative;
	overflow: hidden;
	border-radius: 50%;
	background:
		radial-gradient(circle, transparent 34%, var(--ms-atmo-cobalt) 35%, transparent 36%),
		radial-gradient(circle, transparent 64%, var(--ms-atmo-cobalt) 65%, transparent 66%),
		radial-gradient(circle, transparent 84%, var(--ms-atmo-cobalt) 85%, transparent 86%),
		radial-gradient(circle, var(--ms-color-surface) 0%, transparent 70%);
	border: 1px solid var(--ms-color-border);
}
.ms-radar::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 50%;
	background: conic-gradient(from 0deg, var(--ms-atmo-sweep), transparent 26%);
	animation: ms-sweep 7s linear infinite;
}
.ms-radar::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(var(--ms-color-text-quaternary) 1px, transparent 1px) 50% 50% / 100% 1px no-repeat,
		linear-gradient(90deg, var(--ms-color-text-quaternary) 1px, transparent 1px) 50% 50% / 1px 100% no-repeat;
	opacity: .35;
}
/* Scanning line — for status strips and loading panels */
@keyframes ms-scan {
	0%   { transform: translateX(-110%); opacity: 0; }
	12%  { opacity: 1; }
	88%  { opacity: 1; }
	100% { transform: translateX(110%); opacity: 0; }
}
.ms-scanline {
	position: relative;
	overflow: hidden;
}
.ms-scanline::after {
	content: "";
	position: absolute;
	inset-block: 0;
	inline-size: 34%;
	background: linear-gradient(90deg, transparent, var(--ms-atmo-glow), transparent);
	animation: ms-scan 3.2s var(--ms-ease-in-out) infinite;
	pointer-events: none;
}
/* Crosshair corners — precision framing for hero/featured blocks */
.ms-crosshairs { position: relative; }
.ms-crosshairs::before,
.ms-crosshairs::after {
	content: "";
	position: absolute;
	inline-size: 14px;
	block-size: 14px;
	pointer-events: none;
	opacity: .55;
}
.ms-crosshairs::before {
	inset-block-start: -1px;
	inset-inline-start: -1px;
	border-block-start: 1.5px solid var(--ms-color-accent);
	border-inline-start: 1.5px solid var(--ms-color-accent);
}
.ms-crosshairs::after {
	inset-block-end: -1px;
	inset-inline-end: -1px;
	border-block-end: 1.5px solid var(--ms-color-accent);
	border-inline-end: 1.5px solid var(--ms-color-accent);
}
/* Coordinates chip — technical metadata flavor */
.ms-coords {
	font-family: var(--ms-font-mono);
	font-size: var(--ms-fs-micro);
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--ms-color-text-tertiary);
	direction: ltr;
	unicode-bidi: embed;
}
/* Status dot — live signal indicator */
@keyframes ms-pulse {
	0%   { box-shadow: 0 0 0 0 var(--ms-color-accent-soft); }
	70%  { box-shadow: 0 0 0 6px transparent; }
	100% { box-shadow: 0 0 0 0 transparent; }
}
.ms-live-dot {
	display: inline-block;
	inline-size: 7px;
	block-size: 7px;
	border-radius: 50%;
	background: var(--ms-color-accent);
	animation: ms-pulse 2.4s var(--ms-ease-out) infinite;
}
/* ---------- Screens-reader only ---------- */
.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	block-size: 1px;
	inline-size: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	white-space: nowrap;
}
.skip-link {
	position: absolute;
	inset-block-start: -48px;
	inset-inline-start: 8px;
	z-index: 999;
	padding: 8px 14px;
	background: var(--ms-color-accent);
	color: var(--ms-color-text-on-accent);
	border-radius: var(--ms-radius-sm);
	font-weight: 600;
	transition: inset-block-start var(--ms-dur-base) var(--ms-ease-out);
}
.skip-link:focus { inset-block-start: 8px; }
/* ---------- App surface (dashboards) ---------- */
body.msi-app-surface {
	background:
		linear-gradient(var(--ms-color-bg-secondary), var(--ms-color-bg)) fixed;
}
