/* shiftedtech · base styles
   Page-wide rules copied from the portfolio. The reset lines at the top were
   supplied there by the scroll engine (scrollcraft.css), which we don't load. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 24px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0;
  font-family: var(--font);
  font-size: 18px;
  line-height: 1.6;
  color: var(--black);
  background: var(--white);
}
img, svg { max-width: 100%; }
img { height: auto; }
h1, h2, h3 { line-height: 1.1; text-wrap: balance; }

.wrap { width: 100%; max-width: 72rem; margin-inline: auto; padding-inline: clamp(1rem, 5vw, 4.5rem); }
a { color: var(--green); }
a:hover { color: var(--green-dark); }
:focus-visible { outline: 2px solid var(--green); outline-offset: 3px; }

.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip {
  position: absolute; left: 1rem; top: -4rem; z-index: 100;
  background: var(--green); color: var(--white); padding: .6rem 1rem; border-radius: var(--r-sm);
  font-weight: 600; text-decoration: none;
}
.skip:focus { top: 1rem; color: var(--white); }

/* prices and counts line up in columns */
.num, time { font-variant-numeric: tabular-nums; }

/* If JS is off, or the scroll effects never start, nothing may stay hidden. */
:is(.no-js, .sc-failed) :is([data-sc-in], [data-sc-stagger] > *, [data-sc-cue]) {
  opacity: 1 !important; transform: none !important;
}
:is(.no-js, .sc-failed) [data-sc-reveal] { clip-path: none !important; }
.no-js .lift-nav { display: none; }

@media (max-width: 700px) {
  body { font-size: 17px; }
}
