/* ==========================================================================
   Augusta Place — Base / Elements
   Fonts, resets that layer on Kadence, typography, links, buttons, utilities.
   ========================================================================== */

/* ---- Self-hosted fonts (see /fonts + docs/image-assets.md) ------------- */
@font-face {
  font-family: "General Sans";
  src: url("../fonts/GeneralSans-Medium.woff2") format("woff2");
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "General Sans";
  src: url("../fonts/GeneralSans-Semibold.woff2") format("woff2");
  font-weight: 600; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "General Sans";
  src: url("../fonts/GeneralSans-Bold.woff2") format("woff2");
  font-weight: 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/Inter-Regular.woff2") format("woff2");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/Inter-Medium.woff2") format("woff2");
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/Inter-SemiBold.woff2") format("woff2");
  font-weight: 600; font-style: normal; font-display: swap;
}

/* ---- Reset layer (light touch — Kadence handles most normalization) ---- */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
/* Lock background scroll when the mobile drawer is open */
html.ap-no-scroll, html.ap-no-scroll body { overflow: hidden; touch-action: none; }

body.augusta-place {
  margin: 0;
  background: var(--ap-bg);
  color: var(--ap-text);
  font-family: var(--ap-font-body);
  font-size: var(--ap-body);
  font-weight: var(--ap-fw-body);
  line-height: var(--ap-lh-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

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

/* ---- Headings ---------------------------------------------------------- */
.augusta-place h1, .augusta-place h2, .augusta-place h3,
.augusta-place h4, .augusta-place h5, .augusta-place h6 {
  font-family: var(--ap-font-head);
  color: var(--ap-charcoal);
  font-weight: var(--ap-fw-semibold);
  line-height: var(--ap-lh-head);
  letter-spacing: var(--ap-tracking-head);
  margin: 0 0 0.5em;
  text-wrap: balance;
}
.augusta-place h1 { font-size: var(--ap-h1); line-height: var(--ap-lh-tight); font-weight: var(--ap-fw-bold); }
.augusta-place h2 { font-size: var(--ap-h2); }
.augusta-place h3 { font-size: var(--ap-h3); }
.augusta-place h4 { font-size: var(--ap-h4); }

.augusta-place p { margin: 0 0 1.15em; max-width: 68ch; }
.augusta-place p:last-child { margin-bottom: 0; }

a { color: var(--ap-purple); text-decoration: none; transition: color var(--ap-dur-fast) var(--ap-ease); }
a:hover { color: var(--ap-purple-600); }

/* ---- Shared section primitives ---------------------------------------- */
.ap-section { padding-block: var(--ap-section-y); position: relative; }
.ap-section--alt { background: var(--ap-bg-alt); }
.ap-section--sage { background: var(--ap-bg-sage); }
.ap-section--forest { background: var(--ap-bg-forest); color: var(--ap-text-on-dark); }
.ap-section--forest h2, .ap-section--forest h3 { color: #fff; }
.ap-section--forest p { color: var(--ap-text-on-dark-2); }

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

.ap-eyebrow {
  display: inline-flex; align-items: center; gap: 0.5rem;
  font-family: var(--ap-font-body);
  font-size: var(--ap-eyebrow);
  font-weight: var(--ap-fw-semibold);
  letter-spacing: var(--ap-tracking-eyebrow);
  text-transform: uppercase;
  color: var(--ap-forest);
  margin: 0 0 1rem;
}
.ap-section--forest .ap-eyebrow { color: var(--ap-sage); }
.ap-eyebrow::before {
  content: ""; width: 24px; height: 2px; border-radius: 2px;
  background: currentColor; opacity: 0.7;
}

.ap-section__head { max-width: 680px; margin-bottom: clamp(2.75rem, 1.5rem + 4vw, 4.5rem); }
.ap-section__head--center { margin-inline: auto; text-align: center; }
.ap-section__head h2 { margin-bottom: 0.85rem; }
.ap-lead { font-size: clamp(1.2rem, 1.1rem + 0.4vw, 1.375rem); color: var(--ap-text-2); line-height: 1.6; }

/* ---- Buttons ----------------------------------------------------------- */
.ap-btn {
  --_bg: var(--ap-forest);
  --_fg: #fff;
  display: inline-flex; align-items: center; justify-content: center; gap: 0.55rem;
  font-family: var(--ap-font-body);
  font-size: 1rem; font-weight: var(--ap-fw-semibold);
  line-height: 1; letter-spacing: 0.01em;
  padding: 1.1rem 1.9rem;
  border-radius: var(--ap-radius-pill);
  border: 1.5px solid transparent;
  background: var(--_bg); color: var(--_fg);
  cursor: pointer;
  transition: transform var(--ap-dur) var(--ap-ease),
              box-shadow var(--ap-dur) var(--ap-ease),
              background var(--ap-dur-fast) var(--ap-ease),
              filter var(--ap-dur-fast) var(--ap-ease);
  will-change: transform;
}
.ap-btn:hover { transform: translateY(-3px); box-shadow: var(--ap-shadow); color: var(--_fg); filter: brightness(1.04); }
.ap-btn:active { transform: translateY(-1px); }
.ap-btn--accent { --_bg: var(--ap-purple); }
.ap-btn--accent:hover { --_bg: var(--ap-purple-600); }
.ap-btn--ghost {
  --_bg: transparent; --_fg: var(--ap-forest);
  border-color: var(--ap-border-strong);
}
.ap-btn--ghost:hover { --_bg: var(--ap-forest-050); }
.ap-btn--on-dark { --_bg: #fff; --_fg: var(--ap-forest-700); }
.ap-btn--on-dark.ap-btn--ghost { --_bg: transparent; --_fg: #fff; border-color: rgba(255,255,255,0.5); }
.ap-btn--on-dark.ap-btn--ghost:hover { --_bg: rgba(255,255,255,0.12); }
.ap-btn--lg { padding: 1.3rem 2.5rem; font-size: 1.0625rem; }
.ap-btn svg { width: 1.1em; height: 1.1em; }

/* ---- Focus: visible, accessible, brand-tinted ------------------------- */
:where(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
  outline: none;
  box-shadow: var(--ap-shadow-focus);
  border-radius: var(--ap-radius-sm);
}

.ap-skip-link {
  position: absolute; left: 1rem; top: -100%;
  background: var(--ap-forest); color: #fff;
  padding: 0.75rem 1.25rem; border-radius: 0 0 var(--ap-radius-sm) var(--ap-radius-sm);
  z-index: var(--ap-z-modal); transition: top var(--ap-dur) var(--ap-ease);
}
.ap-skip-link:focus { top: 0; color: #fff; }

.ap-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;
}

/* ---- Reveal-on-scroll (GSAP adds .is-in; graceful no-JS fallback) ------ */
.ap-reveal { opacity: 0; transform: translateY(24px); }
.ap-reveal.is-in { opacity: 1; transform: none; }
.no-js .ap-reveal, .ap-reveal.is-static { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .ap-reveal { opacity: 1 !important; transform: none !important; }
}
