/*
  Incling wireframe — plain helper CSS.
  Loaded with a normal <link rel="stylesheet"> (works fine over file://).
  Holds only what is awkward to express in Tailwind utilities: keyframes,
  the placeholder-media texture, scroll-reveal base state, and reduced-motion
  and accessibility fallbacks. No brand tokens live here (see theme.js).
*/

:root {
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
}

/* Hide Alpine-controlled elements until Alpine initialises */
[x-cloak] { display: none !important; }

/* Chrome and card links read as plain text; prose links keep underlines (WCAG 1.4.1) */
a { text-decoration: none; }
.prose a { text-decoration: underline; text-underline-offset: 2px; }

/* Mobile drawer panel slide */
.drawer-panel { transition: transform 0.2s var(--ease-out); }

html { scroll-behavior: smooth; }

/* System-font fallback while brand fonts load, to avoid invisible text */
body { font-family: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
.font-display { font-family: "General Sans", ui-sans-serif, system-ui, sans-serif; }

/* ---- Placeholder media block: a clearly-labelled wireframe slot ---- */
.ph-media {
  background-color: #e9e8e5;
  background-image:
    repeating-linear-gradient(135deg, rgba(17,17,68,0.05) 0 1px, transparent 1px 14px);
  border: 1px dashed rgba(17, 17, 68, 0.28);
  color: #4a4a63;
}

/* ---- Continuous logo marquee (decorative) ---- */
@keyframes incling-marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.marquee-track {
  display: flex;
  width: max-content;
  animation: incling-marquee 38s linear infinite;
}
.marquee:hover .marquee-track { animation-play-state: paused; }

/* ---- Scroll reveal (only hides when JS is active, so no-JS still shows all) ---- */
.js .reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.6s var(--ease-out), transform 0.6s var(--ease-out);
  will-change: opacity, transform;
}
.js .reveal.is-visible {
  opacity: 1;
  transform: none;
}

/* ---- Focus visibility (accessibility) ---- */
:focus-visible {
  outline: 3px solid #223382;
  outline-offset: 2px;
  border-radius: 4px;
}

/* ---- Skip link ---- */
.skip-link {
  position: absolute;
  left: 0.75rem;
  top: -3rem;
  z-index: 100;
  background: #111144;
  color: #fff;
  padding: 0.65rem 1rem;
  border-radius: 0.5rem;
  transition: top 0.2s var(--ease-out);
}
.skip-link:focus { top: 0.75rem; }

/* ---- Active in-page jump nav link ---- */
.jumpnav a[aria-current="true"] {
  color: #111144;
  font-weight: 600;
  border-color: #F98513;
}

/* ---- Reduced motion: disable all motion ---- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .marquee-track { animation: none; }
  /* Match the .js .reveal specificity so the override actually wins (no blank paint) */
  .js .reveal { opacity: 1; transform: none; transition: none; }
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}
