/* Several page stylesheets restyle bare h2/h3/p with !important inside their
   own .typography wrappers (page-trust-box.css, page-sdg-strategy.css,
   page-hi-rise.css). An !important declaration only loses to another
   !important one, so the card states its own layout the same way; the block's
   three-class selectors outrank those page rules. */
.news-custom-block {
  display: flex !important;
  background-color: var(--color-surface-card) !important;
  border: 2px solid var(--color-border) !important;
  border-radius: 0 !important;
  overflow: hidden !important;
  box-shadow: 0 4px 6px rgba(var(--color-black--rgb), 0.05) !important;
  transition:
    transform 0.3s ease,
    box-shadow 0.3s ease,
    border-color 0.3s ease !important;
  margin-bottom: 30px !important;
  max-width: 100% !important;
  font-family: "Roboto", sans-serif !important;
  box-sizing: border-box !important;
  position: relative !important;
  cursor: pointer !important;
}

.news-custom-block *,
.news-custom-block *::before,
.news-custom-block *::after {
  box-sizing: border-box !important;
}

.news-custom-block:hover {
  transform: translateY(-5px) !important;
  box-shadow: 0 12px 20px rgba(var(--color-black--rgb), 0.1) !important;
  border-color: var(--color-border-strong) !important;
}

.events-custom-block:hover {
  border-color: var(--color-highlight) !important;
}

.news-custom-block .news-image {
  flex: 0 0 280px !important;
  width: 280px !important;
  position: relative !important;
  aspect-ratio: 16 / 9 !important;
  background-color: var(--color-bg-secondary) !important;
  padding: 5px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: hidden !important;
}

.news-custom-block .news-image img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}

.news-custom-block .news-content {
  padding: 22px 28px !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  gap: 16px !important;
  flex: 1 !important;
}

/* The block ships globally and early, so page stylesheets that restyle h3/p
   would otherwise win on source order. Every text property the block relies on
   is declared here on its own classes, scoped to the block root. */
.news-custom-block.news-custom-block .news-content .news-block-title {
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  font-family: "Roboto", sans-serif !important;
  font-size: 1.25rem !important;
  font-weight: 500 !important;
  line-height: 116% !important;
  letter-spacing: normal !important;
  text-align: left !important;
  text-transform: none !important;
  color: var(--color-text-heading) !important;
}

/* Heading sizes follow typography.css so the card reads like page text */
@media (min-width: 1200px) {
  .news-custom-block.news-custom-block .news-content .news-block-title--h2 {
    font-size: 1.375rem !important;
  }
  .news-custom-block.news-custom-block .news-content .news-block-title--h3 {
    font-size: 1.25rem !important;
  }
  .news-custom-block.news-custom-block .news-content .news-block-title--h4 {
    font-size: 1.3rem !important;
  }
}

@media (min-width: 1540px) {
  .news-custom-block.news-custom-block .news-content .news-block-title--h2 {
    font-size: 1.5rem !important;
  }
}

@media (max-width: 1199px) {
  .news-custom-block.news-custom-block .news-content .news-block-title--h2 {
    font-size: 1.375rem !important;
  }
  .news-custom-block.news-custom-block .news-content .news-block-title--h3 {
    font-size: 1.125rem !important;
  }
  .news-custom-block.news-custom-block .news-content .news-block-title--h4 {
    font-size: 1rem !important;
  }
}

@media (max-width: 899px) {
  .news-custom-block.news-custom-block .news-content .news-block-title--h2 {
    font-size: 1.25rem !important;
  }
}

.news-custom-block.news-custom-block .news-content .news-block-title::before,
.news-custom-block.news-custom-block .news-content .news-block-title::after,
.news-custom-block.news-custom-block .news-content .news-block-excerpt::before,
.news-custom-block.news-custom-block .news-content .news-block-excerpt::after {
  content: none !important;
}

.news-custom-block.news-custom-block .news-content .news-block-title .news-block-title-link {
  color: inherit !important;
  font: inherit !important;
  text-decoration: none !important;
  background: none !important;
  transition: color 0.2s ease !important;
}

.news-custom-block.news-custom-block .news-content .news-block-title .news-block-title-link:hover {
  color: var(--color-link) !important;
}

.news-custom-block.news-custom-block .news-content .news-block-excerpt {
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  font-family: "Roboto", sans-serif !important;
  font-size: clamp(1rem, 0.95rem + 0.25vw, 1.125rem) !important;
  font-weight: 400 !important;
  line-height: 1.6 !important;
  overflow-wrap: break-word !important;
  letter-spacing: normal !important;
  text-align: left !important;
  text-transform: none !important;
  text-indent: 0 !important;
  color: var(--color-text-primary) !important;
  white-space: normal !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 3 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}

/* Without a cover the content column simply takes the whole card */
.news-custom-block--no-image .news-content {
  flex: 1 1 100% !important;
  width: 100% !important;
}

.news-custom-block.news-custom-block .news-content .news-link {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 9px 24px !important;
  background-color: var(--color-blue-100) !important;
  color: var(--color-white) !important;
  font-weight: 500 !important;
  text-decoration: none !important;
  border-radius: 0 !important;
  align-self: flex-start !important;
  text-transform: uppercase !important;
  font-size: 0.875rem !important;
  letter-spacing: 0.5px !important;
  min-height: 38px !important;
  user-select: none !important;
}

.news-custom-block.news-custom-block:hover .news-content .news-link {
  transition: 0.3s background-color ease-in !important;
  background-color: var(--color-blue-200) !important;
  font-weight: 600 !important;
}

/* Navy on the brand yellow in both themes: the button does not sit on the page. */
.events-custom-block.events-custom-block:hover .news-content .events-link {
  transition: 0.3s background-color ease-in !important;
  background-color: var(--color-highlight) !important;
  color: var(--color-blue-200) !important;
  font-weight: 600 !important;
}

/* The title link is stretched over the whole card: one anchor per card keeps
   the anchor text meaningful and gives keyboard users a single stop */
.news-custom-block.news-custom-block .news-content .news-block-title .news-block-title-link::after {
  content: "" !important;
  position: absolute !important;
  inset: 0 !important;
  z-index: 1 !important;
}

.news-custom-block.news-custom-block .news-content .news-block-title .news-block-title-link:focus-visible::after {
  outline: 3px solid var(--color-link) !important;
  outline-offset: -3px !important;
}

/* Meta line: what this card is, and how fresh it is */
/* Flex, not block: as a block the paragraph keeps a line-height strut from the
   inherited page font size, and the taller strut showed up as a gap above the
   date. The row also carries the date's own font size for the same reason. */
.news-custom-block.news-custom-block .news-content .news-block-meta {
  display: flex !important;
  align-items: center !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  font-family: "Roboto", sans-serif !important;
  font-size: 0.875rem !important;
  line-height: 1.2 !important;
  text-align: left !important;
  text-indent: 0 !important;
}

.news-custom-block.news-custom-block .news-content .news-block-date {
  font-family: "Roboto", sans-serif !important;
  font-size: 0.875rem !important;
  font-weight: 400 !important;
  line-height: 1.2 !important;
  color: var(--color-text-secondary) !important;
}

/* Without a cover the card keeps a colour cue instead of looking unfinished */
.news-custom-block--no-image {
  border-left-width: 6px !important;
  border-left-color: var(--color-accent) !important;
}

.news-custom-block--no-image.events-custom-block {
  border-left-color: var(--color-highlight) !important;
}

@media (prefers-reduced-motion: reduce) {
  .news-custom-block,
  .news-custom-block:hover {
    transition: none !important;
    transform: none !important;
  }
}

/* Editor & Placeholder Styles */
.news-custom-block--placeholder {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 40px 20px !important;
  background-color: var(--color-bg-secondary) !important;
  border: 2px dashed var(--color-border) !important;
  text-align: center !important;
  box-shadow: none !important;
  cursor: pointer !important;
}

.news-custom-block--placeholder:hover {
  transform: none !important;
  border-color: var(--color-accent) !important;
}

.news-custom-block--placeholder .news-block-placeholder-content {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 8px !important;
}

.news-custom-block--placeholder .dashicons {
  font-size: 36px !important;
  width: 36px !important;
  height: 36px !important;
  color: var(--color-accent) !important;
}

.events-custom-block.news-custom-block--placeholder .dashicons {
  color: var(--color-highlight) !important;
}

.news-custom-block--placeholder .news-block-placeholder-title {
  font-size: 1.1rem !important;
  font-weight: 700 !important;
  color: var(--color-text-heading) !important;
  margin: 0 !important;
}

.news-custom-block--placeholder .news-block-placeholder-desc {
  font-size: 0.875rem !important;
  color: var(--color-text-secondary) !important;
  margin: 0 !important;
}

/* Gutenberg Editor Compatibility. Typography is not repeated here any more -
   the rules above already carry it into the editor. */
.editor-styles-wrapper .news-custom-block {
  margin-top: 15px !important;
  margin-bottom: 25px !important;
}

.editor-styles-wrapper .news-custom-block a {
  text-decoration: none !important;
}

/* The stretched overlay would swallow the click that selects the block */
.editor-styles-wrapper .news-custom-block.news-custom-block .news-content .news-block-title .news-block-title-link::after {
  content: none !important;
}

@media (max-width: 768px) {
  .news-custom-block {
    flex-direction: column !important;
  }

  .news-custom-block .news-image {
    flex: none !important;
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 16 / 9 !important;
  }

  .news-custom-block .news-content {
    padding: 18px 18px !important;
    gap: 12px !important;
  }

  .news-custom-block.news-custom-block .news-content .news-block-title {
    font-size: 1.125rem !important;
    line-height: 116% !important;
  }

  .news-custom-block.news-custom-block .news-content .news-block-excerpt {
    font-size: 0.875rem !important;
    line-height: 1.7 !important;
    -webkit-line-clamp: 3 !important;
  }

  .news-custom-block--no-image {
    border-left-width: 2px !important;
    border-top-width: 6px !important;
    border-top-color: var(--color-accent) !important;
  }

  .news-custom-block--no-image.events-custom-block {
    border-left-color: var(--color-border) !important;
    border-top-color: var(--color-highlight) !important;
  }

  .news-custom-block.news-custom-block .news-content .news-link {
    width: 100% !important;
    text-align: center !important;
    padding: 10px 20px !important;
    font-size: 0.8125rem !important;
    min-height: 44px !important; /* thumb-sized target on touch */
  }
}
