/* Base: resets, typography, layout primitives, buttons. */

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

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
	margin: 0;
	font-family: var(--aa-font-body);
	font-weight: var(--aa-body-weight);
	color: var(--aa-text);
	background: var(--aa-background);
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}

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

a { color: inherit; text-decoration: none; }

h1, h2, h3, h4, h5, h6 {
	font-family: var(--aa-font-title);
	font-weight: var(--aa-heading-weight);
	color: var(--aa-ink);
	line-height: 1.15;
	margin: 0 0 0.5em;
}

h1 { font-size: clamp(2.4rem, 4vw, 4rem); font-weight: var(--aa-title-weight); }
h2 { font-size: clamp(1.9rem, 3vw, 2.8rem); }
h3 { font-size: clamp(1.25rem, 2vw, 1.6rem); }

p { margin: 0 0 1em; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

.aa-skip-link {
	position: fixed;
	top: -100px;
	left: 1rem;
	z-index: 10000;
	background: var(--aa-ink);
	color: #fff;
	padding: 0.75rem 1.25rem;
	border-radius: var(--aa-radius-sm);
	transition: top var(--aa-speed) var(--aa-ease);
}
.aa-skip-link:focus { top: 1rem; position: fixed !important; width: auto; height: auto; clip: auto; }

:focus-visible {
	outline: 3px solid var(--aa-primary);
	outline-offset: 2px;
}

.aa-container {
	width: 100%;
	max-width: var(--aa-container);
	margin-inline: auto;
	padding-inline: var(--aa-gutter);
}

.aa-section { padding-block: clamp(48px, 8vw, 120px); }

.elementor-section.elementor-section-boxed > .elementor-container { max-width: var(--aa-container); }
.aa-page:not(.aa-front-page) { min-height: 60vh; }

/* Elementor Free keeps sections boxed; visual widgets deliberately break out. */
.elementor-widget-aa-hero,
.elementor-widget-aa-page-hero,
.elementor-widget-aa-cta-banner {
	width: 100% !important;
	max-width: 100% !important;
	margin-left: 0 !important;
}

/* Buttons */
.aa-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5em;
	font-family: var(--aa-font-title);
	font-size: 0.95rem;
	font-weight: 500;
	letter-spacing: 0.02em;
	padding: 0.9em 1.8em;
	border-radius: var(--aa-radius-pill);
	border: 1px solid transparent;
	cursor: pointer;
	transition: background-color var(--aa-speed) var(--aa-ease),
		color var(--aa-speed) var(--aa-ease),
		border-color var(--aa-speed) var(--aa-ease),
		transform var(--aa-speed) var(--aa-ease),
		box-shadow var(--aa-speed) var(--aa-ease);
}
.aa-btn:hover { transform: translateY(-2px); }
.aa-btn:active { transform: translateY(0); }

.aa-btn--primary { background: var(--aa-primary); color: #fff; box-shadow: var(--aa-shadow-sm); }
.aa-btn--primary:hover { box-shadow: var(--aa-shadow-md); filter: brightness(1.05); }

.aa-btn--outline { background: transparent; color: var(--aa-primary); border-color: currentColor; }
.aa-btn--outline:hover { background: var(--aa-primary); color: #fff; }

.aa-btn--pill { border-radius: var(--aa-radius-pill); }
.aa-btn--block { width: 100%; }

.aa-icon { display: inline-block; width: 1em; height: 1em; }
.aa-icon--arrow::after,
.aa-icon--star::after { content: none; }

/* Section heading pattern used across widgets */
.aa-eyebrow {
	display: inline-block;
	font-family: var(--aa-font-title);
	font-size: 0.8rem;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--aa-primary);
	margin-bottom: 0.75em;
}

/* Grids */
.aa-apartment-grid {
	display: grid;
	gap: clamp(20px, 2.5vw, 32px);
	grid-template-columns: 1fr;
}
@media (min-width: 640px) {
	.aa-apartment-grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
	.aa-apartment-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
	.aa-apartment-grid--cols-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
	.aa-apartment-grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
	.aa-apartment-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
	.aa-apartment-grid--cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.aa-blog-grid {
	display: grid;
	gap: clamp(20px, 2.5vw, 32px);
	grid-template-columns: 1fr;
}
@media (min-width: 768px) { .aa-blog-grid { grid-template-columns: repeat(3, 1fr); } }

/* Scroll-reveal utility hook (see header-scroll.js) — progressive
   enhancement only, content stays visible without JS. */
[data-aa-reveal] {
	opacity: 0;
	transform: translateY(24px);
	transition: opacity var(--aa-speed) var(--aa-ease), transform var(--aa-speed) var(--aa-ease);
}
[data-aa-reveal].is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
	[data-aa-reveal] { opacity: 1; transform: none; }
}
