/**
 * PHAROBUILD Core — Base layer
 * Typography primitives, layout framework, accessibility scaffolding.
 * Scoped under .pb (added to <body>) to avoid fighting the active theme
 * outside PHAROBUILD surfaces.
 */

/* ---------- Layout ---------- */
.pb-container,
.pb-container-wide,
.pb-container-narrow {
	width: 100%;
	margin-inline: auto;
	padding-inline: var(--pb-page-gutter);
}
.pb-container {
	max-width: var(--pb-container);
}
.pb-container-wide {
	max-width: var(--pb-container-wide);
}
.pb-container-narrow {
	max-width: var(--pb-container-narrow);
}
.pb-container-full {
	width: 100%;
}

.pb-section {
	padding-block: var(--pb-section-lg);
}
.pb-section--xl {
	padding-block: var(--pb-section-xl);
}
.pb-section--md {
	padding-block: var(--pb-section-md);
}
.pb-section--sm {
	padding-block: var(--pb-section-sm);
}
.pb-section--flush-top {
	padding-top: 0;
}
.pb-section--flush-bottom {
	padding-bottom: 0;
}

.pb-section--ivory {
	background: var(--pb-ivory);
	color: var(--pb-text);
}
.pb-section--ivory-soft {
	background: var(--pb-ivory-soft);
	color: var(--pb-text);
}
.pb-section--white {
	background: var(--pb-white);
	color: var(--pb-text);
}
.pb-section--navy {
	background: var(--pb-navy);
	color: var(--pb-on-dark);
}
.pb-section--navy-deep {
	background: var(--pb-navy-deep);
	color: var(--pb-on-dark);
}

.pb-grid {
	display: grid;
	gap: var(--pb-grid-gap);
	grid-template-columns: repeat(12, minmax(0, 1fr));
}
.pb-cols-2 {
	display: grid;
	gap: var(--pb-grid-gap);
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
.pb-cols-3 {
	display: grid;
	gap: var(--pb-grid-gap);
	grid-template-columns: repeat(3, minmax(0, 1fr));
}
.pb-cols-4 {
	display: grid;
	gap: var(--pb-grid-gap);
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

@media (max-width: 1024px) {
	.pb-cols-3,
	.pb-cols-4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 900px) {
	.pb-grid > * {
		grid-column: 1 / -1 !important;
	}
}
@media (max-width: 640px) {
	.pb-cols-2,
	.pb-cols-3,
	.pb-cols-4 {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ---------- Typography ---------- */
.pb {
	font-family: var(--pb-font-sans);
	color: var(--pb-text);
	font-size: var(--pb-font-body);
	line-height: var(--pb-lh-body);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}
.pb :is(h1, h2, h3, h4) {
	font-family: var(--pb-font-sans);
	color: var(--pb-navy);
	line-height: var(--pb-lh-heading);
	letter-spacing: var(--pb-tracking-tight);
	font-weight: var(--pb-weight-bold);
	margin: 0 0 var(--pb-space-4);
	text-wrap: balance;
}
.pb-display {
	font-size: var(--pb-font-display);
	line-height: var(--pb-lh-tight);
	letter-spacing: var(--pb-tracking-tight);
	font-weight: var(--pb-weight-bold);
	color: var(--pb-navy);
	margin: 0 0 var(--pb-space-5);
}
.pb-h1 {
	font-size: var(--pb-font-h1);
}
.pb-h2 {
	font-size: var(--pb-font-h2);
}
.pb-h3 {
	font-size: var(--pb-font-h3);
}
.pb-h4 {
	font-size: var(--pb-font-h4);
	font-weight: var(--pb-weight-semibold);
}
.pb-body-lg {
	font-size: var(--pb-font-body-lg);
}
.pb-body-sm {
	font-size: var(--pb-font-small);
}
.pb-caption {
	font-size: var(--pb-font-caption);
	color: var(--pb-text-muted);
}
.pb-eyebrow,
.pb-label {
	display: inline-block;
	font-size: var(--pb-font-label);
	font-weight: var(--pb-weight-semibold);
	letter-spacing: var(--pb-tracking-label);
	text-transform: uppercase;
	color: var(--pb-gold-dark);
}
.pb-section--navy .pb-eyebrow,
.pb-section--navy-deep .pb-eyebrow {
	color: var(--pb-gold-light);
}
.pb-eyebrow::before {
	content: "";
	display: inline-block;
	width: 28px;
	height: 2px;
	vertical-align: middle;
	margin-inline-end: 10px;
	background: var(--pb-gradient-gold);
}

.pb :is(h2, h3):is(.pb-section--navy *, .pb-section--navy-deep *) {
	color: var(--pb-white);
}

.pb p {
	margin: 0 0 var(--pb-space-5);
}
.pb p:last-child {
	margin-bottom: 0;
}
.pb a {
	color: var(--pb-navy);
	text-underline-offset: 0.2em;
	transition: color var(--pb-dur) var(--pb-ease);
}
.pb a:hover {
	color: var(--pb-gold-dark);
}
.pb-section--navy a,
.pb-section--navy-deep a {
	color: var(--pb-on-dark);
}

.pb-measure {
	max-width: 62ch;
}
.pb-text-center {
	text-align: center;
}
.pb-text-center .pb-measure {
	margin-inline: auto;
}

/* ---------- Focus visibility ---------- */
.pb :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--pb-focus-ring);
	outline-offset: 2px;
	border-radius: var(--pb-radius-sm);
}

/* ---------- Media ---------- */
.pb img,
.pb video {
	display: block;
	max-width: 100%;
	height: auto;
}
.pb figure {
	margin: 0;
}
.pb-figcaption {
	margin-top: var(--pb-space-3);
	font-size: var(--pb-font-caption);
	color: var(--pb-text-muted);
}

/* ---------- Utilities ---------- */
.pb-visually-hidden {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}
.pb-divider {
	height: 3px;
	width: 64px;
	border: 0;
	margin: var(--pb-space-5) 0;
	background: var(--pb-gradient-gold);
}
[dir="rtl"] .pb {
	font-family: var(--pb-font-ar);
}
