/**
 * ANPI Labor — anpi.css (the ONE stylesheet; the LRR §6 basis)
 *
 * S8 update (the decision-record D5/D6/D7 rows): the gold primitive scale,
 * the single-tier elevation, motion tokens, the radius scale, the two
 * contrast fixes (focus-ring-on-band, text-faint), the density corrections
 * (per-component, not a global multiplier), the masthead + scroll-scrub,
 * the ARIA tabs, the article cards, and the richer footer.
 *
 * S12 update (the IA D1–D8 + the visual spec): the phone attention
 * treatment (§1 tokens, §15 block), the always-visible compact-bar phone
 * + the masthead phone slot (§5/§6), the hero positioning stack + slogan
 * + trust strip + call chip (§7), the four-domain grid + official card
 * (§8h/§8i), the biography (§9b) replacing the retired .anpi-expert, the
 * contact-scoped heading step-up, the responsive additions (§13), and the
 * body-size refinement (1rem → 1.0625rem). The §7b video band is deleted.
 *
 * Token contract: every color references the :root block — no raw hex
 * outside it. Direction contract: logical properties ONLY; the fa_IR
 * locale drives dir="rtl" natively. Elevation: hairline + surface change
 * + the single-tier shadow tokens, never multi-tier (§2.4).
 */

/* ══ 1 · Design tokens ══ */
:root {
	/* surfaces */
	--anpi-color-bg-page: #F7F8FA;
	--anpi-color-surface: #FFFFFF;
	--anpi-color-surface-alt: #F0F2F5;
	/* ink */
	--anpi-color-ink: #17202B;
	--anpi-color-text: #26313E;
	--anpi-color-text-muted: #5F6F80;
	--anpi-color-text-faint: #66758A; /* S8: was #8494A6 — a 3.1:1 AA FAIL at 0.875rem; 4.7:1 now */
	/* brand (navy — derived from the supplied emblem, intake S2) */
	--anpi-color-primary: #102A47;
	--anpi-color-primary-hover: #173A5F;
	--anpi-color-primary-active: #1F4A73;
	--anpi-color-on-primary: #FFFFFF;
	--anpi-color-band: #0A1B33;
	--anpi-color-on-band: #FFFFFF;
	--anpi-color-link: #2B5E8C;
	/* the gold primitive scale (S8 D5; institutional warm, not brassy) */
	--anpi-gold-100: #F7F0E0;
	--anpi-gold-200: #EBDCB9;
	--anpi-gold-300: #D8BE86;
	--anpi-gold-400: #C29A52;
	--anpi-gold-500: #A9803C;
	--anpi-gold-600: #8A6528;
	--anpi-gold-700: #6B4C1C;
	/* semantic aliases (backward compatible) */
	--anpi-color-accent: var(--anpi-gold-500);
	--anpi-color-accent-deep: var(--anpi-gold-600);
	/* structure */
	--anpi-color-hairline: #C7D0DA;
	--anpi-color-inset: #E2E7ED;
	/* form states */
	--anpi-color-success: #1B7A43;
	--anpi-color-warning-text: #8A5A00;
	--anpi-color-danger: #B3261E;
	/* focus */
	--anpi-color-focus-ring: #1F4A73;
	--anpi-color-focus-ring-onband: var(--anpi-gold-300); /* S8: the 1.9:1 on-band FAIL fix */
	/* the dark-band family */
	--anpi-color-band-text: #C9D4E3;
	--anpi-color-band-faint: #8FA1B8;
	--anpi-color-band-btn-hover: #E8EDF4;
	--anpi-band-hairline: 1px solid rgba(255, 255, 255, 0.14);
	/* elevation (single tier; hairline stays dominant) */
	--anpi-shadow-1: 0 1px 2px rgba(10, 27, 51, 0.08);
	--anpi-shadow-2: 0 6px 16px rgba(10, 27, 51, 0.12);
	/* motion */
	--anpi-ease: cubic-bezier(0.4, 0, 0.2, 1);
	--anpi-dur-1: 160ms;
	--anpi-dur-2: 240ms;
	/* typography */
	--anpi-font: "Vazirmatn", "Tahoma", sans-serif;
	--anpi-size-h1: clamp(1.75rem, 1.2rem + 2.2vw, 3.25rem);
	--anpi-size-h2: 1.75rem;
	--anpi-size-h3: 1.25rem;
	--anpi-size-lead: 1.125rem;
	--anpi-size-body: 1.0625rem; /* S12 (D8): 1rem → 1.0625rem — the body refinement */
	--anpi-size-small: 0.875rem;
	/* rhythm (S8 density: 96px → 72px sections; per-component table in D7) */
	--anpi-space-1: 0.25rem;
	--anpi-space-2: 0.5rem;
	--anpi-space-3: 0.75rem;
	--anpi-space-4: 1rem;
	--anpi-space-5: 1.5rem;
	--anpi-space-6: 2rem;
	--anpi-space-8: 3rem;
	--anpi-space-12: 4rem;
	--anpi-section-pad: 4.5rem;
	--anpi-container: 1120px;
	--anpi-header-h: 4.5rem;
	/* structure (S8 radius scale) */
	--anpi-radius-sm: 0.375rem;
	--anpi-radius: 0.5rem;
	--anpi-radius-lg: 0.75rem;
	--anpi-hairline: 1px solid var(--anpi-color-hairline);
	/* form fields: the boundary must clear 3:1 (A11Y-S8-4) — the hairline is
	 * 1.56:1 on the white card, below the non-text minimum */
	--anpi-color-field-border: #6F7F90;
	/* buttons */
	--anpi-btn-h: 3rem;
	/* ── S9: the textured dark-surface family (masthead + footer) ──
	 * the texture artwork always sits under a SOLID navy tint layer —
	 * the tint, not a gradient, guarantees the contrast floor (the design
	 * spec §2: white on the tinted worst-patch ≈ 11.7:1) */
	--anpi-tex-overlay: rgba(10, 27, 51, 0.8);
	--anpi-tex-hairline: 1px solid rgba(216, 190, 134, 0.4);
	/* alias: band-faint is BANNED as text on textured surfaces (4.4:1 on
	 * the worst patch) — textured text rides band-text (7.8:1) */
	--anpi-tex-muted: var(--anpi-color-band-text);
	/* ── S9: the on-brand (white/gold) control — the directive §10 ── */
	--anpi-btn-onbrand-bg: var(--anpi-color-surface);
	--anpi-btn-onbrand-bg-hover: var(--anpi-gold-100);
	--anpi-btn-onbrand-bg-active: var(--anpi-gold-200);
	--anpi-btn-onbrand-text: var(--anpi-color-primary);
	--anpi-btn-onbrand-border: var(--anpi-gold-400);
	--anpi-btn-onbrand-shadow: 0 4px 12px rgba(194, 154, 82, 0.3);
	/* ── S9: geometry ── */
	--anpi-masthead-logo: 96px;
	--anpi-footer-logo: 80px;
	--anpi-radius-tile: 1.25rem;
	--anpi-chip-size: 44px;
	--anpi-channel-icon: 44px;
	/* the morph runway — anpi.js SCROLL_RANGE binds to this value */
	--anpi-scroll-range: 160px;
	/* ── S12: the phone attention treatment (brief §4; paint-only pulse) ── */
	--anpi-phone-glow: rgba(169, 128, 60, 0.35);      /* gold-500 halo — light surfaces */
	--anpi-phone-glow-band: rgba(216, 190, 134, 0.4); /* gold-300 halo — textured band */
	--anpi-phone-cycle: 2.4s;
}

/* ══ 2 · Reset / base ══ */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	font-family: var(--anpi-font);
	font-size: var(--anpi-size-body);
	line-height: 1.8;
	color: var(--anpi-color-text);
	background: var(--anpi-color-bg-page);
	-webkit-font-smoothing: antialiased;
}
img, svg, video { display: block; max-width: 100%; height: auto; }
input, button, textarea, select { font: inherit; color: inherit; }
h1, h2, h3, h4 { overflow-wrap: break-word; color: var(--anpi-color-ink); line-height: 1.4; }
p { overflow-wrap: break-word; }
a { color: var(--anpi-color-link); text-decoration: none; }
a:hover { text-decoration: underline; }
ul[class], ol[class] { padding: 0; margin: 0; list-style: none; }
:focus-visible { outline: 3px solid var(--anpi-color-focus-ring); outline-offset: 2px; border-radius: 2px; }
.anpi-masthead :focus-visible,
.anpi-footer :focus-visible,
.anpi-cta-band :focus-visible { outline-color: var(--anpi-color-focus-ring-onband); }

/* bidi helpers (the i18n §5 isolation; all text carriers scoped) */
bdi, .anpi-ltr { unicode-bidi: isolate; }
[dir="ltr"] { unicode-bidi: isolate; }
/* the WP-convention visually-hidden utility (the post-card more-link's
 * per-title announcement; visually identical to the skip-link's rest state) */
.screen-reader-text {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	clip-path: inset(50%);
}
.anpi-channels__handle {
	unicode-bidi: plaintext;
	font-family: inherit;
	font-size: var(--anpi-size-small);
	background: var(--anpi-color-surface-alt);
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius-sm);
	padding: 0.1rem 0.5rem;
}
.anpi-icon { flex: none; }

/* skip link */
.anpi-skip-link {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	clip-path: inset(50%);
}
.anpi-skip-link:focus {
	position: fixed;
	inset-block-start: 0.5rem;
	inset-inline-start: 0.5rem;
	z-index: 100;
	inline-size: auto;
	block-size: auto;
	clip-path: none;
	background: var(--anpi-color-surface);
	color: var(--anpi-color-primary);
	padding: 0.5rem 1rem;
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
}

/* ══ 3 · Layout primitives ══ */
.anpi-container { max-width: var(--anpi-container); margin-inline: auto; padding-inline: var(--anpi-space-4); }
.anpi-main { min-height: 60vh; }
.anpi-section { padding-block: var(--anpi-section-pad); }
.anpi-section--alt { background: var(--anpi-color-surface); border-block: var(--anpi-hairline); }
.anpi-section__title { font-size: var(--anpi-size-h2); font-weight: 700; margin-block-end: var(--anpi-space-4); }
.anpi-section__title::after {
	content: "";
	display: block;
	inline-size: 2.25rem;
	block-size: 2px;
	background: var(--anpi-gold-400);
	margin-block-start: var(--anpi-space-2);
}
.anpi-section__intro { color: var(--anpi-color-text-muted); max-inline-size: 60ch; margin-block-end: var(--anpi-space-4); }
.anpi-section__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--anpi-space-4); }
.anpi-section__head-link { font-size: var(--anpi-size-small); font-weight: 500; white-space: nowrap; }

/* ══ 4 · Buttons (the 3 tiers + the gold keel; the D6 matrix) ══ */
.anpi-btn {
	display: inline-block;
	padding: 0.5rem 1.5rem;
	min-block-size: var(--anpi-btn-h);
	border-radius: var(--anpi-radius);
	font-weight: 500;
	line-height: 1.6;
	border: 1px solid transparent;
	cursor: pointer;
	text-align: center;
	transition: background var(--anpi-dur-1) var(--anpi-ease), border-color var(--anpi-dur-1) var(--anpi-ease), box-shadow var(--anpi-dur-1) var(--anpi-ease), color var(--anpi-dur-1) var(--anpi-ease), translate var(--anpi-dur-1) var(--anpi-ease);
}
.anpi-btn:hover { text-decoration: none; }
.anpi-btn--primary {
	background: var(--anpi-color-primary);
	color: var(--anpi-color-on-primary);
	border-color: var(--anpi-color-primary);
	box-shadow: var(--anpi-shadow-1), inset 0 -2px 0 var(--anpi-gold-400);
}
.anpi-btn--primary:hover {
	background: var(--anpi-color-primary-hover);
	box-shadow: var(--anpi-shadow-2), inset 0 -2px 0 var(--anpi-gold-500);
	translate: 0 -1px;
}
.anpi-btn--primary:active { background: var(--anpi-color-primary-active); translate: 0 0; box-shadow: var(--anpi-shadow-1); }
.anpi-btn--secondary { background: var(--anpi-color-surface); color: var(--anpi-color-primary); border-color: var(--anpi-color-hairline); box-shadow: var(--anpi-shadow-1); }
.anpi-btn--secondary:hover { border-color: var(--anpi-color-primary); background: var(--anpi-color-surface-alt); text-decoration: none; translate: 0 -1px; box-shadow: var(--anpi-shadow-2); }
.anpi-btn--secondary:active { background: var(--anpi-color-inset); translate: 0 0; box-shadow: var(--anpi-shadow-1); }
.anpi-btn--ghost { background: transparent; color: var(--anpi-color-primary); }
.anpi-btn--ghost:hover { color: var(--anpi-color-primary-hover); text-decoration: none; }
/* S9: the on-brand control (white surface + gold border/shadow + navy text)
 * — the directive §10 treatment for the expanded tier's nav controls */
.anpi-btn--onbrand {
	background: var(--anpi-btn-onbrand-bg);
	color: var(--anpi-btn-onbrand-text);
	border: 1px solid var(--anpi-btn-onbrand-border);
	box-shadow: var(--anpi-btn-onbrand-shadow), var(--anpi-shadow-1);
}
.anpi-btn--onbrand:hover {
	background: var(--anpi-btn-onbrand-bg-hover);
	border-color: var(--anpi-gold-500);
	translate: 0 -1px;
	text-decoration: none;
	box-shadow: var(--anpi-btn-onbrand-shadow), var(--anpi-shadow-2);
}
.anpi-btn--onbrand:active { background: var(--anpi-btn-onbrand-bg-active); translate: 0 0; box-shadow: var(--anpi-shadow-1); }
.anpi-btn--sm { padding: 0.35rem 1rem; font-size: var(--anpi-size-small); min-block-size: 2.5rem; }
.anpi-btn--lg { padding: 0.75rem 2rem; font-size: 1.0625rem; min-block-size: 3.25rem; }
.anpi-btn:disabled { background: var(--anpi-color-inset); color: var(--anpi-color-text-faint); box-shadow: none; cursor: not-allowed; }

/* ══ 5 · The masthead (S9: the EXPANDED state — dark textured tier) ══
 * The texture artwork sits under a solid navy tint (--anpi-tex-overlay):
 * a tint layer, never a decorative gradient, holds the contrast floor.
 * The tier carries the gold tile + lockup, the concise expert intro (the
 * directive §8: trust content instead of a CTA) and the nav pills (§10).
 * It stays in flow and scrolls away naturally; the scrub (timeline or the
 * rAF var) fades/scales its content — height is never interpolated (the
 * per-frame layout cost rule). */
.anpi-masthead {
	background-color: var(--anpi-color-band);
	background-image: linear-gradient(var(--anpi-tex-overlay), var(--anpi-tex-overlay)), url("../img/texture-navy.webp");
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	padding-block: var(--anpi-space-6) var(--anpi-space-5);
	border-block-end: 2px solid var(--anpi-gold-500);
	color: var(--anpi-color-on-band);
}
.anpi-masthead__inner,
.anpi-masthead__navrow {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--anpi-space-8);
	/* the scroll-scrub FALLBACK surface (anpi.js writes the progress on the
	 * root element; opacity/transform only — zero layout work per frame) */
	opacity: calc(1 - var(--anpi-scroll-progress, 0));
	transform: translateY(calc(var(--anpi-scroll-progress, 0) * -12px));
	will-change: opacity, transform;
}
.anpi-masthead__navrow {
	display: none; /* overridden by the crossfade states below (§ 5b) */
	padding-block-start: var(--anpi-space-4);
}
@supports (animation-timeline: scroll()) {
	.anpi-masthead__inner,
	.anpi-masthead__navrow {
		animation: anpi-masthead-scrub linear both;
		animation-timeline: scroll(root);
		animation-range: 0 var(--anpi-scroll-range);
		will-change: auto;
	}
	@keyframes anpi-masthead-scrub {
		/* OPP-S9-2: the visibility flip is an explicit HIDDEN step at 85% —
		 * `visibility: visible` at an intermediate keyframe is a no-op
		 * (visibility interpolates discretely toward the endpoint), so the
		 * faded tier's links stayed focusable at imperceptible opacity.
		 * From 85% the content stops painting; the fade to zero completes
		 * invisibly. */
		0% { opacity: 1; transform: translateY(0); visibility: visible; }
		85% { visibility: hidden; }
		100% { opacity: 0; transform: translateY(-12px); visibility: hidden; }
	}
}
.anpi-brand--masthead { display: inline-flex; align-items: center; gap: var(--anpi-space-4); }
.anpi-brand--masthead:hover { text-decoration: none; }
/* the (0,2) specificity is deliberate: the §6 compact-bar base rules are
 * later in the file and would otherwise flatten the tile + lockup */
.anpi-brand--masthead .anpi-brand__logo--tile {
	inline-size: var(--anpi-masthead-logo);
	block-size: var(--anpi-masthead-logo);
	border-radius: var(--anpi-radius-tile);
	border: var(--anpi-tex-hairline);
	box-shadow: var(--anpi-shadow-1);
}
.anpi-brand__stack { display: grid; gap: 0.125rem; }
.anpi-brand--masthead .anpi-brand__name--lg { font-weight: 700; font-size: 1.375rem; color: var(--anpi-color-on-band); }
.anpi-brand--masthead .anpi-brand__tagline { font-size: 0.8125rem; color: var(--anpi-tex-muted); }
.home .anpi-brand__tagline { display: none; }
.anpi-masthead__expert {
	display: grid;
	gap: 0.125rem;
	justify-items: start;
	text-align: start;
	max-inline-size: 40ch;
}
.anpi-masthead__expert-label {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	color: var(--anpi-gold-300);
	font-size: 0.75rem;
	font-weight: 600;
}
.anpi-masthead__expert-name { font-size: 0.9375rem; font-weight: 700; color: var(--anpi-color-on-band); }
.anpi-masthead__expert-title { font-size: 0.8125rem; color: var(--anpi-tex-muted); max-inline-size: 34ch; }
.anpi-masthead__expert-exp { font-size: 0.8125rem; font-weight: 500; color: var(--anpi-gold-200); }
/* S12 (V3): the masthead phone — the third child of .anpi-masthead__inner
 * (brand → expert → phone; the expert centers via the row's space-between).
 * The band token override retargets the §15 halo to the textured-surface
 * glow; `position: relative` hosts it. Hidden ≤1023 via §13. */
.anpi-masthead__phone {
	--anpi-phone-glow: var(--anpi-phone-glow-band);
	display: inline-flex;
	align-items: center;
	gap: var(--anpi-space-2);
	min-block-size: 44px;
	padding: 0 var(--anpi-space-4);
	border: 1px solid var(--anpi-gold-500);
	border-radius: var(--anpi-radius);
	color: var(--anpi-gold-200);
	font-size: 1.125rem;
	font-weight: 700;
	line-height: 1;
	white-space: nowrap;
	text-decoration: none;
	position: relative;
}
.anpi-masthead__phone .anpi-icon { color: var(--anpi-gold-300); }
.anpi-masthead__phone:hover {
	color: var(--anpi-gold-100);
	border-color: var(--anpi-gold-300);
	text-decoration: none;
}

/* the expanded tier's nav pills (the directive §10 white/gold treatment).
 * Hidden by default — the no-JS / reduced-motion / mobile presentation is
 * the S8 header (compact nav always visible); the pills appear only when a
 * scrub driver owns the crossfade. The row shares the tier's scrub fade. */
.anpi-scrub-ready .anpi-masthead__navrow { display: flex; }
.anpi-menu--masthead { display: flex; gap: var(--anpi-space-3); flex-wrap: wrap; }
.anpi-menu--masthead a {
	display: inline-block;
	padding: 0.375rem 1.125rem;
	min-block-size: 2.75rem;
	border: 1px solid var(--anpi-btn-onbrand-border);
	border-radius: var(--anpi-radius);
	background: var(--anpi-btn-onbrand-bg);
	color: var(--anpi-btn-onbrand-text);
	font-size: var(--anpi-size-small);
	font-weight: 600;
	box-shadow: var(--anpi-btn-onbrand-shadow);
	transition: background var(--anpi-dur-1) var(--anpi-ease), border-color var(--anpi-dur-1) var(--anpi-ease), translate var(--anpi-dur-1) var(--anpi-ease);
}
.anpi-menu--masthead a:hover {
	background: var(--anpi-btn-onbrand-bg-hover);
	border-color: var(--anpi-gold-500);
	translate: 0 -1px;
	text-decoration: none;
}
.anpi-menu--masthead a:active { background: var(--anpi-btn-onbrand-bg-active); translate: 0 0; }
.anpi-menu--masthead .current-menu-item > a { border-color: var(--anpi-gold-500); background: var(--anpi-btn-onbrand-bg-hover); }

/* the crossfade — fallback path: anpi.js adds anpi-scrub-ready when it owns
 * the scrub (non-reduced, ≥1024px, no timeline support) and anpi-scrolled
 * past the 45% threshold; the compact nav/name leave the tab order while
 * hidden (visibility, not opacity alone) */
@media (min-width: 1024px) {
	.anpi-scrub-ready:not(.anpi-scrolled) .anpi-header .anpi-nav,
	.anpi-scrub-ready:not(.anpi-scrolled) .anpi-header__brand .anpi-brand__name {
		opacity: 0;
		visibility: hidden;
	}
	.anpi-scrub-ready:not(.anpi-scrolled) .anpi-header .anpi-nav {
		transition: opacity var(--anpi-dur-2) var(--anpi-ease), visibility 0s;
	}
	.anpi-scrub-ready .anpi-header .anpi-nav,
	.anpi-scrub-ready .anpi-header__brand .anpi-brand__name {
		transition: opacity var(--anpi-dur-2) var(--anpi-ease), visibility 0s var(--anpi-dur-2);
	}
	/* the fully-faded masthead's links leave the tab order (the fallback
	 * twin of the timeline keyframes' visibility flip) */
	.anpi-scrub-ready.anpi-masthead-hidden .anpi-masthead__inner { visibility: hidden; }
	/* the timeline path: the same crossfade as scroll-driven keyframes */
	@media (prefers-reduced-motion: no-preference) {
		@supports (animation-timeline: scroll()) {
			.anpi-masthead__navrow { display: flex; }
			.anpi-header .anpi-nav,
			.anpi-header__brand .anpi-brand__name {
				animation: anpi-compact-reveal linear both;
				animation-timeline: scroll(root);
				animation-range: 0 calc(var(--anpi-scroll-range) * 0.7);
			}
			@keyframes anpi-compact-reveal {
				from { opacity: 0; visibility: hidden; }
				to { opacity: 1; visibility: visible; }
			}
		}
	}
}

/* ══ 6 · The compact header (the sticky tier — structure unchanged) ══ */
.anpi-header {
	position: sticky;
	inset-block-start: 0;
	z-index: 50;
	background: var(--anpi-color-surface);
	border-block-end: var(--anpi-hairline);
	min-block-size: var(--anpi-header-h);
	display: flex;
	align-items: center;
	box-shadow: var(--anpi-shadow-1);
}
.anpi-header__row { display: flex; align-items: center; justify-content: space-between; gap: var(--anpi-space-5); inline-size: 100%; }
.anpi-brand { display: inline-flex; align-items: center; gap: var(--anpi-space-3); }
.anpi-brand:hover { text-decoration: none; }
.anpi-brand__logo { inline-size: 44px; block-size: 44px; }
.anpi-brand__name { font-weight: 700; font-size: 1.0625rem; color: var(--anpi-color-primary); }
.anpi-nav { display: flex; }
.anpi-menu { display: flex; gap: var(--anpi-space-5); }
.anpi-menu a {
	position: relative;
	display: inline-flex;
	align-items: center;
	min-block-size: 44px; /* the 2.5.8/44px best-practice row (A11Y-S9-6) */
	color: var(--anpi-color-text);
	font-size: var(--anpi-size-small);
	font-weight: 500;
	padding-block: 0.5rem;
	white-space: nowrap;
}
.anpi-menu a::after {
	content: "";
	position: absolute;
	inset-inline: auto 0;
	inset-block-end: 0;
	inline-size: 0;
	block-size: 2px;
	background: var(--anpi-gold-500);
	transition: inline-size var(--anpi-dur-1) var(--anpi-ease);
}
.anpi-menu a:hover { color: var(--anpi-color-primary); text-decoration: none; }
.anpi-menu a:hover::after,
.anpi-menu a:focus-visible::after { inline-size: 100%; }
.anpi-menu .current-menu-item > a { color: var(--anpi-color-primary); font-weight: 600; }
.anpi-menu .current-menu-item > a::after { inline-size: 100%; }
.anpi-header__actions { display: flex; align-items: center; gap: var(--anpi-space-4); }
/* S12 (V2): the compact-bar phone is ALWAYS visible — icon + number from
 * the base rule (the former display:none base is retired); ≤1023 goes
 * icon-only via §13. `position: relative` hosts the §15 halo. */
.anpi-header__phone {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.375rem;
	min-inline-size: 44px;
	min-block-size: 44px;
	padding: 0 var(--anpi-space-3);
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
	color: var(--anpi-color-primary);
	background: var(--anpi-color-surface);
	position: relative;
}
.anpi-header__phone-num {
	font-size: 0.9375rem;
	font-weight: 700;
	line-height: 1;
	color: var(--anpi-gold-600);
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}
.anpi-header__phone:hover { border-color: var(--anpi-color-primary); text-decoration: none; }
.anpi-nav-toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 4px;
	inline-size: 44px;
	block-size: 44px;
	background: none;
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
	padding: 0.6rem;
	cursor: pointer;
}
.anpi-nav-toggle__bar { display: block; block-size: 2px; inline-size: 100%; background: var(--anpi-color-primary); }
.anpi-nav-drawer {
	display: none;
	background: var(--anpi-color-surface);
	border-block-end: var(--anpi-hairline);
	padding-block: var(--anpi-space-5);
}
.anpi-nav-drawer:not([hidden]) { display: block; }
.anpi-nav-drawer__expert {
	display: flex;
	align-items: baseline;
	gap: var(--anpi-space-2);
	padding-block-end: var(--anpi-space-3);
	margin-block-end: var(--anpi-space-3);
	border-block-end: var(--anpi-hairline);
}
.anpi-nav-drawer__expert-label { font-size: 0.75rem; font-weight: 600; color: var(--anpi-gold-600); }
.anpi-nav-drawer__expert-name { font-size: var(--anpi-size-small); font-weight: 700; color: var(--anpi-color-ink); }
.anpi-nav-drawer__nav { display: grid; gap: var(--anpi-space-4); }
.anpi-menu--drawer { flex-direction: column; gap: var(--anpi-space-2); }
.anpi-menu--drawer a { display: block; padding: 0.625rem 0; font-size: 1rem; } /* the OPP-S9-11 row: the S8 selector could never match (both classes sit on one ul) */
.anpi-menu--drawer a::after { content: none; }

/* ══ 7 · The home hero (two-column + the media card; D4; S9 polish) ══ */
.anpi-hero {
	background: var(--anpi-color-surface);
	border-block-end: var(--anpi-hairline);
	padding-block: var(--anpi-space-6) var(--anpi-section-pad);
}
.anpi-hero__inner {
	display: grid;
	grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
	gap: var(--anpi-space-8);
	align-items: center;
}
/* S12 (V4): the positioning stack replaces the retired eyebrow — two <p>
 * lines, never headings (the SEO finding 2); the ::before keeps the gold
 * keel pattern of the old eyebrow rule */
.anpi-hero__pos {
	display: grid;
	gap: 0.125rem;
	margin-block-end: var(--anpi-space-3);
}
.anpi-hero__pos-line1 {
	display: inline-flex;
	align-items: center;
	gap: var(--anpi-space-2);
	justify-self: start;
	color: var(--anpi-gold-600);
	font-size: var(--anpi-size-small);
	font-weight: 600;
}
.anpi-hero__pos-line1::before {
	content: "";
	inline-size: 1.25rem;
	block-size: 2px;
	background: var(--anpi-gold-400);
	flex: none;
}
.anpi-hero__pos-line2 {
	color: var(--anpi-color-text-faint);
	font-size: var(--anpi-size-small);
	font-weight: 400;
	padding-inline-start: calc(1.25rem + var(--anpi-space-2));
}
.anpi-hero__title {
	font-size: var(--anpi-size-h1);
	font-weight: 700;
	line-height: 1.3;
	max-inline-size: 22ch;
	margin-block-end: var(--anpi-space-3);
}
.anpi-hero__sub { font-size: var(--anpi-size-lead); color: var(--anpi-color-text-muted); max-inline-size: 52ch; margin-block-end: var(--anpi-space-5); }
.anpi-hero__cta { display: flex; gap: var(--anpi-space-4); flex-wrap: wrap; margin-block-end: var(--anpi-space-5); }
/* S12 (V4): the quiet slogan line — under the CTA row, muted, guillemets
 * verbatim, never italic */
.anpi-hero__slogan {
	color: var(--anpi-color-text-muted);
	font-size: 0.9375rem;
	margin-block-end: var(--anpi-space-4);
}
/* S12 (V4): the trust strip is ONE line — the four attributes are identity,
 * not a checklist (the bullets and check icons are retired) */
.anpi-hero__trust {
	padding-block-start: var(--anpi-space-4);
	border-block-start: var(--anpi-hairline);
	color: var(--anpi-color-text-muted);
	font-size: var(--anpi-size-small);
	font-weight: 500;
}
/* S12 (V4): the hero call chip — the third CTA-row control (the brief §4).
 * inline-flex hosts the icon + the number (the .anpi-sticky-cta__call
 * pattern — a block-level svg inside the inline-block .anpi-btn would
 * stack them); position: relative hosts the §15 halo. */
.anpi-hero__call {
	display: inline-flex;
	align-items: center;
	gap: var(--anpi-space-2);
	border-color: var(--anpi-gold-500);
	font-size: 1.0625rem;
	font-weight: 700;
	white-space: nowrap;
	position: relative;
}
.anpi-hero__call .anpi-icon { color: var(--anpi-gold-600); }
.anpi-hero__call:hover {
	border-color: var(--anpi-gold-600);
	background: var(--anpi-gold-100);
	text-decoration: none;
}
.anpi-hero__call:active { background: var(--anpi-gold-200); }
.anpi-hero__media { position: relative; }
.anpi-hero__media img {
	inline-size: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--anpi-radius-lg);
	border: var(--anpi-hairline);
	box-shadow: var(--anpi-shadow-1);
}
/* the editorial double-frame: an offset gold hairline behind the card */
.anpi-hero__media::before {
	content: "";
	position: absolute;
	inset-block-start: 8px;
	inset-block-end: -8px;
	inset-inline: 8px -8px;
	border: 1px solid var(--anpi-gold-400);
	border-radius: var(--anpi-radius-lg);
	z-index: -1;
}

/* ══ 8 · The geometry set ══ */

/* 8a · coverage chips (the folded specialization row) */
.anpi-coverage { display: flex; flex-wrap: wrap; gap: var(--anpi-space-2); margin-block-end: var(--anpi-space-5); }
.anpi-coverage__chip {
	background: var(--anpi-gold-100);
	color: var(--anpi-gold-700);
	border: 1px solid var(--anpi-gold-200);
	border-radius: var(--anpi-radius-sm);
	padding: 0.25rem 0.75rem;
	font-size: var(--anpi-size-small);
	font-weight: 500;
}

/* 8b · two-lane audience split (with the S8 context imagery) — S9: the
 * equal-height fix: the CTA anchors to the card bottom by STRUCTURE
 * (flex + margin-block-start:auto), never by arbitrary margins */
.anpi-two-lane { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 1fr; gap: var(--anpi-space-5); }
.anpi-lane {
	background: var(--anpi-color-bg-page);
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
	padding: var(--anpi-space-4);
	display: flex;
	flex-direction: column;
	gap: var(--anpi-space-4);
	transition: border-color var(--anpi-dur-1) var(--anpi-ease), box-shadow var(--anpi-dur-1) var(--anpi-ease);
}
.anpi-lane:hover, .anpi-lane:focus-within { border-color: var(--anpi-gold-300); box-shadow: var(--anpi-shadow-1); }
.anpi-lane__image {
	inline-size: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: var(--anpi-radius-sm);
	border: var(--anpi-hairline);
}
.anpi-lane__body { flex: 1; display: flex; flex-direction: column; gap: var(--anpi-space-3); align-content: start; justify-items: start; padding-inline: var(--anpi-space-2) var(--anpi-space-2) 0; }
.anpi-lane__body .anpi-btn { margin-block-start: auto; }
.anpi-lane__title { font-size: var(--anpi-size-h3); font-weight: 700; }
.anpi-lane__text { color: var(--anpi-color-text-muted); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.anpi-audience-trust {
	margin-block-start: var(--anpi-space-5);
	padding: var(--anpi-space-3) var(--anpi-space-4);
	background: var(--anpi-color-surface);
	border: var(--anpi-hairline);
	border-inline-start: 3px solid var(--anpi-gold-400);
	border-radius: var(--anpi-radius-sm);
	color: var(--anpi-color-text-muted);
	font-size: var(--anpi-size-small);
	display: flex;
	align-items: baseline;
	gap: var(--anpi-space-2);
	flex-wrap: wrap;
}
.anpi-audience-trust__label { color: var(--anpi-gold-600); font-weight: 600; }
.anpi-audience-trust__expert { color: var(--anpi-color-ink); font-weight: 700; }

/* 8c · grouped list-rail (the services) */
.anpi-groups { display: grid; gap: var(--anpi-space-5); }
.anpi-group { background: var(--anpi-color-surface); border: var(--anpi-hairline); border-radius: var(--anpi-radius); padding: var(--anpi-space-5) calc(var(--anpi-space-5) - 0.25rem); }
.anpi-group__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--anpi-space-4); margin-block-end: var(--anpi-space-3); }
.anpi-group__title { font-size: var(--anpi-size-h3); font-weight: 700; }
.anpi-group__title--lg { font-size: var(--anpi-size-h2); }
.anpi-group__link { font-size: var(--anpi-size-small); font-weight: 500; white-space: nowrap; }
.anpi-list { display: grid; gap: var(--anpi-space-3); }
.anpi-list li {
	display: flex;
	align-items: baseline;
	gap: var(--anpi-space-3);
	padding-inline-start: var(--anpi-space-4);
}
.anpi-list li::before {
	content: "";
	inline-size: 0.5em;
	block-size: 0.5em;
	border: 1px solid var(--anpi-gold-500);
	border-radius: 50%;
	flex: none;
	translate: 0 0.15em;
}
.anpi-list--dense li { padding-block: 0.3rem; border-block-end: 1px solid var(--anpi-color-inset); }
.anpi-list--dense { line-height: 1.7; }
.anpi-list--dense li:last-child { border-block-end: none; }
.anpi-list--check li::before {
	content: "✓";
	inline-size: auto;
	block-size: auto;
	border: none;
	color: var(--anpi-color-success);
	font-weight: 700;
	translate: 0 0;
}
.anpi-list--cols { grid-template-columns: 1fr 1fr; gap: var(--anpi-space-3) var(--anpi-space-6); }
.anpi-future {
	margin-block-start: var(--anpi-space-6);
	padding: var(--anpi-space-4) var(--anpi-space-5);
	background: var(--anpi-color-surface-alt);
	border-inline-start: 3px solid var(--anpi-gold-500);
	border-radius: var(--anpi-radius);
	color: var(--anpi-color-text-muted);
	font-size: var(--anpi-size-small);
	max-inline-size: 75ch;
}
.anpi-future__label { font-weight: 700; color: var(--anpi-gold-600); }

/* 8d · numbered steps */
.anpi-steps { display: grid; gap: var(--anpi-space-5); max-inline-size: 60ch; }
.anpi-steps--3 { grid-template-columns: repeat(3, 1fr); gap: var(--anpi-space-5); max-inline-size: none; }
.anpi-step { display: flex; gap: var(--anpi-space-4); align-items: flex-start; }
.anpi-step__num {
	flex: none;
	inline-size: 2.25rem;
	block-size: 2.25rem;
	display: grid;
	place-items: center;
	background: var(--anpi-color-primary);
	color: var(--anpi-color-on-primary);
	border-radius: 50%;
	font-weight: 700;
	font-size: var(--anpi-size-small);
	box-shadow: inset 0 0 0 2px var(--anpi-color-primary), inset 0 0 0 3px var(--anpi-gold-400);
}

/* 8e · the dark navy CTA band (the single inversion) */
.anpi-cta-band {
	background: var(--anpi-color-band);
	color: var(--anpi-color-on-band);
	padding-block: var(--anpi-section-pad);
	border-block-start: 2px solid var(--anpi-gold-500);
}
.anpi-cta-band__inner { display: flex; align-items: center; justify-content: space-between; gap: var(--anpi-space-8); flex-wrap: wrap; }
.anpi-cta-band__title { color: var(--anpi-color-on-band); font-size: var(--anpi-size-h2); font-weight: 700; margin-block-end: var(--anpi-space-2); }
.anpi-cta-band__text { color: var(--anpi-color-band-text); max-inline-size: 55ch; }
.anpi-cta-band .anpi-btn--primary { background: var(--anpi-color-on-band); color: var(--anpi-color-band); border-color: var(--anpi-color-on-band); flex: none; }
.anpi-cta-band .anpi-btn--primary:hover { background: var(--anpi-color-band-btn-hover); }

/* 8f · the ARIA tabs (the services pathways; D2) */
.anpi-tabs { margin-block-end: var(--anpi-space-8); }
.anpi-tabs__list {
	display: flex;
	gap: var(--anpi-space-2);
	border-block-end: var(--anpi-hairline);
}
.anpi-tabs__tab {
	position: relative;
	padding: 0.75rem 1.25rem;
	font-size: 1rem;
	font-weight: 600;
	color: var(--anpi-color-text-muted);
	white-space: nowrap;
	min-block-size: 44px;
	display: inline-flex;
	align-items: center;
}
.anpi-tabs__tab::after {
	content: "";
	position: absolute;
	inset-inline: 0;
	inset-block-end: -1px;
	block-size: 2px;
	background: transparent;
	transition: background var(--anpi-dur-1) var(--anpi-ease);
}
.anpi-tabs__tab:hover { color: var(--anpi-color-primary); text-decoration: none; }
.anpi-tabs__tab:hover::after { background: var(--anpi-gold-300); }
.anpi-tabs__tab--active { color: var(--anpi-gold-600); }
.anpi-tabs__tab--active::after { background: var(--anpi-gold-500); }
.anpi-tabs__panel {
	background: var(--anpi-color-surface);
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius-lg);
	padding: var(--anpi-space-6);
	display: grid;
	gap: var(--anpi-space-4);
	justify-items: start;
	margin-block-start: var(--anpi-space-5);
}
/* the A11Y-S8-1 fix: display:grid above is an author rule that would
 * override the UA's [hidden] — re-close it explicitly */
.anpi-tabs__panel[hidden] { display: none; }
.anpi-tabs__panel-title { font-size: var(--anpi-size-h3); font-weight: 700; }
.anpi-tabs__panel-summary { color: var(--anpi-color-text-muted); max-inline-size: 65ch; }
.anpi-tabs__panel-count { font-size: var(--anpi-size-small); color: var(--anpi-gold-600); font-weight: 500; }
.anpi-tabs__tree-title { margin-block-start: var(--anpi-space-6); }

/* 8g · the sibling related band (deep pages) */
.anpi-section--related { padding-block: calc(var(--anpi-section-pad) / 2); border-block-start: var(--anpi-hairline); }
.anpi-related {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--anpi-space-6);
	flex-wrap: wrap;
}
.anpi-related__title { font-size: 1.0625rem; font-weight: 700; }
.anpi-related__text { color: var(--anpi-color-text-muted); font-size: var(--anpi-size-small); }

/* 8h · the four-domain grid (S12; the IA D1) — the item lists reuse
 * .anpi-list; the equal-height card is structural (the foot anchors via
 * margin-block-start: auto); the border-inline-start keel is the 8b kin */
.anpi-domain-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--anpi-space-4);
}
.anpi-domain {
	display: flex;
	flex-direction: column;
	gap: var(--anpi-space-3);
	background: var(--anpi-color-surface);
	border: var(--anpi-hairline);
	border-inline-start: 3px solid var(--anpi-gold-400);
	border-radius: var(--anpi-radius);
	padding: var(--anpi-space-5);
	transition: border-color var(--anpi-dur-1) var(--anpi-ease), box-shadow var(--anpi-dur-1) var(--anpi-ease);
}
.anpi-domain:hover,
.anpi-domain:focus-within {
	border-color: var(--anpi-gold-300);
	border-inline-start-color: var(--anpi-gold-500);
	box-shadow: var(--anpi-shadow-1);
}
.anpi-domain__head { display: flex; align-items: center; gap: var(--anpi-space-3); }
.anpi-domain__num {
	flex: none;
	inline-size: 2rem;
	block-size: 2rem;
	display: grid;
	place-items: center;
	background: var(--anpi-gold-100);
	color: var(--anpi-gold-700);
	border: 1px solid var(--anpi-gold-200);
	border-radius: 50%;
	font-size: 0.8125rem;
	font-weight: 700;
}
.anpi-domain__title { font-size: 1.125rem; font-weight: 700; line-height: 1.5; text-wrap: balance; }
.anpi-domain__desc { color: var(--anpi-color-text-muted); font-size: var(--anpi-size-small); }
.anpi-domain__list { gap: var(--anpi-space-2); }
.anpi-domain__list li { color: var(--anpi-color-text-muted); font-size: var(--anpi-size-small); }
.anpi-domain__foot {
	margin-block-start: auto;
	padding-block-start: var(--anpi-space-3);
	border-block-start: 1px solid var(--anpi-color-inset);
	display: flex;
	flex-wrap: wrap;
	gap: var(--anpi-space-2) var(--anpi-space-4);
	font-size: var(--anpi-size-small);
}
.anpi-domain__link { color: var(--anpi-gold-600); font-weight: 600; }
.anpi-domain__link:hover { color: var(--anpi-gold-700); }
.anpi-domain-grid--compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.anpi-domain-grid--compact .anpi-domain { gap: var(--anpi-space-2); }

/* 8i · the official-resource card (S12; the IA D5) — the fixed 7rem tile is
 * CLS-free and aspect-defensive (any logo up to ~3:1); if the captured mark
 * were ever absent, the tile element is OMITTED — never a placeholder */
.anpi-official {
	display: flex;
	align-items: center;
	gap: var(--anpi-space-5);
	background: var(--anpi-color-surface);
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius-lg);
	padding: var(--anpi-space-5);
	box-shadow: var(--anpi-shadow-1);
}
.anpi-official__logo {
	flex: none;
	inline-size: 7rem;
	block-size: 7rem;
	display: grid;
	place-items: center;
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
	padding: var(--anpi-space-2);
	overflow: hidden;
}
.anpi-official__logo img {
	inline-size: auto;
	block-size: auto;
	max-inline-size: 100%;
	max-block-size: 100%;
	object-fit: contain;
}
.anpi-official__body { display: grid; gap: var(--anpi-space-2); min-inline-size: 0; }
.anpi-official__org { font-size: var(--anpi-size-h3); font-weight: 700; }
.anpi-official__ministry { color: var(--anpi-color-text-muted); font-size: var(--anpi-size-small); }
.anpi-official__desc { color: var(--anpi-color-text); max-inline-size: 65ch; }
.anpi-official__note {
	color: var(--anpi-color-text-muted);
	font-size: 0.75rem;
	max-inline-size: 70ch;
	border-block-start: 1px solid var(--anpi-color-inset);
	padding-block-start: var(--anpi-space-2);
	margin-block-start: var(--anpi-space-2);
}
/* the icon + label host: inline-flex (the .anpi-sticky-cta__call pattern —
 * a block-level svg inside the inline-block .anpi-btn would stack them) */
.anpi-official__cta {
	justify-self: start;
	margin-block-start: var(--anpi-space-2);
	display: inline-flex;
	align-items: center;
	gap: var(--anpi-space-2);
}

/* ══ 9 · Inner pages ══ */
.anpi-page-hero {
	background: var(--anpi-color-surface);
	border-block-end: var(--anpi-hairline);
	padding-block: var(--anpi-space-6) var(--anpi-space-5);
}
.anpi-page-hero__title { font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.25rem); font-weight: 700; margin-block-end: var(--anpi-space-3); }
.anpi-page-hero__lead { color: var(--anpi-color-text-muted); max-inline-size: 65ch; margin-block-end: var(--anpi-space-5); }
.anpi-page-hero__meta { color: var(--anpi-color-text-muted); font-size: var(--anpi-size-small); display: flex; align-items: center; gap: var(--anpi-space-2); flex-wrap: wrap; }
.anpi-group--page { margin-block-end: var(--anpi-space-5); }

/* the two-column deep-dive (worker / layehe) */
.anpi-deep { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: var(--anpi-space-8); align-items: start; }
.anpi-deep__rail {
	background: var(--anpi-color-surface);
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
	padding: var(--anpi-space-5);
	display: grid;
	gap: var(--anpi-space-4);
	align-content: start;
	justify-items: start;
}
.anpi-deep__rail-title { font-size: var(--anpi-size-h3); font-weight: 700; }
.anpi-deep__rail-text { color: var(--anpi-color-text-muted); font-size: var(--anpi-size-small); }
.anpi-list--bodies li {
	background: var(--anpi-color-surface);
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
	padding: var(--anpi-space-3) var(--anpi-space-5);
	font-weight: 500;
	color: var(--anpi-color-ink);
	transition: border-color var(--anpi-dur-1) var(--anpi-ease);
}
.anpi-list--bodies li:hover { border-color: var(--anpi-gold-300); }

/* the about page (S9: the §22 editorial sequence — institutional-first,
 * sequential full-width sections; the sparse 3fr/2fr split is retired) */
.anpi-about { display: grid; gap: var(--anpi-space-6); }
.anpi-about__text { color: var(--anpi-color-text-muted); max-inline-size: 62ch; }
.anpi-about__figure { display: grid; gap: var(--anpi-space-2); margin-block: var(--anpi-space-2); }
.anpi-about__figure img {
	inline-size: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: var(--anpi-radius-lg);
	border: var(--anpi-hairline);
	box-shadow: var(--anpi-shadow-1);
}
.anpi-about__figure figcaption { font-size: 0.75rem; color: var(--anpi-color-text-faint); text-align: center; }
/* 9b · the biography (S12; the IA D7 — replaces the retired .anpi-expert).
 * The photo keeps the gold double-frame kin of the hero media; the 4/5
 * cover crop (object-position 50% 30%) is presentation-only — no pixel
 * manipulation of the person. The ۲۶ سال closing is the keel callout. */
.anpi-bio {
	background: var(--anpi-color-surface);
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
	padding: var(--anpi-space-6) var(--anpi-space-5);
	display: grid;
	gap: var(--anpi-space-6);
}
.anpi-bio__top {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
	gap: var(--anpi-space-6);
	align-items: start;
}
.anpi-bio__figure { position: relative; display: grid; gap: var(--anpi-space-2); max-inline-size: 480px; }
.anpi-bio__figure::before {
	content: "";
	position: absolute;
	inset-block-start: 8px;
	inset-block-end: -8px;
	inset-inline: 8px -8px;
	border: 1px solid var(--anpi-gold-400);
	border-radius: var(--anpi-radius-lg);
	z-index: -1;
}
.anpi-bio__photo {
	inline-size: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	object-position: 50% 30%;
	border-radius: var(--anpi-radius-lg);
	border: var(--anpi-hairline);
	box-shadow: var(--anpi-shadow-1);
}
.anpi-bio__identity { display: grid; gap: var(--anpi-space-5); min-inline-size: 0; }
.anpi-bio__lead { font-size: var(--anpi-size-lead); color: var(--anpi-color-text); }
.anpi-bio__section { display: grid; gap: var(--anpi-space-3); }
.anpi-bio__section + .anpi-bio__section {
	border-block-start: 1px solid var(--anpi-color-inset);
	padding-block-start: var(--anpi-space-4);
}
.anpi-bio__section h3 { font-size: 1.0625rem; font-weight: 700; color: var(--anpi-color-ink); }
.anpi-bio__exp {
	border-inline-start: 3px solid var(--anpi-gold-400);
	padding-inline-start: var(--anpi-space-4);
	color: var(--anpi-gold-600);
	font-weight: 600;
}

/* the contact hub (form + channels) */
.anpi-hub { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: var(--anpi-space-8); align-items: start; }
.anpi-hub__form { background: var(--anpi-color-surface); border: var(--anpi-hairline); border-radius: var(--anpi-radius); padding: var(--anpi-space-5); }
.anpi-hub__next { margin-block-start: var(--anpi-space-4); color: var(--anpi-color-text-muted); font-size: var(--anpi-size-small); }
/* S12 (V8): the contact hub's headings step up one notch — page-scoped;
 * the global --anpi-size-h2 is untouched. The .anpi-hub h3 rule (0-1-1)
 * beating .anpi-channels__title (0-1-0) is BY DESIGN. */
.anpi-hub h2 { font-size: 1.875rem; }
.anpi-hub h3 { font-size: 1.375rem; }
.anpi-form { display: grid; gap: var(--anpi-space-4); }
.anpi-form__row { display: grid; gap: var(--anpi-space-2); }
.anpi-form label { font-size: var(--anpi-size-small); font-weight: 500; color: var(--anpi-color-ink); }
.anpi-form__req { color: var(--anpi-color-danger); }
.anpi-form input[type="text"], .anpi-form select, .anpi-form textarea {
	inline-size: 100%;
	padding: 0.6rem 0.75rem;
	border: 1px solid var(--anpi-color-field-border);
	border-radius: var(--anpi-radius-sm);
	background: var(--anpi-color-bg-page);
	min-block-size: 44px;
}
.anpi-form textarea { min-block-size: 8rem; resize: vertical; }
.anpi-form input:focus, .anpi-form select:focus, .anpi-form textarea:focus {
	outline: 3px solid var(--anpi-color-focus-ring);
	outline-offset: 1px;
	border-color: var(--anpi-color-focus-ring);
}
.anpi-form input[dir="ltr"] { unicode-bidi: plaintext; text-align: start; }
.anpi-form__hp { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); }
.anpi-form-status { padding: var(--anpi-space-4); border-radius: var(--anpi-radius); font-size: var(--anpi-size-small); font-weight: 500; margin-block-end: var(--anpi-space-4); }
.anpi-form-status--ok { background: var(--anpi-color-surface-alt); color: var(--anpi-color-success); border: 1px solid var(--anpi-color-success); }
.anpi-form-status--err { background: var(--anpi-color-surface-alt); color: var(--anpi-color-danger); border: 1px solid var(--anpi-color-danger); }

/* channels — S9: the card grid (the directive §24/§25: structured channel
 * cards, supplied icons normalized through consistent icon containers) */
.anpi-channels { display: grid; gap: var(--anpi-space-4); }
.anpi-hub__channels .anpi-channels,
.anpi-section--alt .anpi-channels { background: var(--anpi-color-surface); border: var(--anpi-hairline); border-radius: var(--anpi-radius); padding: var(--anpi-space-5); }
.anpi-channels__title { font-size: var(--anpi-size-h3); font-weight: 700; }
.anpi-channels__note { color: var(--anpi-color-text-muted); font-size: var(--anpi-size-small); }
.anpi-channels__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--anpi-space-3); scroll-margin-top: calc(var(--anpi-header-h) + var(--anpi-space-4)); } /* the OPP-S9-8 row: fragment targets clear the sticky bar */
.anpi-channel {
	display: flex;
	align-items: center;
	gap: var(--anpi-space-3);
	background: var(--anpi-color-bg-page);
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
	padding: var(--anpi-space-3) var(--anpi-space-4);
	transition: border-color var(--anpi-dur-1) var(--anpi-ease);
	color: var(--anpi-color-text);
}
a.anpi-channel:hover, a.anpi-channel:focus-visible { border-color: var(--anpi-gold-300); text-decoration: none; }
span.anpi-channel { cursor: default; }
.anpi-channel__icon {
	flex: none;
	inline-size: var(--anpi-channel-icon);
	block-size: var(--anpi-channel-icon);
	display: grid;
	place-items: center;
	background: var(--anpi-color-surface);
	border: var(--anpi-hairline);
	border-radius: 10px;
}
.anpi-channel__icon img { inline-size: 24px; block-size: 24px; object-fit: contain; border-radius: 6px; }
.anpi-channel__icon .anpi-icon { color: var(--anpi-color-primary); }
.anpi-channel__copy { display: grid; gap: 0.125rem; min-inline-size: 0; }
.anpi-channel__label { font-weight: 600; color: var(--anpi-color-primary); font-size: var(--anpi-size-small); }
.anpi-channel__meta { color: var(--anpi-color-text-muted); font-size: var(--anpi-size-small); }
.anpi-channel__meta[dir="ltr"] { white-space: nowrap; } /* handles never break mid-string */
.anpi-channels__phones { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--anpi-space-3); }
.anpi-channels__phone {
	display: inline-flex;
	align-items: center;
	background: var(--anpi-color-bg-page);
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
	padding: 0.5rem 0.875rem;
	font-weight: 600;
	color: var(--anpi-color-primary);
	min-block-size: 44px;
	transition: border-color var(--anpi-dur-1) var(--anpi-ease);
}
.anpi-channels__phone:hover { text-decoration: none; border-color: var(--anpi-gold-300); }

/* ══ 10 · The footer (S9: the textured navy inversion; the directive §26) ══ */
.anpi-footer {
	background-color: var(--anpi-color-band);
	background-image: linear-gradient(var(--anpi-tex-overlay), var(--anpi-tex-overlay)), url("../img/texture-navy.webp");
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	color: var(--anpi-color-on-band);
	padding-block: var(--anpi-space-8) var(--anpi-space-5);
	border-block-start: 2px solid var(--anpi-gold-500);
}
.anpi-footer__top {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: var(--anpi-space-8);
	flex-wrap: wrap;
	margin-block-end: var(--anpi-space-6);
}
.anpi-footer__id { display: grid; gap: var(--anpi-space-3); max-inline-size: 48ch; }
.anpi-footer__brand { display: flex; align-items: center; gap: var(--anpi-space-4); }
.anpi-footer__logo {
	inline-size: var(--anpi-footer-logo);
	block-size: var(--anpi-footer-logo);
	border-radius: calc(var(--anpi-radius-tile) * 0.8);
	border: var(--anpi-tex-hairline);
	box-shadow: var(--anpi-shadow-1);
}
.anpi-footer__stack { display: grid; gap: 0.25rem; }
.anpi-footer__name { font-weight: 700; font-size: 1.0625rem; color: var(--anpi-color-on-band); }
.anpi-footer__name-en {
	font-size: 0.8125rem;
	color: var(--anpi-tex-muted);
	letter-spacing: 0.02em; /* the Latin island line only — never on Persian text */
}
.anpi-footer__note { color: var(--anpi-tex-muted); font-size: var(--anpi-size-small); }
.anpi-footer__connect { display: grid; gap: var(--anpi-space-3); justify-items: start; }
.anpi-footer__connect-title { font-size: var(--anpi-size-small); font-weight: 700; color: var(--anpi-gold-300); }
.anpi-footer__social { display: flex; align-items: center; gap: var(--anpi-space-3); flex-wrap: wrap; }
.anpi-footer__chip {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	inline-size: var(--anpi-chip-size);
	block-size: var(--anpi-chip-size);
	border-radius: var(--anpi-radius);
	background: var(--anpi-color-surface);
	transition: background var(--anpi-dur-1) var(--anpi-ease);
}
.anpi-footer__chip img { inline-size: 24px; block-size: 24px; object-fit: contain; border-radius: 6px; }
.anpi-footer__chip:hover { background: var(--anpi-gold-300); text-decoration: none; }
.anpi-footer__contact { display: flex; align-items: baseline; gap: var(--anpi-space-3); flex-wrap: wrap; font-size: var(--anpi-size-small); }
.anpi-footer__contact-intro { color: var(--anpi-tex-muted); }
.anpi-footer__contact a { color: var(--anpi-color-on-band); font-weight: 600; }
.anpi-footer__contact a:hover { color: var(--anpi-gold-300); text-decoration: none; }
.anpi-footer__nav { margin-block-end: var(--anpi-space-6); }
.anpi-menu--footer {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr));
	gap: 0.5rem var(--anpi-space-5);
}
.anpi-menu--footer a {
	display: inline-flex;
	align-items: center;
	gap: var(--anpi-space-2);
	color: var(--anpi-tex-muted);
	font-size: var(--anpi-size-small);
	padding-block: 0.25rem;
}
.anpi-menu--footer a:hover { color: var(--anpi-gold-300); text-decoration: none; }
.anpi-footer__base { border-block-start: var(--anpi-band-hairline); padding-block-start: var(--anpi-space-4); display: grid; gap: var(--anpi-space-2); }
.anpi-footer__copy { color: var(--anpi-tex-muted); font-size: var(--anpi-size-small); max-inline-size: 75ch; }
.anpi-footer__year { color: var(--anpi-tex-muted); font-size: var(--anpi-size-small); }

/* ══ 11 · Articles (the D9 rows) ══ */
.anpi-notfound__code { font-size: 3.5rem; font-weight: 700; color: var(--anpi-gold-500); line-height: 1; margin-block-end: var(--anpi-space-4); }
.anpi-notfound .anpi-hero__cta { margin-block-start: var(--anpi-space-6); margin-block-end: 0; }
.anpi-posts--grid { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 1fr; gap: var(--anpi-space-4); }
.anpi-posts .navigation.pagination { grid-column: 1 / -1; }
.anpi-post-card {
	background: var(--anpi-color-surface);
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
	overflow: hidden;
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
	gap: var(--anpi-space-4);
	padding: var(--anpi-space-4);
	align-items: stretch;
	transition: border-color var(--anpi-dur-1) var(--anpi-ease), box-shadow var(--anpi-dur-1) var(--anpi-ease);
}
.anpi-post-card:hover, .anpi-post-card:focus-within { border-color: var(--anpi-gold-300); box-shadow: var(--anpi-shadow-1); }
.anpi-post-card__thumb { display: block; }
.anpi-post-card__thumb img {
	inline-size: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	border-radius: var(--anpi-radius-sm);
	border: var(--anpi-hairline);
}
.anpi-post-card__body { display: grid; grid-template-rows: auto auto 1fr auto; gap: var(--anpi-space-2); align-content: start; }
.anpi-post-card__meta { display: flex; align-items: center; gap: var(--anpi-space-2); flex-wrap: wrap; }
.anpi-post-card__chip {
	background: var(--anpi-gold-100);
	color: var(--anpi-gold-700);
	border-radius: var(--anpi-radius-sm);
	padding: 0.05rem 0.5rem;
	font-size: 0.6875rem;
	font-weight: 600;
}
.anpi-post-card__date { color: var(--anpi-color-text-muted); font-size: var(--anpi-size-small); }
.anpi-post-card__title { font-size: 1.0625rem; line-height: 1.5; }
.anpi-post-card__title a { color: var(--anpi-color-ink); }
.anpi-post-card__title a:hover { color: var(--anpi-color-primary); text-decoration: none; }
.anpi-post-card__excerpt { color: var(--anpi-color-text-muted); font-size: var(--anpi-size-small); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* S9: the read-more affordance is a REAL anchor (the directive §17) —
 * the emphasis stays color+underline: a translate nudge would be
 * direction-bearing physical CSS (banned by the engagement's i18n law) */
.anpi-post-card__more {
	display: inline-flex;
	align-items: center;
	gap: var(--anpi-space-1);
	justify-self: start;
	font-size: var(--anpi-size-small);
	font-weight: 600;
	color: var(--anpi-gold-600);
}
.anpi-post-card__more:hover { color: var(--anpi-gold-700); text-decoration: underline; }
.anpi-article__top { padding-block: var(--anpi-space-6) var(--anpi-section-pad); }
.anpi-article__media { margin-block-end: var(--anpi-space-5); }
.anpi-article__media img {
	inline-size: 100%;
	max-inline-size: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: var(--anpi-radius-lg);
	border: var(--anpi-hairline);
	box-shadow: var(--anpi-shadow-1);
}
.anpi-article__byline {
	display: grid;
	gap: 0.25rem;
	padding: var(--anpi-space-3) var(--anpi-space-4);
	background: var(--anpi-gold-100);
	border: 1px solid var(--anpi-gold-200);
	border-radius: var(--anpi-radius);
	margin-block-end: var(--anpi-space-6);
	max-inline-size: 70ch;
}
.anpi-article__byline-label { font-size: 0.75rem; font-weight: 600; color: var(--anpi-gold-600); }
.anpi-article__byline-name { font-size: var(--anpi-size-small); color: var(--anpi-color-ink); }
.anpi-article__body { max-inline-size: 70ch; padding-inline: 0; }
/* S9: the global `* { margin: 0 }` reset collapses article paragraphs —
 * the reading rhythm lives only here (the design lane's code find) */
.anpi-article__body p + p { margin-block-start: 1em; }
.anpi-article__body h2 { font-size: 1.375rem; margin-block: 1.5em 0.5em; }
.anpi-article__body h3 { font-size: 1.125rem; margin-block: 1.25em 0.375em; }
.anpi-article__body ul, .anpi-article__body ol { padding-inline-start: 1.25rem; margin-block: 0.75em; }
.anpi-article__body li { margin-block: 0.375em; }
.anpi-article__body a { font-weight: 500; }
.anpi-article__end { max-inline-size: 70ch; margin-block-start: var(--anpi-space-6); display: grid; gap: var(--anpi-space-3); }
.anpi-article__service {
	display: flex;
	align-items: baseline;
	gap: var(--anpi-space-2);
	flex-wrap: wrap;
	padding: var(--anpi-space-3) var(--anpi-space-4);
	background: var(--anpi-color-surface);
	border: var(--anpi-hairline);
	border-inline-start: 3px solid var(--anpi-gold-400);
	border-radius: var(--anpi-radius-sm);
	font-size: var(--anpi-size-small);
}
.anpi-article__service span:first-child { color: var(--anpi-color-text-muted); }
.anpi-article__service a { font-weight: 600; }
.anpi-article__disclaimer { font-size: var(--anpi-size-small); color: var(--anpi-color-text-muted); }
.anpi-crumbs { display: flex; align-items: center; gap: var(--anpi-space-2); font-size: var(--anpi-size-small); color: var(--anpi-color-text-faint); margin-block-end: var(--anpi-space-3); }
.anpi-crumbs a { color: var(--anpi-color-text-muted); }
.anpi-crumbs a:hover { color: var(--anpi-color-primary); text-decoration: none; }
.anpi-related-posts .anpi-posts--grid { margin-block-start: var(--anpi-space-4); }
.navigation.pagination { margin-block-start: var(--anpi-space-6); }
.navigation.pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-inline-size: 44px;
	min-block-size: 44px;
	border: var(--anpi-hairline);
	border-radius: var(--anpi-radius);
	margin-inline-end: 0.25rem;
	color: var(--anpi-color-primary);
	background: var(--anpi-color-surface);
}
.navigation.pagination .page-numbers.current { background: var(--anpi-color-primary); color: var(--anpi-color-on-primary); border-color: var(--anpi-color-primary); }
.navigation.pagination .page-numbers:hover { text-decoration: none; border-color: var(--anpi-color-primary); }

/* ══ 12 · The mobile sticky action bar (the restricted-surface row) ══ */
.anpi-sticky-cta { display: none; }
.anpi-sticky-cta__spacer { display: none; }

/* ══ 13 · Responsive ══ */
@media (max-width: 1023px) {
	:root { --anpi-section-pad: 3.5rem; }
	/* the mobile expanded state (the directive §44: simplify intelligently
	 * while preserving the brand concept — a compact textured brand strip
	 * that scrolls away naturally; no expert block, no pills, no scrub) */
	.anpi-masthead { display: block; padding-block: var(--anpi-space-4); }
	.anpi-masthead__inner { opacity: 1; transform: none; will-change: auto; }
	.anpi-masthead__expert, .anpi-masthead__navrow { display: none; }
	/* S12 (V3): the masthead phone is a ≥1024 slot only */
	.anpi-masthead__phone { display: none; }
	.anpi-brand--masthead { gap: var(--anpi-space-3); }
	.anpi-brand--masthead .anpi-brand__logo--tile { inline-size: 48px; block-size: 48px; border-radius: 0.75rem; }
	.anpi-brand--masthead .anpi-brand__name--lg { font-size: 1rem; }
	/* the mobile brand strip carries the institution name at rest; the
	 * compact bar below it shows the logo mark alone (the F-J2 row: the
	 * name must not render in both tiers simultaneously on mobile either) */
	.anpi-header__brand .anpi-brand__name { display: none; }
	.anpi-nav { display: none; }
	.anpi-nav-toggle { display: flex; }
	/* S12 (V2): the compact-bar phone goes icon-only (the base rule already
	 * sets inline-flex; these must live in §13 to win the cascade) */
	.anpi-header__phone { padding: 0; }
	.anpi-header__phone-num { display: none; }
	/* S12 (V5): both domain grids drop to two columns */
	.anpi-domain-grid, .anpi-domain-grid--compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.anpi-split__inner, .anpi-deep, .anpi-hub { grid-template-columns: 1fr; gap: var(--anpi-space-6); }
	.anpi-hero__inner { grid-template-columns: 1fr; gap: var(--anpi-space-6); }
	.anpi-steps--3 { grid-template-columns: 1fr; max-inline-size: 60ch; }
	.anpi-posts--grid { grid-template-columns: 1fr; }
	.anpi-tabs__list { overflow-inline: auto; }
	.anpi-tabs__tab { min-inline-size: max-content; }
}
@media (max-width: 767px) {
	:root { --anpi-section-pad: 2.75rem; }
	.anpi-hero { padding-block-start: var(--anpi-space-6); }
	.anpi-hero__title { max-inline-size: none; }
	.anpi-hero__media { order: 1; }
	.anpi-hero__media img { aspect-ratio: 16 / 10; }
	.anpi-hero__cta { flex-direction: column; align-items: stretch; }
	.anpi-hero__cta .anpi-btn { text-align: center; }
	.anpi-two-lane { grid-template-columns: 1fr; grid-auto-rows: auto; }
	.anpi-lane__text { -webkit-line-clamp: unset; }
	/* S12 (V5/V6/V7): single-column grids + the stacked official card and
	 * biography on phones */
	.anpi-domain-grid, .anpi-domain-grid--compact { grid-template-columns: 1fr; }
	.anpi-official { flex-direction: column; align-items: flex-start; }
	.anpi-bio__top { grid-template-columns: 1fr; }
	.anpi-bio { padding: var(--anpi-space-5) var(--anpi-space-4); }
	.anpi-list--cols { grid-template-columns: 1fr; }
	.anpi-cta-band__inner { flex-direction: column; align-items: stretch; text-align: center; }
	.anpi-cta-band .anpi-btn--primary { inline-size: 100%; }
	.anpi-footer__top { flex-direction: column; }
	.anpi-footer__brand { flex-direction: row; }
	.anpi-channels__grid, .anpi-channels__phones { grid-template-columns: 1fr; }
	.anpi-group__head { flex-direction: column; align-items: flex-start; gap: var(--anpi-space-2); }
	.anpi-related { flex-direction: column; align-items: flex-start; }
	.anpi-post-card { grid-template-columns: 1fr; grid-auto-rows: auto; }
	.anpi-post-card__body { grid-template-rows: none; }
	.anpi-post-card__thumb img { aspect-ratio: 16 / 9; }
	/* the sticky bar exists on mobile only (its pages include the part) */
	.anpi-sticky-cta {
		display: flex;
		position: fixed;
		inset-inline: 0;
		inset-block-end: 0;
		z-index: 40;
		gap: var(--anpi-space-3);
		padding: var(--anpi-space-2) var(--anpi-space-4);
		background: var(--anpi-color-surface);
		border-block-start: var(--anpi-hairline);
		box-shadow: 0 -1px 8px rgba(10, 27, 51, 0.12);
		align-items: center;
	}
	.anpi-sticky-cta__call {
		display: inline-flex;
		align-items: center;
		gap: var(--anpi-space-2);
		min-block-size: 44px;
		padding-inline: var(--anpi-space-3);
		border: var(--anpi-hairline);
		border-radius: var(--anpi-radius);
		color: var(--anpi-color-primary);
		font-size: var(--anpi-size-small);
		font-weight: 600;
		background: var(--anpi-color-bg-page);
	}
	.anpi-sticky-cta__call:hover { text-decoration: none; border-color: var(--anpi-color-primary); }
	.anpi-sticky-cta__btn { flex: 1; }
	.anpi-sticky-cta__spacer { display: block; block-size: 4.25rem; }
	.anpi-main { padding-block-end: 0; }
}
@media (max-width: 430px) {
	.anpi-brand__name { font-size: 0.9375rem; }
	.anpi-header__actions { gap: var(--anpi-space-3); }
	.anpi-header__actions .anpi-btn--sm { padding-inline: 0.875rem; }
	.anpi-channel { padding: var(--anpi-space-3); }
}
@media (max-width: 379px) {
	/* the ≤379px CTA blackout is CLOSED: the phone icon button persists
	 * (its visibility is the §6 base rule — no re-assertion needed, S12) */
	.anpi-header__actions .anpi-btn--sm { display: none; }
}

/* ══ 14 · Reduced motion ══ */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { transition: none !important; animation: none !important; }
	/* the scrub is motion: reduced-motion readers get the static expanded
	 * tier at full opacity (the natural scroll-away still applies) and the
	 * S8 compact presentation (nav/name always visible — the crossfade
	 * classes and keyframes never engage for them) */
	.anpi-masthead__inner, .anpi-masthead__navrow { opacity: 1 !important; transform: none !important; visibility: visible !important; }
	.anpi-header .anpi-nav,
	.anpi-header__brand .anpi-brand__name { opacity: 1 !important; visibility: visible !important; }
	/* S12: the phone halo is motion — the static control stands alone */
	.anpi-header__phone::after,
	.anpi-hero__call::after,
	.anpi-masthead__phone::after { animation: none; opacity: 0; }
}

/* ══ 15 · The phone attention treatment (S12; the brief §4) ══
 * Paint-only ::after halo; the keyframes animate OPACITY only; the static
 * state = the control's own AA surface (the glow is additive, never
 * load-bearing). Hover/focus stop the loop; §14 kills it under
 * reduced-motion. Exactly ONE professional attention mechanism, applied
 * consistently to the three phone controls (the IA D3). */
@keyframes anpi-phone-pulse {
	0%, 100% { opacity: 0; }
	50% { opacity: 1; }
}
.anpi-header__phone::after,
.anpi-hero__call::after,
.anpi-masthead__phone::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	box-shadow:
		0 0 0 3px var(--anpi-phone-glow),
		0 0 14px var(--anpi-phone-glow);
	opacity: 0;
	pointer-events: none;
	animation: anpi-phone-pulse var(--anpi-phone-cycle) ease-in-out infinite;
}
.anpi-header__phone:hover::after,
.anpi-header__phone:focus-visible::after,
.anpi-hero__call:hover::after,
.anpi-hero__call:focus-visible::after,
.anpi-masthead__phone:hover::after,
.anpi-masthead__phone:focus-visible::after {
	animation: none;
	opacity: 1;
}
.anpi-header__phone,
.anpi-hero__call,
.anpi-masthead__phone { touch-action: manipulation; }
