/*
 * FANTURO static-page stability layer
 * Shared fixes for the offline HTML set. Keep this file loaded after each
 * page's inline styles so these guardrails can correct page-specific drift.
 */

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scrollbar-gutter: stable;
}

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

body {
  min-width: 0;
  overflow-x: hidden;
  overflow-x: clip;
}

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

img,
picture,
video,
canvas,
svg {
  max-width: 100%;
}

img {
  font-style: italic;
}

[hidden] {
  display: none !important;
}

button,
input,
select,
textarea {
  font: inherit;
}

button:not(:disabled),
[role="button"]:not([aria-disabled="true"]),
summary {
  cursor: pointer;
}

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid #1686ff;
  outline-offset: 3px;
}

:where(p, li, dd, dt, h1, h2, h3, h4, h5, h6, a, button, label) {
  overflow-wrap: break-word;
}

/* The original motion layer hides content before IntersectionObserver runs.
   These states are used only when the safety script detects a stuck element
   or the visitor asks for reduced motion. */
.fanturo-force-visible,
html.fanturo-motion-fallback [data-motion],
html.fanturo-motion-fallback .reveal,
html.fanturo-motion-fallback .ap-reveal,
html.fanturo-motion-fallback .c2-reveal,
html.fanturo-motion-fallback .sv3-reveal,
html.fanturo-motion-fallback .ut-reveal,
html.fanturo-motion-fallback .pdx-reveal {
  opacity: 1 !important;
  visibility: visible !important;
  translate: none !important;
  transform: none !important;
  clip-path: none !important;
}

img.fanturo-image-fallback {
  object-fit: contain !important;
  background: #eef3f8;
}

@media (max-width: 767.98px) {
  input,
  select,
  textarea {
    max-width: 100%;
    font-size: 16px;
  }

  table {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
  }

  .page-shell,
  .container,
  [class$="__inner"],
  [class$="__container"] {
    max-width: 100%;
  }
}

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

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

  [data-motion],
  .reveal,
  .ap-reveal,
  .c2-reveal,
  .sv3-reveal,
  .ut-reveal,
  .pdx-reveal {
    opacity: 1 !important;
    visibility: visible !important;
    translate: none !important;
    transform: none !important;
    clip-path: none !important;
  }
}

@media print {
  [data-motion],
  .reveal,
  .ap-reveal,
  .c2-reveal,
  .sv3-reveal,
  .ut-reveal,
  .pdx-reveal {
    opacity: 1 !important;
    visibility: visible !important;
    translate: none !important;
    transform: none !important;
    clip-path: none !important;
  }

  .back-to-top,
  [class*="backtop"],
  [class*="back-to-top"] {
    display: none !important;
  }
}
