/* ============================================================
   01-layout.css — container, grid utilities, section spacing
   ============================================================ */

.container {
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--s-4);
}

section.module {
  padding: var(--s-8) 0;
}
@media (max-width: 720px) {
  section.module { padding: var(--s-7) 0; }
}

.section-head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto var(--s-6);
}
.section-head p {
  color: var(--c-muted);
  font-size: 1.05rem;
}

.grid { display: grid; gap: var(--s-4); }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }

@media (max-width: 960px) {
  .grid-3, .grid-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
}

.bg-dark { background: var(--c-ink); color: var(--c-white); }
.bg-dark h1, .bg-dark h2, .bg-dark h3, .bg-dark h4 { color: var(--c-white); }
/* Eyebrow on dark surfaces: use the warm yellow for AA contrast.
   The legacy --c-amber alias maps to blue, which would render
   blue-on-black (~2:1 contrast). Yellow on ink-black is ~12:1. */
.bg-dark .eyebrow,
.bg-timber .eyebrow { color: var(--c-yellow); }

.bg-card { background: var(--c-card); }
.bg-timber { background: var(--c-timber); color: var(--c-white); }
.bg-timber h1, .bg-timber h2, .bg-timber h3 { color: var(--c-white); }

/* ============================================================
   compact-cta — closing section for inner pages (granny-flats,
   how-it-works, about-nathan). Dark background, centred content.
   ============================================================ */
.compact-cta {
  background: var(--c-ink);
  color: var(--c-white);
  text-align: center;
  /* Slightly tighter than a full .module — feels like a closing line,
     not a new chapter. The padding scale drops one step: s-8 → s-7. */
  padding: var(--s-7) 0;
}
.compact-cta h2 {
  color: var(--c-white);
  /* Clamp to a slightly smaller max so it reads as a closer, not a new hero */
  font-size: clamp(1.6rem, 3vw, 2.2rem);
  margin-bottom: var(--s-3);
}
.compact-cta p {
  /* rgba white for WCAG AA on dark bg — avoids --c-muted which is ~3.5:1 on ink */
  color: rgba(255, 255, 255, 0.82);
  max-width: 560px;
  margin: 0 auto var(--s-4);
  font-size: 1.05rem;
}
.compact-cta-actions {
  display: flex;
  gap: var(--s-3);
  justify-content: center;
  flex-wrap: wrap;
}

/* On mobile the two buttons stack cleanly with a little more breathing room */
@media (max-width: 480px) {
  .compact-cta { padding: var(--s-6) 0; }
  .compact-cta-actions {
    flex-direction: column;
    align-items: center;
    gap: var(--s-2);
  }
  .compact-cta-actions .btn {
    width: 100%;
    max-width: 320px;
    justify-content: center;
  }
}

/* Global keyboard-focus safety net */
*:focus-visible {
  outline: 3px solid var(--c-yellow);
  outline-offset: 2px;
}

/* ============================================================
   page-signpost — subtle "continue reading" bridge that appears
   between the last content module and the compact CTA on inner
   pages. Keeps the funnel moving without shouting.
   ============================================================ */
.page-signpost {
  border-top: 1px solid var(--c-line);
  border-bottom: 1px solid var(--c-line);
  background: var(--c-card);
  padding: var(--s-4) 0;
}
.page-signpost-link {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--s-3);
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--c-blue);
  transition: color 0.15s ease, gap 0.2s ease;
}
.page-signpost-link:hover {
  color: var(--c-blue-dark);
  gap: var(--s-4);
}
.page-signpost-arrow {
  font-size: 1.1rem;
  transition: transform 0.2s ease;
}
.page-signpost-link:hover .page-signpost-arrow {
  transform: translateX(4px);
}
@media (max-width: 480px) {
  .page-signpost-link {
    font-size: 0.88rem;
    text-align: center;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--s-2);
  }
}
