/* Mcava · floating Back to top (shared; each build copies it in). A small round button in the header's glass, bottom
   right, that appears once you're well past the hero and hides near the top. It's a plain link to #top, so the page
   decides how the jump happens (v1: the same cut as the header links). Over a red or dark part of the page the glass
   thickens (data-ground="strong", set by to-top.js), like the header's.
   Markup: <a class="tt" href="#top" aria-label="Back to the top" data-tt><svg …/></a>, as the last thing in <body>.
   Size and margin: --tt-size, --tt-gap. Colours: --tt-fg, --tt-focus, --tt-glass-rgb.
   --tt-lift (set by to-top.js from data-avoid) floats it up over things it must not cover. */
:root { --tt-size: 48px; --tt-gap: 22px; }
@media (max-width: 640px) { :root { --tt-size: 44px; --tt-gap: 20px; } }
.tt {
  position: fixed; z-index: 70; right: calc(var(--tt-gap) + env(safe-area-inset-right)); bottom: calc(var(--tt-gap) + env(safe-area-inset-bottom));
  width: var(--tt-size); height: var(--tt-size); border-radius: 50%; display: grid; place-items: center; color: var(--tt-fg, #191919); text-decoration: none;
  background: rgba(var(--tt-glass-rgb, 252, 235, 217), var(--tt-glass-a, .6));
  -webkit-backdrop-filter: blur(16px) saturate(160%); backdrop-filter: blur(16px) saturate(160%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5), 0 0 0 1px rgba(25, 25, 25, .08), 0 10px 24px -12px rgba(25, 25, 25, .5);
  opacity: 0; visibility: hidden; transform: translateY(16px) scale(.9); translate: 0 calc(-1 * var(--tt-lift, 0px));
  transition: opacity .35s ease, transform .5s cubic-bezier(.22, 1, .36, 1), translate .55s cubic-bezier(.22, 1, .36, 1), visibility 0s linear .5s, background-color .35s ease;
  -webkit-tap-highlight-color: transparent;
}
.tt.is-on { opacity: 1; visibility: visible; transform: none; transition: opacity .35s ease, transform .5s cubic-bezier(.22, 1, .36, 1), translate .55s cubic-bezier(.22, 1, .36, 1), visibility 0s, background-color .35s ease; }
.tt[data-ground="strong"] { --tt-glass-a: .86; }
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) { .tt { --tt-glass-a: .94; } }
@media (prefers-reduced-transparency: reduce) { .tt { --tt-glass-a: .94; -webkit-backdrop-filter: none; backdrop-filter: none; } }
.tt svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; transition: transform .45s cubic-bezier(.34, 1.56, .64, 1); }
.tt:hover svg { transform: translateY(-3px); }
.tt.is-on:active { transform: scale(.93); transition-duration: .12s; }
.tt:focus-visible { outline: 3px solid var(--tt-focus, #3E3EAB); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) {
  .tt, .tt svg { transition: none !important; }
  .tt { transform: none; }
}
