/* Evolve news: one lead story and three compact editorial rows. */
#announcements {
  min-height: 0;
  animation: none;
  scroll-margin-top: var(--nav-height);
  padding: calc(var(--nav-height) + 32px) 0 64px;
}

#announcements .news-inner { display: block; height: auto; }
#announcements .news-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  padding-bottom: 28px;
  margin-bottom: 28px;
}
#announcements .section-title {
  margin-bottom: 0;
  font-size: clamp(2rem, 3.6vw, 3rem);
}
#announcements .news-card {
  min-width: 0;
  display: flex;
  flex-direction: column;
  background: #fff;
  color: #4F6273;
  text-decoration: none;
  overflow: hidden;
}
#announcements .news-media {
  position: relative;
  overflow: hidden;
  aspect-ratio: 16 / 9;
}
#announcements .news-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(0.95) contrast(1.03);
  transition: transform 480ms cubic-bezier(.2,.65,.3,1);
}
#announcements .news-card:is(:hover, :focus-within) .news-media img { transform: scale(1.035); }
#announcements .news-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 24px;
}
#announcements .news-label {
  font-size: 0.6rem;
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #4F6273;
}
#announcements .news-title {
  margin: 0;
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: clamp(1.5rem, 2.1vw, 1.9rem);
  line-height: 1.2;
  color: var(--accent);
}
#announcements .news-excerpt {
  margin: 0;
  font-size: 0.875rem;
  font-weight: 300;
  line-height: 1.65;
  color: #4F6273;
}
#announcements .news-card:focus-within,
#announcements .news-view-all:focus-visible,
#announcements button:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
#announcements .news-view-all {
  flex: 0 0 auto;
  align-items: center;
  gap: 8px;
  padding: 10px 0;
  color: #f5f7fb;
  font-size: 0.8rem;
  line-height: 1.5;
}
#announcements .news-action,
.news-archive .news-action {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  margin-top: auto;
  padding-top: 12px;
  color: var(--accent);
  font-size: 0.75rem;
  font-weight: 400;
  line-height: 1.5;
}
#announcements .news-action > span:not(.news-link-text),
.news-archive .news-action > span:not(.news-link-text) { font-size: 1rem; }
#announcements .news-view-all > span[aria-hidden],
#announcements .news-action > span:not(.news-link-text),
.insights-page .insight-download > span[aria-hidden] {
  font-family: var(--font-sans);
  font-size: 1rem;
  font-weight: 300;
  line-height: 1;
}
#announcements .news-link-text,
.news-archive .news-link-text { position: relative; display: inline-block; }
#announcements .news-link-text::after,
.news-archive .news-link-text::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -2px;
  width: 0%;
  height: 1px;
  background: currentColor;
  border-radius: 999px;
  transition: width 0.25s ease;
}
#announcements .news-view-all:hover .news-link-text::after,
#announcements .news-view-all:focus-visible .news-link-text::after,
#announcements .news-card:hover .news-link-text::after,
#announcements .news-card:focus-within .news-link-text::after,
.news-archive .news-card:hover .news-link-text::after,
.news-archive .news-card:focus-within .news-link-text::after { width: 100%; }

/* Keep homepage action labels aligned while their arrows ease into view. */
#announcements .news-view-all { position: relative; gap: 0; padding-left: 26px; }
#announcements .news-view-all > [aria-hidden] { position: absolute; right: 0; }
#announcements .news-link-text { transition: transform 480ms cubic-bezier(.2,.65,.3,1); }
#announcements .news-view-all > [aria-hidden],
#announcements .news-action > span:not(.news-link-text) {
  opacity: 0;
  transform: translateX(-5px);
  transition: opacity 420ms ease, transform 480ms cubic-bezier(.2,.65,.3,1);
}
#announcements .news-view-all:is(:hover, :focus-visible) .news-link-text { transform: translateX(-26px); }
#announcements .news-view-all:is(:hover, :focus-visible) > [aria-hidden],
#announcements .news-card:is(:hover, :focus-within) .news-action > span:not(.news-link-text) { opacity: 1; transform: translateX(0); }
#announcements .news-action { justify-content: flex-start; gap: 8px; }
#announcements .news-card:is(:hover, :focus-within) .news-action .news-link-text { transform: translateX(2px); }

@media (min-width: 992px) {
  /* News owns its desktop reveal so the shared scroll observer cannot
     hide the whole grid again as the section crosses its threshold. */
  #announcements .news-inner.reveal-on-scroll {
    opacity: 1;
    transform: none;
    transition: none;
    will-change: auto;
  }
  #announcements .news-reveal-ready .news-header,
  #announcements .news-reveal-ready .news-grid .news-card {
    opacity: 0;
    transform: translateY(12px);
    /* The reset happens offscreen and must finish before a quick return. */
    transition: none;
  }
  #announcements .news-reveal-ready.is-news-revealed .news-header,
  #announcements .news-reveal-ready.is-news-cards-revealed .news-grid .news-card {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 1000ms ease-in-out,
                transform 1100ms cubic-bezier(.2, .65, .3, 1);
    transition-delay: var(--news-reveal-delay, 0ms);
  }
  #announcements {
    padding: 48px 0;
  }
  #announcements .news-header {
    padding-bottom: 8px;
    margin-bottom: 16px;
  }
  #announcements .section-title {
    font-size: clamp(2rem, 2.8vw, 2.5rem);
  }
  #announcements .news-grid {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    grid-template-rows: repeat(3, auto);
    gap: 8px 16px;
    align-items: stretch;
  }
  #announcements .news-grid .news-card {
    grid-column: 2;
    display: grid;
    /* Give the width gained from the lead card to photography, not longer copy. */
    grid-template-columns: minmax(0, 1fr) calc(clamp(96px, 9vw, 128px) + 9.09%);
  }

  #announcements .news-grid .news-card.is-lead {
    display: flex;
    grid-column: 1;
    grid-row: 1 / span 3;
  }
  #announcements .news-grid .news-card[hidden] { display: none; }
  #announcements .news-grid .news-media {
    grid-column: 2;
    grid-row: 1;
    aspect-ratio: auto;
    min-height: 144px;
  }
  #announcements .news-grid .news-media img {
    position: absolute;
    inset: 0;
  }
  #announcements .news-grid .news-body {
    grid-column: 1;
    grid-row: 1;
    gap: 8px;
    padding: 16px;
  }
  #announcements .news-grid .news-card:not(.is-lead) .news-action {
    display: none;
  }
  #announcements .news-grid .news-title { font-size: clamp(1.2rem, 1.55vw, 1.55rem); }
  #announcements .news-grid .news-excerpt { font-size: 0.84rem; line-height: 1.6; }
  #announcements .news-grid .is-lead .news-media { aspect-ratio: auto; min-height: 220px; height: clamp(240px, 26vw, 340px); flex: 0 0 auto; }
  #announcements .news-grid .is-lead .news-body { padding: 20px; gap: 10px; flex: 1; }
  #announcements .news-grid .is-lead .news-title { font-size: clamp(1.5rem, 1.9vw, 1.9rem); }
  #announcements .news-grid .is-lead .news-excerpt { font-size: 0.875rem; line-height: 1.65; }
}
/* Large monitors need editorial proportions rather than ever-longer text rows.
   Keep the heading and cards on the same bounded canvas. */
@media (min-width: 1600px) {
  .insights-promo-link { max-width: 1840px; }
  #announcements .news-inner { max-width: 1840px; margin-inline: auto; }
  #announcements .news-grid {
    grid-template-columns: minmax(0, 9fr) minmax(0, 16fr);
  }
  #announcements .news-grid .news-card {
    grid-template-columns: minmax(0, 1fr) minmax(220px, 34.375%);
  }
}

/* A stable frame sized from every card at the current breakpoint. */
@media (min-width: 992px) {
  #announcements .news-grid.news-is-carousel { height: var(--news-cycle-height, auto); grid-template-rows: repeat(3, minmax(0, 1fr)); overflow-anchor: none; }
  /* Paging owns the group fade; do not replay the staggered scroll reveal. */
  #announcements .news-inner .news-grid.is-browsing-news .news-card { opacity: 1; transform: none; transition: none; }
  #announcements .news-grid.news-measuring { position: absolute; left: 0; top: 0; visibility: hidden; pointer-events: none; height: auto; grid-template-rows: auto; align-items: start; }
  #announcements .news-grid.news-measuring .news-card { align-self: start; opacity: 1 !important; visibility: hidden !important; transform: none !important; transition: none !important; }
}
.news-browse { align-items: center; gap: 18px; flex-shrink: 0; }
.news-browse[hidden] { display: none !important; }
.news-browse button {
  display: grid; place-items: center; width: 42px; height: 42px;
  border: 1px solid #ffffff60; border-radius: 50%; background: transparent;
  color: #f5f7fb; font: 300 20px/1 var(--font-sans); transition: background 220ms ease;
}
.news-browse button:hover { background: #ffffff18; }
.news-page { min-width: 32px; color: #f5f7fb; font-size: .75rem; text-align: center; }

/* A separate destination, expressed in Evolve's gold, cream and logomark. */
.insights-promo { background: #7D6C4D; padding: 0; }
.insights-promo-link {
  position: relative; isolation: isolate; overflow: hidden;
  display: flex; align-items: center; justify-content: space-between; gap: 40px;
  width: 100%; margin: auto; padding: 48px var(--side-padding);
  background: #7D6C4D; color: #fff; text-decoration: none;
}
.insights-promo-link::before {
  content: ''; position: absolute; z-index: -1; right: 12%; top: -75%;
  width: 420px; height: 520px; background: #cdbb93; opacity: .26;
  mask: url('../assets/logo-icon.svg') center / contain no-repeat;
  transform: rotate(-9deg); transition: transform 800ms cubic-bezier(.2,.65,.3,1);
}
.insights-promo-link:hover::before { transform: rotate(-5deg) scale(1.04); }

.insights-promo h2 { margin: 10px 0; color: #fff; font: 400 clamp(2rem, 3vw, 3rem)/1.12 var(--font-serif); }
.insights-promo p { margin: 0; color: #f5f1e9; font-size: .9rem; font-weight: 300; }
.insights-promo-action {
  position: relative; display: inline-flex; align-items: center; flex-shrink: 0;
  background: transparent; color: #fff; padding: 10px 0 10px 26px; font-size: .85rem;
}
.insights-promo-action > span:first-child { position: relative; transition: transform 480ms cubic-bezier(.2,.65,.3,1); }
.insights-promo-action > [aria-hidden] { position: absolute; right: 0; opacity: 0; transform: translateX(-5px); transition: opacity 420ms ease, transform 480ms ease; }
.insights-promo-link:is(:hover,:focus-visible) .insights-promo-action > span:first-child { transform: translateX(-26px); }
.insights-promo-link:is(:hover,:focus-visible) .insights-promo-action > [aria-hidden] { opacity: 1; transform: none; }
.insights-promo-action > span:first-child::after {
  content: ''; position: absolute; left: 0; bottom: -4px; width: 0; height: 1px;
  background: currentColor; transition: width 300ms ease;
}
.insights-promo-link:is(:hover,:focus-visible) .insights-promo-action > span:first-child::after { width: 100%; }
.insights-promo-link:focus-visible { outline: 2px solid #0C1929; outline-offset: 5px; }
@media (max-width: 767.98px) {

  .insights-promo-link { padding: 32px var(--side-padding); flex-direction: column; align-items: flex-start; gap: 26px; }
  .insights-promo-action { margin-left: -26px; }
  .insights-promo-link::before { width: 250px; height: 330px; top: 0; right: -100px; opacity: .18; }
}
@media (prefers-reduced-motion: reduce) {
  #announcements .news-grid.is-browsing-news .news-card,
  .insights-promo-link::before, .insights-promo-action > span, .insights-promo-action > span::after { transition: none !important; }
}

/* Stack every mobile slide in one grid cell, so the longest unchanged copy
   determines a stable carousel height without JavaScript height locks. */
@media (max-width: 991.98px) {
  #announcements { padding-top: 40px; padding-bottom: 40px; }
  #announcements .news-header { padding-bottom: 20px; margin-bottom: 24px; }
  #announcements .news-carousel { position: relative; padding: 0 0 60px; }
  #announcements .news-carousel .carousel-inner {
    display: grid;
    width: 100%;
    padding: 0;
    overflow: hidden;
  }
  #announcements .news-carousel .carousel-item {
    display: flex;
    visibility: hidden;
    grid-area: 1 / 1;
    float: none;
    width: 100%;
    margin: 0;
    gap: 0;
    align-items: stretch;
  }
  #announcements .news-carousel .carousel-item.active,
  #announcements .news-carousel .carousel-item-next,
  #announcements .news-carousel .carousel-item-prev { visibility: visible; }
  #announcements .news-carousel .news-card { width: 100%; }
  #announcements .news-carousel .news-body { padding: 20px; gap: 10px; }
  #announcements .news-carousel .carousel-control-prev,
  #announcements .news-carousel .carousel-control-next {
    display: inline-flex !important;
    top: auto;
    bottom: 0;
    width: 44px;
    height: 44px;
    border: 1px solid rgba(245, 247, 251, 0.4);
    border-radius: 50%;
    opacity: 1;
    z-index: 2;
  }
  #announcements .news-carousel .carousel-control-prev { left: 0; right: auto; }
  #announcements .news-carousel .carousel-control-next { right: 0; }
  #announcements .news-carousel .carousel-indicators {
    position: absolute;
    inset: auto 52px 0;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 44px;
    gap: 0;
    margin: 0;
    padding: 0;
    transform: none;
  }
  #announcements .news-carousel .carousel-indicators button {
    width: 6px;
    height: 6px;
    margin: 0;
    border: solid transparent;
    border-width: 19px 9px;
    border-radius: 0;
    background: rgba(245, 247, 251, 0.4);
    background-clip: padding-box;
    box-sizing: content-box;
    opacity: 1;
  }
  #announcements .news-carousel .carousel-indicators .active { width: 18px; background-color: #f5f7fb; }
}
@media (min-width: 576px) and (max-width: 991.98px) {
  #announcements .news-mobile { max-width: 680px; margin: 0 auto; }
  #announcements .news-media { aspect-ratio: 2 / 1; }
}
@media (prefers-reduced-motion: reduce) {
  #announcements { animation: none; }
  #announcements .news-reveal-ready .news-header,
  #announcements .news-reveal-ready .news-grid .news-card,
  #announcements .news-reveal-ready.is-news-revealed .news-header,
  #announcements .news-reveal-ready.is-news-cards-revealed .news-grid .news-card {
    opacity: 1;
    transform: none;
    transition: none;
  }
  #announcements .news-media img,
  #announcements .news-carousel .carousel-item { transition: none; }
  #announcements .news-link-text,
  #announcements .news-view-all > [aria-hidden],
  #announcements .news-action > span,
  #announcements .news-link-text::after,
  .news-archive .news-link-text::after { transition: none; }
}

/* The full news archive shares the existing Insights page grid. */
.news-archive { scroll-margin-top: calc(var(--nav-height) + 24px); }
.news-archive .news-card { display: flex; flex-direction: column; min-width: 0; color: #4F6273; }
.news-archive .news-media { aspect-ratio: 3 / 2; overflow: hidden; background: #e8e7e3; }
.news-archive .news-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.news-archive .news-body { display: flex; flex-direction: column; gap: 12px; flex: 1; padding-top: 23px; }
.news-archive .news-label { font-size: 0.6rem; font-weight: 500; letter-spacing: 0.16em; text-transform: uppercase; }
.news-archive .news-title { margin: 0; color: var(--accent); font-size: clamp(1.45rem, 2vw, 1.9rem); line-height: 1.23; }
.news-archive .news-excerpt { margin: 0; font-size: 0.84rem; font-weight: 300; line-height: 1.8; }
.news-archive .news-action { padding-top: 16px; }
#announcements .news-excerpt time { font-style: italic; }
#announcements .news-insight-card { position: relative; }
#announcements .news-card-link { position: absolute; inset: 0; z-index: 1; }
#announcements .news-regions { display: flex; flex-wrap: wrap; gap: 8px; font-size: .75rem; font-weight: 300; line-height: 1.5; }
#announcements .news-regions a { position: relative; z-index: 2; color: #4f6273; text-decoration: none; transition: color 300ms ease; }
#announcements .news-regions a:is(:hover, :focus-visible) { color: var(--accent, #7d6c4d); }
