/* Tacet Gallery — shared reset & tokens */

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

html {
  /* bumps every rem-based size across the whole site at once — nearly
     everything here (headings, body copy, placards, UI chrome) is sized
     in rem, so this one lever makes it all a bit bigger consistently
     rather than hand-tuning font-size in fifteen separate stylesheets */
  font-size: 18px;
}

html, body {
  margin: 0;
  padding: 0;
  min-height: 100%;
}

body {
  font-family: "Courier New", ui-monospace, monospace;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

img, svg { max-width: 100%; display: block; }

a { color: inherit; text-decoration: none; }

h1, h2, h3, p { margin: 0; }

/* curator's-note label type, used across rooms for placards */
.placard {
  font-family: Georgia, "Times New Roman", serif;
  font-style: italic;
  letter-spacing: 0.02em;
}

/* shared skip/nav affordance */
.wayfinding {
  position: fixed;
  bottom: 1.5rem;
  left: 50%;
  transform: translateX(-50%);
  z-index: 20;
  display: flex;
  gap: 0.75rem;
  font-size: 0.7rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  opacity: 0.75;
  transition: opacity 0.4s ease;
}
.wayfinding:hover { opacity: 1; }
.wayfinding a {
  padding: 0.4rem 0.8rem;
  border: 1px solid currentColor;
  border-radius: 999px;
}

/* small roman-numeral tag used to mark a puzzle fragment's position
   in sequence, without saying out loud that it's a puzzle */
.fragment-tag {
  font-size: 0.6rem;
  letter-spacing: 0.2em;
  opacity: 0.3;
  font-family: Georgia, serif;
}

/* a small spark wherever you click, colored by whatever the room's own
   text color is — so it never needs a per-room override */
.click-spark {
  position: fixed;
  width: 10px;
  height: 10px;
  margin-left: -5px;
  margin-top: -5px;
  border-radius: 50%;
  background: radial-gradient(circle, currentColor 0%, transparent 70%);
  pointer-events: none;
  z-index: 9999;
  animation: click-spark-pop 0.55s ease-out forwards;
}
@keyframes click-spark-pop {
  from { transform: scale(0.6); opacity: 0.85; }
  to   { transform: scale(7); opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}
