/* Avoid clipped outlines on common wrappers. */
:where(.lgd-card, .lgd-teaser, .localgov-card, .localgov-teaser, .ti-card, .form-item, .form-wrapper, .form-type-checkbox, .form-type-radio) {
  outline-offset: var(--ti-focus-ring-offset);
}

:where(.menu a, .menu button) {
  text-underline-offset: var(--ti-underline-offset);
  text-decoration-thickness: var(--ti-underline-thickness);
}

@media (hover: hover) and (pointer: fine) {
  :where(.menu a:hover, .menu button:hover) {
    text-decoration-line: underline;
  }
}

:where(.menu a:focus-visible, .menu button:focus-visible) {
  text-decoration-line: underline;
}

/* Active/current state: persistent cue without layout shift */
:where(.menu a.is-active, .menu a[aria-current="page"], .menu a[aria-current="true"]) {
  text-decoration-line: underline;
}

:where(.lgd-card, .lgd-teaser, .localgov-card, .localgov-teaser, .ti-card) {
  transition: box-shadow var(--ti-interaction-transition), filter var(--ti-interaction-transition);
}

@media (hover: hover) and (pointer: fine) {
  :where(.lgd-card:hover, .lgd-teaser:hover, .localgov-card:hover, .localgov-teaser:hover, .ti-card:hover) {
    box-shadow: var(--ti-tile-shadow-hover);
  }
}

:where(.lgd-card:focus-within, .lgd-teaser:focus-within, .localgov-card:focus-within, .localgov-teaser:focus-within, .ti-card:focus-within) {
  box-shadow: var(--ti-tile-shadow-focus);
}

@media (hover: hover) and (pointer: fine) {
  :where(.lgd-card:hover img, .lgd-teaser:hover img, .localgov-card:hover img, .localgov-teaser:hover img, .ti-card:hover img) {
    filter: var(--ti-tile-image-hover-filter);
  }
}

:where(.lgd-card:focus-within img, .lgd-teaser:focus-within img, .localgov-card:focus-within img, .localgov-teaser:focus-within img, .ti-card:focus-within img) {
  filter: var(--ti-tile-image-hover-filter);
}

:where(
  .pager__item a,
  .tabs a,
  .localgov-tabs a,
  .lgd-tabs a,
  .view-more a,
  .views-more-link,
  .more-link a
) {
  text-underline-offset: var(--ti-underline-offset);
  text-decoration-thickness: var(--ti-underline-thickness);
}

@media (hover: hover) and (pointer: fine) {
  :where(
    .pager__item a:hover,
    .tabs a:hover,
    .localgov-tabs a:hover,
    .lgd-tabs a:hover,
    .view-more a:hover,
    .views-more-link:hover,
    .more-link a:hover
  ) {
    text-decoration-line: underline;
  }
}

:where(
  .pager__item a:focus-visible,
  .tabs a:focus-visible,
  .localgov-tabs a:focus-visible,
  .lgd-tabs a:focus-visible,
  .view-more a:focus-visible,
  .views-more-link:focus-visible,
  .more-link a:focus-visible
) {
  text-decoration-line: underline;
}

:where(
  .pager__item button,
  .tabs button,
  .localgov-tabs button,
  .lgd-tabs button,
  .accordion button,
  .accordion__button,
  .accordion__trigger,
  button.accordion-toggle,
  .view-more button,
  .view-more__trigger,
  .more-link button
):where(:not([disabled])) {
  transition: box-shadow var(--ti-interaction-transition), transform var(--ti-interaction-transition), filter var(--ti-interaction-transition);
}

@media (hover: hover) and (pointer: fine) {
  :where(
    .pager__item button:hover,
    .tabs button:hover,
    .localgov-tabs button:hover,
    .lgd-tabs button:hover,
    .accordion button:hover,
    .accordion__button:hover,
    .accordion__trigger:hover,
    button.accordion-toggle:hover,
    .view-more button:hover,
    .view-more__trigger:hover,
    .more-link button:hover
  ) {
    box-shadow: var(--ti-tile-shadow-hover);
  }
}

:where(
  .pager__item button:active,
  .tabs button:active,
  .localgov-tabs button:active,
  .lgd-tabs button:active,
  .accordion button:active,
  .accordion__button:active,
  .accordion__trigger:active,
  button.accordion-toggle:active,
  .view-more button:active,
  .view-more__trigger:active,
  .more-link button:active
) {
  transform: translateY(1px);
  filter: var(--ti-active-filter);
}

:root {
  /* SVG URLs (inline; no extra assets required). */
  --ti-arrow-right: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' d='M5 12h12M13 6l6 6-6 6'/%3E%3C/svg%3E");
  --ti-arrow-up: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' d='M12 19V7M6 13l6-6 6 6'/%3E%3C/svg%3E");
  --ti-arrow-down: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' d='M12 5v12M6 11l6 6 6-6'/%3E%3C/svg%3E");

  /* Default accent used by “black” buttons. */
  --ti-btn-accent: var(--color-accent);

  /* Default sizing (big). */
  --ti-btn-pad-block: 0.75rem;
  --ti-btn-pad-inline: 1.375rem;
  --ti-btn-circle-size: 2.75rem;
  --ti-btn-icon-size: 1.25rem;
  --ti-btn-circle-inset: 0.375rem;
}

/* ── Base: pill button + right-side circle + arrow (anchors & buttons) ──── */
:where(a, button):where(
  .link--big_btn_colour-style,
  .link--small_btn_colour-style,
  .link--big_btn_colour_inv-style,
  .link--small_btn_colour_inv-style,
  .link--big_btn_black-style,
  .link--small_btn_black-style,
  .link--view_less_btn_big-style,
  .link--view_less_btn_big_small-style,
  .link--view_less_btn_small-style,
  .link--view_more_btn_big-style,
  .link--view_more_btn_small-style
) {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  vertical-align: middle;

  font: inherit;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;

  border: 0;
  border-radius: 9999px;
  background-color: var(--ti-btn-bg, transparent);
  color: var(--ti-btn-fg, currentColor);

  padding-block: var(--ti-btn-pad-block);
  padding-inline-start: var(--ti-btn-pad-inline);
  padding-inline-end: calc(var(--ti-btn-pad-inline) + var(--ti-btn-circle-size) + var(--ti-btn-circle-inset));

  text-decoration: none;
}

:where(a, button):where(
  .link--big_btn_colour-style,
  .link--small_btn_colour-style,
  .link--big_btn_colour_inv-style,
  .link--small_btn_colour_inv-style,
  .link--big_btn_black-style,
  .link--small_btn_black-style,
  .link--view_less_btn_big-style,
  .link--view_less_btn_big_small-style,
  .link--view_less_btn_small-style,
  .link--view_more_btn_big-style,
  .link--view_more_btn_small-style
)::after {
  content: "";
  position: absolute;
  inset-block-start: 50%;
  inset-inline-end: var(--ti-btn-circle-inset);
  transform: translateY(-50%);
  width: var(--ti-btn-circle-size);
  height: var(--ti-btn-circle-size);
  border-radius: 9999px;
  background-color: var(--ti-btn-circle-bg, transparent);
  pointer-events: none;
}

:where(a, button):where(
  .link--big_btn_colour-style,
  .link--small_btn_colour-style,
  .link--big_btn_colour_inv-style,
  .link--small_btn_colour_inv-style,
  .link--big_btn_black-style,
  .link--small_btn_black-style,
  .link--view_less_btn_big-style,
  .link--view_less_btn_big_small-style,
  .link--view_less_btn_small-style,
  .link--view_more_btn_big-style,
  .link--view_more_btn_small-style
)::before {
  content: "";
  position: absolute;
  inset-block-start: 50%;
  inset-inline-end: calc(var(--ti-btn-circle-inset) + (var(--ti-btn-circle-size) - var(--ti-btn-icon-size)) / 2);
  transform: translateY(-50%);
  width: var(--ti-btn-icon-size);
  height: var(--ti-btn-icon-size);
  background-color: var(--ti-btn-icon-color, var(--color-black));
  -webkit-mask-image: var(--ti-btn-icon, var(--ti-arrow-right));
  mask-image: var(--ti-btn-icon, var(--ti-arrow-right));
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
  pointer-events: none;
}

/* Prevent global underline behaviour from applying to “button” links. */
:where(a):where(
  .link--big_btn_colour-style,
  .link--small_btn_colour-style,
  .link--big_btn_colour_inv-style,
  .link--small_btn_colour_inv-style,
  .link--big_btn_black-style,
  .link--small_btn_black-style,
  .link--view_less_btn_big-style,
  .link--view_less_btn_big_small-style,
  .link--view_less_btn_small-style,
  .link--view_more_btn_big-style,
  .link--view_more_btn_small-style
):where(:hover, :focus, :focus-visible, :active) {
  text-decoration: none;
}

@media (hover: hover) and (pointer: fine) {
  :where(a, button):where(
    .link--big_btn_colour-style,
    .link--small_btn_colour-style,
    .link--big_btn_colour_inv-style,
    .link--small_btn_colour_inv-style,
    .link--big_btn_black-style,
    .link--small_btn_black-style,
    .link--view_less_btn_big-style,
    .link--view_less_btn_big_small-style,
    .link--view_less_btn_small-style,
    .link--view_more_btn_big-style,
    .link--view_more_btn_small-style
  ):hover {
    box-shadow: var(--ti-tile-shadow-hover);
  }
}

:where(a, button):where(
  .link--big_btn_colour-style,
  .link--small_btn_colour-style,
  .link--big_btn_colour_inv-style,
  .link--small_btn_colour_inv-style,
  .link--big_btn_black-style,
  .link--small_btn_black-style,
  .link--view_less_btn_big-style,
  .link--view_less_btn_big_small-style,
  .link--view_less_btn_small-style,
  .link--view_more_btn_big-style,
  .link--view_more_btn_small-style
):active {
  transform: translateY(1px);
  filter: var(--ti-active-filter);
}

/* ── Size variants (override sizing vars; applies to <a>, <button>, <input>) */
:where(
  .link--small_btn_colour-style,
  .link--small_btn_colour_inv-style,
  .link--small_btn_black-style,
  .link--view_less_btn_big_small-style,
  .link--view_less_btn_small-style,
  .link--view_more_btn_small-style
) {
  --ti-btn-pad-block: 0.5rem;
  --ti-btn-pad-inline: 1rem;
  --ti-btn-circle-size: 2.125rem;
  --ti-btn-icon-size: 1.05rem;
  font-size: var(--font-size-s);
}

:where(
  .link--big_btn_colour-style,
  .link--big_btn_colour_inv-style,
  .link--big_btn_black-style,
  .link--view_less_btn_big-style,
  .link--view_more_btn_big-style
) {
  font-size: var(--font-size-medium);
}

/* ── Variant tokens (set variables; applies to <a>, <button>, <input>) ───── */

:where(.link--big_btn_colour-style, .link--small_btn_colour-style) {
  --ti-btn-bg: var(--color-accent);
  --ti-btn-fg: var(--color-black);
  --ti-btn-circle-bg: var(--color-white);
  --ti-btn-icon-color: var(--color-black);
  --ti-btn-icon: var(--ti-arrow-right);
}

:where(.link--big_btn_colour_inv-style, .link--small_btn_colour_inv-style) {
  --ti-btn-bg: var(--color-accent-2);
  --ti-btn-fg: var(--color-black);
  --ti-btn-circle-bg: var(--color-white);
  --ti-btn-icon-color: var(--color-black);
  --ti-btn-icon: var(--ti-arrow-right);
}

:where(.link--big_btn_black-style, .link--small_btn_black-style) {
  --ti-btn-bg: var(--color-black);
  --ti-btn-fg: var(--ti-btn-accent);
  --ti-btn-circle-bg: var(--ti-btn-accent);
  --ti-btn-icon-color: var(--color-black);
  --ti-btn-icon: var(--ti-arrow-right);
}

:where(.link--view_less_btn_big-style, .link--view_less_btn_big_small-style, .link--view_less_btn_small-style) {
  --ti-btn-bg: var(--color-black);
  --ti-btn-fg: var(--ti-btn-accent);
  --ti-btn-circle-bg: var(--ti-btn-accent);
  --ti-btn-icon-color: var(--color-black);
  --ti-btn-icon: var(--ti-arrow-up);
}

:where(.link--view_more_btn_big-style, .link--view_more_btn_small-style) {
  --ti-btn-bg: var(--color-black);
  --ti-btn-fg: var(--ti-btn-accent);
  --ti-btn-circle-bg: var(--ti-btn-accent);
  --ti-btn-icon-color: var(--color-black);
  --ti-btn-icon: var(--ti-arrow-down);
}

/* ── <input> support (same visuals using layered backgrounds) ───────────── */
:where(input[type='submit'], input[type='button'], input[type='reset']):where(
  .link--big_btn_colour-style,
  .link--small_btn_colour-style,
  .link--big_btn_colour_inv-style,
  .link--small_btn_colour_inv-style,
  .link--big_btn_black-style,
  .link--small_btn_black-style,
  .link--view_less_btn_big-style,
  .link--view_less_btn_big_small-style,
  .link--view_less_btn_small-style,
  .link--view_more_btn_big-style,
  .link--view_more_btn_small-style
) {
  -webkit-appearance: none;
  appearance: none;

  cursor: pointer;

  border: 0;
  border-radius: 9999px;

  background-color: var(--ti-btn-bg, transparent);
  color: var(--ti-btn-fg, currentColor);

  padding-block: var(--ti-btn-pad-block);
  padding-inline-start: var(--ti-btn-pad-inline);
  padding-inline-end: calc(var(--ti-btn-pad-inline) + var(--ti-btn-circle-size) + var(--ti-btn-circle-inset));

  /* Circle + arrow. */
  background-image:
    radial-gradient(circle at center, var(--ti-btn-circle-bg) 0 99%, transparent 100%),
    var(--ti-btn-icon, var(--ti-arrow-right));
  background-repeat: no-repeat;
  background-size:
    var(--ti-btn-circle-size) var(--ti-btn-circle-size),
    var(--ti-btn-icon-size) var(--ti-btn-icon-size);
  background-position:
    calc(100% - var(--ti-btn-circle-inset) - (var(--ti-btn-circle-size) * 0.5)) center,
    calc(100% - var(--ti-btn-circle-inset) - (var(--ti-btn-circle-size) * 0.5)) center;
}
