
/* ==========================================================================
   Minted — site-shared styles (every www page)
   Load after fonts/fonts.css, css/tokens.css and css/components.css, before
   the page stylesheet. Holds what only the site pages share: the testimonial
   card, the raised plane every site card family sits on (amendment 01), and
   the eased wheel scrolling (Nov 4). The tool package never loads this file.
   ========================================================================== */

/* ============ Eased wheel scrolling (Lenis 1.3.26, js/main.js; Nov 4) ============
   Lenis runs only for a mouse or trackpad and never with reduced motion; while it
   runs, <html> carries the lenis class. The native scroll position stays the truth,
   so find-in-page, the scrollbar, focus and keys behave as they always do. These are
   Lenis's own rules (dist/lenis.css) for the options this site uses. */
html.lenis, html.lenis body { height: auto }
html.lenis { scroll-behavior: auto } /* Lenis carries anchors itself; contact.css's smooth anchors stay for visitors without it */
.lenis.lenis-stopped { overflow: clip } /* the mobile menu is open */
.lenis [data-lenis-prevent] { overscroll-behavior: contain } /* anything that scrolls on its own keeps the wheel */
.lenis.lenis-smooth iframe { pointer-events: none } /* a glide never stalls over an embed */
/* the skip link's target takes focus so the next Tab starts inside it; it is not a control, so no ring around the whole page */
.lenis main[tabindex="-1"]:focus-visible { outline: none }

/* ============ Testimonial card (landing + buy) ============ */
.testi { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--minted-space-2); align-items: start; text-align: left }
.testi__col { display: contents }
.testi-card {
  margin: 0; /* figure reset */
  padding: clamp(20px, 1.8vw, 28px); display: grid; gap: 14px; align-content: start;
  transition: transform 320ms var(--minted-ease-enter), border-color 260ms var(--minted-ease-state), box-shadow 320ms var(--minted-ease-state);
}
.testi-card:hover { transform: translateY(-6px) }
.testi-card__stars { display: flex; gap: 5px; color: var(--minted-green-300); font-size: 0.78rem; line-height: 1; letter-spacing: 0.18em; text-shadow: 0 0 12px var(--minted-glow-300) }
.testi-card__quote { margin: 0; font-family: var(--minted-font-display); font-weight: 600; font-size: clamp(1rem, 1.25vw, 1.2rem); line-height: 1.45; color: var(--minted-text-primary); text-wrap: pretty }
.testi-card__who { display: flex; align-items: center; gap: 12px }
/* Portrait slot: a recessed 42px square carrying the same treatment as the author
   photos (green-700 to page-ink multiply) over whatever lands in it. Until a real,
   licensed portrait arrives the initials read; data-slot / data-ratio mark it for assets. */
.testi-card__ava {
  position: relative; overflow: hidden; width: 42px; height: 42px; flex: none; display: grid; place-content: center;
  background-color: var(--minted-surface-recessed); background-image: var(--minted-recessed-face); box-shadow: var(--minted-press);
  border: var(--minted-border-hairline);
  font-family: var(--minted-font-display); font-weight: 800; font-stretch: 118%; font-size: 0.95rem; letter-spacing: 0.02em;
  color: var(--minted-green-100); text-transform: uppercase; user-select: none;
}
.testi-card__ava::after { content: ""; position: absolute; inset: 0; background-image: linear-gradient(180deg, rgba(12, 106, 70, 0.16), var(--minted-scrim-100)); mix-blend-mode: multiply; pointer-events: none }
.testi-card__ava img { width: 100%; height: 100%; object-fit: cover; display: block }
.testi-card--tint .testi-card__ava { background-color: var(--minted-green-700) }
.testi-card__id { display: grid; gap: 2px }
.testi-card__name { margin: 0; font-family: var(--minted-font-mono); font-size: var(--minted-size-label); font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--minted-text-secondary) }
.testi-card__role { margin: 0; font-family: var(--minted-font-mono); font-size: 0.68rem; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase; color: var(--minted-text-faint) }

/* ============ Raised plane: every site card family (amendment 01) ============
   One light source, top-left. Raised things catch light on their top and left
   edges and cast down-right. The page stylesheets never set background, border
   or box-shadow on these families; they add only their own layout and hover
   colour. Always background-color, never the background shorthand. */
.testi-card, .why-card, .author-card, .buy-hero__stage, .pf-tile, .ind-tile, .ask__card, .step, .win {
  background-color: var(--minted-surface-raised); background-image: var(--minted-lit-face);
  border: var(--minted-border-hairline); box-shadow: var(--minted-bevel), var(--minted-cast);
}
.testi-card--tint { background-color: var(--minted-surface-raised-hi) }
.testi-card:hover, .why-card:hover, .author-card:hover, .pf-tile:hover {
  border-color: var(--minted-stroke-active);
  box-shadow: var(--minted-bevel-lift), var(--minted-cast-lift), 0 0 34px var(--minted-glow-200);
}

@media (max-width: 980px) {
  .testi { grid-template-columns: 1fr }
}

