/* MEO readable-type floor: 12pt equivalent for screen interfaces. */
@media screen {
  :root {
    font-size: 16px;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }

  body {
    font-size: 16px !important;
    line-height: 1.5;
    max-width: 100%;
  }

  :where(main, header, footer, nav, section, article, aside, form, fieldset, dialog, div) {
    min-width: 0;
  }

  :where(img, picture, video) {
    max-width: 100%;
    height: auto;
  }

  :where(pre, code, .legal-table-scroll, .coverage-table, .price-structure, .admin-table-scroll) {
    max-width: 100%;
  }

  :where(pre, .legal-table-scroll, .coverage-table, .price-structure, .admin-table-scroll) {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  dialog {
    box-sizing: border-box;
    max-width: calc(100% - 24px);
    max-height: calc(100vh - 24px);
    max-height: calc(100dvh - 24px);
    overflow: auto;
    overscroll-behavior: contain;
  }

  /*
   * Keep the established heading hierarchy and code-native SVG icon sizing.
   * Everything else that can carry readable copy receives the 16px floor.
   */
  :where(body, body *)
    :not(:where(
      h1, h2, h3, h4, h5, h6,
      h1 *, h2 *, h3 *, h4 *, h5 *, h6 *,
      svg, svg *,
      [aria-hidden="true"], [aria-hidden="true"] *,
      script, style, link, meta
    )) {
    font-size: 16px !important;
  }

  :where(p, li, dt, dd, th, td, caption, figcaption, blockquote, address, small) {
    line-height: 1.5 !important;
  }

  :where(a, button, input, select, textarea, label, legend, summary, output, time) {
    line-height: 1.35 !important;
  }

  :where(button, select, textarea, summary, input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]), [role="button"], [role="tab"], [role="radio"], [role="checkbox"]) {
    min-height: 44px;
    min-width: 44px;
  }

  :where(label:has(input[type="checkbox"]), label:has(input[type="radio"])) {
    min-height: 44px;
    align-items: center;
  }

  :where(input[type="checkbox"], input[type="radio"]) {
    min-width: 20px;
    min-height: 20px;
  }

  :where(p, li, dt, dd, th, td, small, label, a, button, output) {
    overflow-wrap: break-word;
    word-break: normal;
    hyphens: none;
  }

  input::placeholder,
  textarea::placeholder {
    font-size: 16px !important;
    opacity: .72;
  }

  :where(a[href], button, input, select, textarea, summary, [tabindex]:not([tabindex="-1"]), [role="button"], [role="tab"], [role="radio"], [role="checkbox"]):focus-visible {
    outline: 3px solid #fff !important;
    outline-offset: 3px !important;
    box-shadow: 0 0 0 6px #102d3a !important;
  }

  :where(input, select, textarea)[aria-invalid="true"] {
    border-width: 2px !important;
    border-style: solid !important;
    outline: 2px solid currentColor;
    outline-offset: 2px;
  }

  :where([role="alert"], .auth-alert, .scan-error, .photo-error, .admin-step-up-error, .admin-reseller-flash.is-error) {
    border-inline-start: 4px solid currentColor !important;
  }

  :where(.admin-status, .status, .pill, .device-pill) {
    border: 1px solid currentColor;
  }

  :where(a[aria-current="page"], a[aria-current="true"]) {
    text-decoration: none !important;
    
    
  }

  :where(button[aria-pressed="true"], [role="tab"][aria-selected="true"], [role="radio"][aria-checked="true"]) {
    box-shadow: inset 0 0 0 2px currentColor;
  }

  :where(main, footer, dialog) :where(p, li, small, address) a[href]:not(.button):not(.public-cta):not(.auth-primary):not(.auth-secondary) {
    text-decoration: none !important;
    font-weight: 700;
  }

  /* Existing declarations that already use !important need equal-strength fixes. */
  .auth-legal-note,
  .auth-prototype-note,
  .maplibregl-ctrl-attrib {
    font-size: 16px !important;
  }

  /* The only pre-existing sub-16px heading is a plan-card heading. */
  .plan-card h3 {
    font-size: max(16px, calc(18px - 2.6667px)) !important;
    line-height: 1.25 !important;
  }

  .admin-gateway-evidence-grid .admin-alert h3 {
    font-size: max(16px, calc(16px - 2.6667px)) !important;
    line-height: 1.25 !important;
  }

  .admin-dashboard-compact .admin-alert h3 {
    font-size: max(16px, calc(16px - 2.6667px)) !important;
    line-height: 1.25 !important;
  }

  /* A counter is meaningful copy rather than a decorative glyph. */
  .coverage-effort li::before {
    font-size: 16px !important;
  }

  .rail-expanded .rail-action::after {
    font-size: 16px !important;
  }

  .rail-button[title]::after,.rail-action[title]::after {
    font-size: 16px !important;
  }

  /* Let formerly compact shells grow instead of clipping two-line labels. */
  .public-header-inner,
  .auth-nav,
  .go-head {
    height: auto !important;
  }

  .public-header-inner {
    min-height: 78px;
    padding-block: 10px;
  }

  .auth-nav {
    min-height: 86px;
  }

  .go-head {
    min-height: 72px;
  }

  .public-footer-social,
  .public-footer-bottom,
  .auth-footer,
  .page-head,
  .head-actions,
  .top-actions,
  .modal-actions {
    flex-wrap: wrap;
  }

  .public-newsletter form > div,
  .newsletter-field {
    min-height: 52px;
  }

  .public-newsletter button,
  .newsletter-field button {
    min-width: 108px;
    padding-inline: 14px;
  }

  .language-picker select,
  .language-picker button,
  .public-language a,
  .auth-language a {
    min-width: 44px;
    min-height: 44px;
  }

  .go-language a {
    width: 44px;
    min-width: 44px;
    min-height: 44px;
  }

  :where(
    .public-primary a, .public-signin, .public-cta, .public-menu-panel a,
    .public-footer nav a, .public-cookie-link, .public-footer-social a,
    .auth-nav-actions > a, .auth-primary, .auth-secondary, .auth-provider,
    .go-logo, .go-locate, .rail-button, .rail-action, .icon-button, .avatar,
    .app-language-switcher select, .app-language-switcher button, .help-link, .site-footer a, .social-share a,
    .footer-link-button
  ) {
    min-width: 44px;
    min-height: 44px;
  }

  .pwa-notice {
    width: min(480px, calc(100% - 28px));
    grid-template-columns: 42px minmax(0, 1fr) auto !important;
  }

  .pwa-notice .pwa-action {
    grid-column: 2;
    justify-self: start;
  }

  .pwa-notice .pwa-close {
    grid-column: 3;
    grid-row: 1;
  }

  .go-alert {
    grid-template-columns: 44px minmax(0, 1fr) !important;
  }

  .go-alert time {
    grid-column: 2;
    justify-self: start;
  }

  .go-nav b {
    width: auto;
    min-width: 22px;
    height: 22px;
    padding-inline: 5px;
  }

  .go-coverage select,
  .coverage-picker select {
    max-width: 190px !important;
  }

  .legal-table-scroll,
  .coverage-table,
  .price-structure {
    overscroll-behavior-inline: contain;
  }

  @media (max-width: 1080px) {
    .public-header-inner {
      min-height: 68px;
    }
  }

  @media (max-width: 720px) {
    .auth-nav,
    .auth-nav-actions,
    .go-head,
    .go-title,
    .go-section-head {
      flex-wrap: wrap;
    }

    .auth-nav-actions {
      justify-content: flex-end;
    }

    .go-head {
      height: auto !important;
    }

    .public-dialog,
    .auth-card,
    .modal-body,
    .usability-dialog {
      max-width: calc(100vw - 20px);
    }

    .pwa-notice {
      max-height: calc(100dvh - 20px);
      overflow: auto;
    }
  }

  @media (max-width: 560px) {
    .auth-nav {
      min-height: 72px;
    }

    .public-dialog,
    .auth-card,
    .modal-body {
      overflow-wrap: break-word;
      word-break: normal;
      hyphens: none;
    }

    .public-newsletter form > div,
    .newsletter-field {
      height: auto;
    }

    .pwa-notice {
      right: 10px;
      width: calc(100% - 20px);
    }
  }

  @media (max-width: 359px) {
    .go-language a {
      width: 44px;
    }

    .go-head {
      gap: 5px;
      padding-inline: 8px;
    }

    .go-head > a.go-logo {
      width: 68px;
    }
  }
}

.admin-animal-history-grid h5 {
    font-size: max(16px, calc(18px - 2.6667px)) !important;
}

@media (prefers-reduced-motion: reduce) {
  html:focus-within {
    scroll-behavior: auto !important;
  }

  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-delay: 0s !important;
    transition-duration: .01ms !important;
  }
}

@media (forced-colors: active) {
  :where(a[href], button, input, select, textarea, summary, [tabindex]:not([tabindex="-1"]), [role="button"], [role="tab"], [role="radio"], [role="checkbox"]):focus-visible {
    outline: 3px solid Highlight !important;
    box-shadow: none !important;
  }

  :where(button, input, select, textarea, summary, [role="button"], [role="tab"], [role="radio"], [role="checkbox"], .admin-status, .status, .pill, .device-pill) {
    border: 1px solid ButtonText !important;
    forced-color-adjust: auto;
  }

  :where([aria-current="page"], [aria-selected="true"], [aria-pressed="true"], [aria-checked="true"]) {
    outline: 2px solid Highlight;
    outline-offset: 2px;
  }

  :where([role="alert"], .auth-alert, .scan-error, .photo-error, .admin-step-up-error, .admin-reseller-flash.is-error) {
    border-inline-start: 4px double CanvasText !important;
  }
}

/* Link states use colour, weight, surfaces and a strong keyboard focus ring.
 * Product copy deliberately has no underline or overline. */
html:root body :where(*, *::before, *::after) {
  text-decoration: none !important;
  text-decoration-line: none !important;
}
/* Keyboard users receive a visible first action only when it receives focus. */
.skip-link {
  position: fixed;
  top: max(12px, env(safe-area-inset-top));
  left: max(12px, env(safe-area-inset-left));
  z-index: 10000;
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  padding: 10px 16px;
  border-radius: 12px;
  background: #18323c;
  color: #fff;
  font-size: 1rem;
  font-weight: 700;
  text-decoration: none;
  box-shadow: 0 10px 30px rgba(15, 35, 43, 0.24);
  transform: translateY(calc(-100% - 32px));
  transition: transform 160ms ease;
}

/* Keep the keyboard shortcut out of the visual layout until it receives focus.
 * Clipping is deliberately combined with the off-canvas transform so a stale
 * browser stylesheet cannot expose the link as ordinary page copy. */
.skip-link:not(:focus):not(:focus-visible) {
  width: 1px;
  height: 1px;
  min-height: 0;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.skip-link:focus,
.skip-link:focus-visible {
  width: auto;
  height: auto;
  min-height: 44px;
  padding: 10px 16px;
  overflow: visible;
  clip-path: none;
  white-space: normal;
  transform: translateY(0);
  outline: 3px solid #ed6b57;
  outline-offset: 3px;
}
