/* ==========================================================================
   Atlanta Deer Control — design system
   Ported from the Squarespace site, matched to live computed styles.
   --------------------------------------------------------------------------
   Colour + type tokens were read directly off atlantadeercontrol.org:
     dark   rgb(42, 40, 41)    #2A2829
     light  rgb(224, 224, 219) #E0E0DB
     head   orpheus-pro  400
     body   Inter Tight  400 / 17px / 31.4px line-height
   ========================================================================== */

/* --------------------------------------------------------------------------
   Fonts
   The live site uses Orpheus Pro, an Adobe Fonts (Typekit) face licensed
   through Squarespace. That licence does NOT transfer to Cloudflare, so we
   use Cormorant Garamond — the closest free match in weight, contrast and
   proportion.

   If you keep an Adobe Fonts subscription, add your kit <link> in the page
   <head> and change --font-head to: "orpheus-pro", "Cormorant Garamond", serif
   -------------------------------------------------------------------------- */
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300..700;1,300..700&family=Inter+Tight:ital,wght@0,100..900;1,100..900&display=swap');

:root {
  --dark:        #2A2829;
  --light:       #E0E0DB;
  --white:       #FFFFFF;
  --ink:         #000000;

  --font-head:   "Cormorant Garamond", "Orpheus Pro", Georgia, serif;
  --font-body:   "Inter Tight", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

  /* Squarespace fluid-engine gutter, measured at 4vw (45px @ 1118px viewport) */
  --gutter:      max(4vw, 24px);
  --maxw:        1600px;

  /* Header measures 108px tall on the live site; the hero clears it exactly. */
  --header-h:    108px;

  /* Vertical rhythm: sections open 74px below their top edge. */
  --sec-pad:     clamp(3.25rem, 6.6vw, 4.625rem);   /* 74px @ 1118 */

  /* Type scale — px values below are the live site's computed sizes @ 1118px.
     The clamps let each one scale down on small screens the way Squarespace does. */
  --h1:          clamp(2.9rem,  8.03vw, 5.612rem);  /* 89.79px */
  --h2:          clamp(2.2rem,  5.27vw, 3.683rem);  /* 58.93px */
  --h3:          clamp(1.75rem, 3.59vw, 2.509rem);  /* 40.15px */
  --h4:          clamp(1.25rem, 2.15vw, 1.503rem);  /* 24.05px */
  --body:        1.0667rem;                          /* 17.07px */

  --h1-lh:       1.092;   /*  98.05 / 89.79 */
  --h2-lh:       1.221;   /*  71.94 / 58.93 */
  --h3-lh:       1.299;   /*  52.16 / 40.15 */
  --h4-lh:       1.366;   /*  32.86 / 24.05 */
  --body-lh:     1.84;    /*  31.41 / 17.07 */
}

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

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--body);
  line-height: var(--body-lh);
  background: var(--dark);
  color: var(--white);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

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

a { color: inherit; }

h1, h2, h3, h4 {
  font-family: var(--font-head);
  font-weight: 400;
  margin: 0;
  letter-spacing: normal;
}

h1 { font-size: var(--h1); line-height: var(--h1-lh); }
h2 { font-size: var(--h2); line-height: var(--h2-lh); }
h3 { font-size: var(--h3); line-height: var(--h3-lh); }
h4 { font-size: var(--h4); line-height: var(--h4-lh); }

p { margin: 0 0 1.5em; }
p:last-child { margin-bottom: 0; }

/* Skip link — accessibility, matches Squarespace's own "Skip to Content" */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 999;
  padding: 12px 20px;
  background: var(--white);
  color: var(--ink);
  font-size: 0.9rem;
}
.skip-link:focus { left: 8px; top: 8px; }

/* --------------------------------------------------------------------------
   Layout helpers
   -------------------------------------------------------------------------- */
.wrap {
  width: 100%;
  max-width: var(--maxw);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.section { padding-block: var(--sec-pad); }

.section--dark  { background: var(--dark);  color: var(--white); }
.section--light { background: var(--light); color: var(--ink); }

.section--light p { color: var(--ink); }
.section--dark  p { color: var(--white); }

/* Column widths, as measured on the live site. Squarespace's fluid engine
   lays these out on a 24-column grid; expressed as a percentage of the
   content box they come out at these values. */
.col-49      { max-width: 48.93%; }   /* 503px @ 1028px content box */
.col-50      { max-width: 50%;    }   /* 514px */
.col-75      { max-width: 75%;    }   /* 771px */

/* Legacy aliases used by a few pages */
.measure     { max-width: 50%; }
.measure-wide{ max-width: 62ch; }

@media (max-width: 900px) {
  .col-49, .col-50, .col-75, .measure { max-width: 100%; }
}

/* Interior page titles render at the h2 size on the live site, but stay an
   h1 in the markup so search engines still see a proper page heading. */
.page-title { font-size: var(--h2); line-height: var(--h2-lh); }

@media (max-width: 900px) {
  .page-title { margin-left: 0 !important; }
}

/* --------------------------------------------------------------------------
   Header
   Transparent, overlays the first section. Logo left, nav right.
   -------------------------------------------------------------------------- */
.site-header {
  position: absolute;
  inset: 0 0 auto 0;
  z-index: 100;
  background: transparent;
}

/* 33.5 + 41 + 33.5 = 108px, matching the live header exactly */
.site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  padding-block: 2.094rem;
}

.site-title {
  font-family: var(--font-head);
  font-size: clamp(1.35rem, 2.63vw, 1.839rem);   /* 29.42px @ 1118 */
  line-height: 1.394;                            /* 41 / 29.42 */
  text-decoration: none;
  white-space: nowrap;
}

.site-nav ul {
  display: flex;
  align-items: center;
  gap: 1.4rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.site-nav a {
  font-family: var(--font-body);
  font-size: var(--body);
  line-height: 1.4;
  text-decoration: none;
  padding-bottom: 2px;
  border-bottom: 1px solid transparent;
  transition: border-color .18s ease, opacity .18s ease;
}

.site-nav a:hover { border-bottom-color: currentColor; }

/* Squarespace underlines the page you're currently on */
.site-nav a[aria-current="page"] { border-bottom-color: currentColor; }

/* Header colour flips to match whichever section sits behind it */
.site-header--on-dark  { color: var(--white); }
.site-header--on-light { color: var(--ink); }

/* Mobile nav toggle */
.nav-toggle {
  display: none;
  appearance: none;
  background: none;
  border: 0;
  color: inherit;
  cursor: pointer;
  padding: 8px;
  margin-right: -8px;
}
.nav-toggle span {
  display: block;
  width: 26px;
  height: 1.5px;
  background: currentColor;
  transition: transform .25s ease, opacity .2s ease;
}
.nav-toggle span + span { margin-top: 7px; }
.nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(8.5px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-8.5px) rotate(-45deg); }

@media (max-width: 900px) {
  .nav-toggle { display: block; }

  .site-nav {
    position: fixed;
    inset: 0;
    background: var(--dark);
    color: var(--white);
    display: grid;
    place-items: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity .28s ease, visibility .28s ease;
  }
  .site-nav[data-open="true"] { opacity: 1; visibility: visible; }

  .site-nav ul {
    flex-direction: column;
    gap: 1.75rem;
    text-align: center;
  }
  .site-nav a { font-size: 1.5rem; }

  /* Keep the toggle clickable above the overlay */
  .nav-toggle { position: relative; z-index: 101; }
  .site-header[data-nav-open="true"] { color: var(--white); }
}

/* --------------------------------------------------------------------------
   Hero
   -------------------------------------------------------------------------- */
/* The live hero is 648px tall. Its content box starts below the 108px header
   and the heading is vertically centred in what's left — which lands the H1
   at y=182 with a 74px gap underneath. */
.hero {
  background: var(--dark);
  color: var(--white);
  display: flex;
  align-items: center;
  padding-top: var(--header-h);
  min-height: 648px;
}

.hero--light { background: var(--light); color: var(--ink); }

.hero h1 { max-width: 75%; }   /* 771px @ 1028px content box */

@media (max-width: 900px) {
  .hero { min-height: 520px; }
  .hero h1 { max-width: 100%; }
}

/* Page heroes on interior pages sit a little shorter */
.hero--page { min-height: 560px; align-items: center; }

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */
/* Live footer: 305px tall, tagline 24.05px/32.86 at 75% width starting 80px in */
.site-footer {
  background: var(--light);
  color: var(--ink);
  padding-block: clamp(3.25rem, 7.15vw, 5rem);   /* 80px @ 1118 */
}

.site-footer__tagline {
  font-family: var(--font-head);
  font-size: var(--h4);
  line-height: var(--h4-lh);
  max-width: 75%;
  margin: 0 0 1.6rem;
}

.site-footer__meta {
  font-size: 0.98rem;      /* 15.68px */
  line-height: 1.84;
  margin: 0;
}

@media (max-width: 900px) {
  .site-footer__tagline { max-width: 100%; }
}

/* --------------------------------------------------------------------------
   Forms
   Squarespace renders label above field, 2-up for first/last name.
   -------------------------------------------------------------------------- */
.form { max-width: 560px; }

.form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.25rem;
}

@media (max-width: 600px) {
  .form__row { grid-template-columns: 1fr; }
}

.form__group { margin-bottom: 1.5rem; }

.form__legend {
  display: block;
  font-size: var(--body);
  margin-bottom: .75rem;
}

.form label {
  display: block;
  font-size: var(--body);
  margin-bottom: .4rem;
}

.form .req {
  opacity: .6;
  font-size: .9em;
  margin-left: .25rem;
}

.form input,
.form textarea {
  width: 100%;
  font-family: var(--font-body);
  font-size: var(--body);
  padding: .7rem .75rem;
  background: #FBFBFA;
  color: var(--ink);
  border: 1px solid var(--ink);
  border-radius: 0;
}

/* On dark sections Squarespace drops the visible border */
.section--dark .form input,
.section--dark .form textarea { border-color: transparent; }

.form input:focus,
.form textarea:focus {
  outline: 2px solid currentColor;
  outline-offset: 1px;
}

.form textarea { min-height: 105px; resize: vertical; }

.form__submit {
  appearance: none;
  font-family: var(--font-body);
  font-size: var(--body);
  padding: .85rem 1.9rem;
  background: var(--white);
  color: var(--ink);
  border: 1px solid var(--ink);
  border-radius: 0;
  cursor: pointer;
  transition: background .18s ease, color .18s ease;
}
.form__submit:hover { background: var(--ink); color: var(--white); }
.form__submit[disabled] { opacity: .55; cursor: default; }

.section--dark .form__submit { border-color: var(--white); }
.section--dark .form__submit:hover { background: var(--dark); color: var(--white); }

.form__status {
  margin-top: 1.25rem;
  font-size: var(--body);
  min-height: 1.5em;
}
.form__status[data-state="error"] { color: #C0392B; }
.section--dark .form__status[data-state="error"] { color: #F1948A; }

/* Honeypot — hidden from humans, catches naive bots */
.form__hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* --------------------------------------------------------------------------
   Accordion  (Why Manage Deer?)
   -------------------------------------------------------------------------- */
.accordion { max-width: 900px; margin-top: 3rem; }

.accordion__item { border-top: 1px solid currentColor; }
.accordion__item:last-child { border-bottom: 1px solid currentColor; }

.accordion__trigger {
  appearance: none;
  width: 100%;
  display: flex;
  align-items: center;
  gap: 1.25rem;
  background: none;
  border: 0;
  padding: 1.5rem 0;
  color: inherit;
  cursor: pointer;
  text-align: left;
  font-family: var(--font-head);
  font-size: clamp(1.25rem, 2.2vw, 1.6rem);
  line-height: 1.3;
}

.accordion__icon {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  transition: transform .3s ease;
}
.accordion__trigger[aria-expanded="true"] .accordion__icon { transform: rotate(180deg); }

.accordion__panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows .32s ease;
}
.accordion__panel[data-open="true"] { grid-template-rows: 1fr; }

.accordion__panel > div { overflow: hidden; }

.accordion__body {
  padding: 0 0 1.75rem 46px;
  max-width: 68ch;
}
.accordion__panel[data-open="true"] .accordion__body { padding-top: .25rem; }

.accordion__body a { text-decoration: underline; text-underline-offset: 3px; }

blockquote {
  margin: 1.25rem 0 0;
  padding: 0;
  font-style: italic;
}

@media (max-width: 600px) {
  .accordion__body { padding-left: 0; }
}

/* --------------------------------------------------------------------------
   Wave divider  (bottom of the light section on Why Manage Deer?)
   -------------------------------------------------------------------------- */
.wave {
  display: block;
  width: 100%;
  height: clamp(48px, 7vw, 90px);
  background: var(--light);
  color: var(--dark);
  margin-bottom: -1px;
}
.wave svg { display: block; width: 100%; height: 100%; }

/* --------------------------------------------------------------------------
   Team — the live page is a free-form Squarespace fluid-engine layout:
   three columns of unequal width, each cascading further down than the last,
   with Carson stacked beneath Justin. Column positions below are measured
   as percentages of the 1028px content box at a 1118px viewport.

     Luke     left 12.45%   width 16.25%
     Brandon  left 32.10%   width 16.25%   (starts 84px lower)
     Justin   left 51.70%   width 35.90%   (starts 149px lower)
     Carson   same column as Justin
   -------------------------------------------------------------------------- */
.team {
  display: grid;
  /* Percentages, not fr: fr would stretch to fill the row and widen every
     column. These add up to 87.6%, leaving the same right margin as the
     live page. */
  grid-template-columns: 12.45% 16.25% 3.4% 16.25% 3.35% 35.9%;
  align-items: start;
  margin-top: clamp(6rem, 25.3vw, 17.7rem);   /* 283px @ 1118 */
}

.team__col { min-width: 0; }
.team__col--1 { grid-column: 2; }
.team__col--2 { grid-column: 4; margin-top: clamp(1.5rem, 7.5vw, 5.25rem); }   /*  84px */
.team__col--3 { grid-column: 6; margin-top: clamp(2.5rem, 13.3vw, 9.31rem); }  /* 149px */

.team__member h3 { margin-bottom: .6rem; }
.team__member p  { font-size: var(--body); }

/* Carson sits well below Justin on the live page */
.team__col--3 .team__member + .team__member { margin-top: clamp(4rem, 58.9vw, 41.15rem); }

/* The live team headings render at the h4 size, not h3 */
.team__member h3 { font-size: var(--h4); line-height: var(--h4-lh); }

@media (max-width: 1000px) {
  .team { grid-template-columns: 1fr 1fr; column-gap: 2.5rem; row-gap: 3rem; }
  .team__col--1 { grid-column: 1; }
  .team__col--2 { grid-column: 2; margin-top: 4rem; }
  .team__col--3 { grid-column: 1 / -1; margin-top: 2rem; display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem; }
  .team__col--3 .team__member + .team__member { margin-top: 0; }
}

@media (max-width: 620px) {
  .team { grid-template-columns: 1fr; row-gap: 2.5rem; }
  .team__col--1, .team__col--2, .team__col--3 { grid-column: 1; margin-top: 0; }
  .team__col--3 { display: block; }
  .team__col--3 .team__member + .team__member { margin-top: 2.5rem; }
}

/* --------------------------------------------------------------------------
   Carousel  (Government / municipal services)
   -------------------------------------------------------------------------- */
.carousel { position: relative; margin-top: clamp(3rem, 7vw, 5rem); }

.carousel__track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, calc((100% - 2 * 2.5rem) / 3));
  gap: 2.5rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  padding-bottom: .5rem;
}
.carousel__track::-webkit-scrollbar { display: none; }

.carousel__slide { scroll-snap-align: start; }
.carousel__slide h3 { margin-bottom: 1.25rem; }
.carousel__slide p  { font-size: var(--body); }

.carousel__nav {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 2.5rem;
}

.carousel__btn {
  appearance: none;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  border: 0;
  background: rgba(42, 40, 41, .45);
  color: var(--white);
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: background .18s ease, opacity .18s ease;
}
.carousel__btn:hover { background: rgba(42, 40, 41, .7); }
.carousel__btn[disabled] { opacity: .3; cursor: default; }

.carousel__count {
  font-size: var(--body);
  margin-left: .5rem;
  opacity: .75;
}

@media (max-width: 1000px) {
  .carousel__track { grid-auto-columns: minmax(0, calc((100% - 2.5rem) / 2)); }
}
@media (max-width: 680px) {
  .carousel__track { grid-auto-columns: 82%; }
}

/* --------------------------------------------------------------------------
   Blog index
   -------------------------------------------------------------------------- */
/* Two columns of 479px with a 70px gutter @ 1118px viewport (479+70+479=1028) */
.blog-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 6.81%;                      /* 70 / 1028 */
  row-gap: clamp(3rem, 8vw, 5.5rem);
  margin-top: clamp(2rem, 6vw, 4rem);
}

@media (max-width: 760px) {
  .blog-grid { grid-template-columns: 1fr; }
}

.post-card { text-align: center; }

.post-card__thumb {
  aspect-ratio: 484 / 324;    /* measured on the live cards */
  object-fit: cover;
  width: 100%;
  margin-bottom: 2rem;
  background: rgba(255, 255, 255, .05);
}

.post-card__date {
  font-size: var(--body);     /* 17.07px */
  margin: 0 0 1rem;
}

/* Card titles render at 40.15px / 56.21 line-height, centred */
.post-card__title {
  font-size: var(--h3);
  line-height: 1.4;
  margin: 0 0 1.5rem;
}

.post-card__excerpt {
  font-size: var(--body);
  margin: 0 0 1.5rem;
}

.post-card__more {
  display: inline-block;
  font-size: 0.98rem;         /* 15.68px */
  text-decoration: none;
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
  transition: opacity .18s ease;
}
.post-card__more:hover { opacity: .7; }

/* --------------------------------------------------------------------------
   Single blog post
   -------------------------------------------------------------------------- */
/* The live post column sits at 22.5% in from the content edge and runs 55%
   wide (left=276, width=566 @ 1118px viewport). */
.post {
  padding-top: calc(var(--header-h) + var(--sec-pad));
  padding-bottom: clamp(4rem, 9vw, 7rem);
}

.post__col {
  margin-left: 22.47%;    /* 231 / 1028 */
  max-width: 55.06%;      /* 566 / 1028 */
}

@media (max-width: 900px) {
  .post__col { margin-left: 0; max-width: 100%; }
}

.post__meta {
  font-size: var(--body);
  margin: 0 0 1.5rem;
  display: flex;
  align-items: center;
  gap: .6rem;
}
.post__meta .dot { opacity: .7; }

/* Post titles use a looser 1.4 line-height than the homepage hero */
.post__title {
  line-height: 1.4;
  margin-bottom: clamp(2.5rem, 5vw, 3.5rem);
}

.post__body {
  font-size: var(--body);
  line-height: var(--body-lh);
}
.post__body a { text-decoration: underline; text-underline-offset: 3px; word-break: break-word; }
.post__body img { margin: 2.5rem 0; }
.post__body h4 { font-size: 1.35rem; margin: 2rem 0 .75rem; }
.post__body ul { padding-left: 1.25rem; margin: 0 0 1.5em; }
.post__body li { margin-bottom: .5em; }

.post__back {
  display: inline-block;
  margin-top: 3.5rem;
  font-size: var(--body);
  text-decoration: none;
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
}

/* --------------------------------------------------------------------------
   Scroll-in fade — the live site fades content up as it enters the viewport
   -------------------------------------------------------------------------- */
.reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity .7s ease, transform .7s ease;
}
.reveal.is-visible { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal { opacity: 1; transform: none; transition: none; }
  .accordion__panel, .accordion__icon, .carousel__track { transition: none; scroll-behavior: auto; }
}
