/* Beta Flow design-system prototype. Not used by production pages. */

/* Aliases only. Every value below must resolve to a token defined in
   styles.css. Do not introduce a raw hex or a new radius here — add it to the
   token block in styles.css instead. This file previously redefined --slate
   and the tint scale, which meant the homepage rendered body text in a
   different grey from every other page. */

:root {
  --prototype-parchment: var(--surface-hero);
  --prototype-soft: var(--surface);
  --prototype-pink: var(--accent-pink);
  --prototype-pink-soft: var(--tint-berry);
  --prototype-green: var(--accent-green);
  --prototype-plum: var(--accent-plum);
  --prototype-green-soft: var(--tint-green);

  --section-frame-radius: var(--radius-xl);
  --frame-radius: var(--radius-lg);
  --section-shell-radius: var(--radius-xl);
  --section-overlap: clamp(1.6rem, 4vw, 3.8rem);
}

.prototype {
  background: var(--prototype-parchment);
}

.prototype .section {
  border-top: 0;
  border-bottom: 0;
}

.prototype-note {
  padding: var(--space-2) 0;
  background: var(--ink);
  color: var(--surface);
  font-size: var(--text-sm);
}

.prototype-note .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
}

.prototype-note a {
  color: var(--tint-pink);
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.prototype .site-header {
  position: relative;
  top: auto;
  padding: var(--space-3) 0;
  background: var(--prototype-parchment);
  border-bottom: 0;
}

.prototype .header-inner {
  min-height: 58px;
  padding: var(--space-2) var(--space-3) var(--space-2) var(--space-4);
  border: 1px solid var(--ink);
  border-radius: var(--radius-pill);
  background: var(--ink);
  color: var(--prototype-soft);
  box-shadow: 0 18px 50px rgba(23, 23, 23, 0.12);
}

.prototype .site-header .brand-logo {
  width: clamp(8.6rem, 10vw, 10.25rem);
  filter: invert(1);
}

.prototype .nav {
  gap: var(--space-1);
}

.prototype .nav a {
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-pill);
  color: rgba(255, 253, 248, 0.78);
}

.prototype .nav a:hover,
.prototype .nav a[aria-current="page"] {
  background: rgba(255, 253, 248, 0.11);
  color: var(--prototype-soft);
}

.prototype .nav .nav-contact {
  border-color: var(--prototype-soft);
  background: var(--prototype-soft);
  color: var(--text-primary);
}

.prototype .nav .nav-contact:hover {
  background: var(--prototype-green);
  border-color: var(--prototype-green);
  color: var(--prototype-soft);
}

.prototype .button-primary:hover {
  background: var(--prototype-green);
  border-color: var(--prototype-green);
  color: var(--text-inverse);
}

/* space-8 rather than space-7 so the gap above the eyebrow clears the 48px
   rhythm between the numbered blocks opposite it. At space-7 the two were
   within 4px, which read as the hero being cramped under the nav. */
.prototype-hero {
  padding: var(--space-8) 0 var(--space-9);
  background: var(--prototype-parchment);
}

.prototype .underline::after {
  background: var(--prototype-plum);
}

.prototype .underline-growth::after {
  background: var(--prototype-green);
}

.prototype-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr);
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: start;
}

.prototype-hero h1 {
  max-width: 13.5ch;
}

.prototype-hero p {
  max-width: 42rem;
  color: var(--text-secondary);
}

.prototype-card-stack {
  display: grid;
  gap: var(--space-4);
  counter-reset: hero-note;
}

.prototype-note-card {
  position: relative;
  padding: var(--space-4) var(--space-4);
  border: 1px solid rgba(23, 23, 23, 0.12);
  border-radius: var(--frame-radius);
  background: rgba(255, 253, 248, 0.9);
  box-shadow: 0 14px 34px rgba(23, 23, 23, 0.035);
}

.prototype-note-heading {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: 0.45rem;
}

.prototype-note-index {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.05rem;
  height: 2.05rem;
  border: 1px solid rgba(23, 23, 23, 0.14);
  border-radius: var(--radius-pill);
  background: var(--prototype-pink-soft);
  color: var(--text-primary);
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  letter-spacing: 0.04em;
}

.prototype-note-card p {
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--text-base);
  line-height: 1.55;
}

.prototype-issue-band {
  position: relative;
  z-index: 1;
  overflow: hidden;
  border-radius: var(--section-shell-radius);
  background: var(--ink);
  border: 0;
  color: var(--prototype-soft);
}

.prototype-issue-band .container {
  padding-top: clamp(3.4rem, 7vw, 5.8rem);
  padding-bottom: clamp(3.4rem, 7vw, 5.8rem);
}

.prototype-issue-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(300px, 0.95fr);
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
}

.prototype-issue-copy {
  display: grid;
  gap: var(--space-4);
}

.prototype-issue-title {
  max-width: 18ch;
  margin: 0;
  font-family: var(--font-heading);
  font-size: var(--text-4xl);
  line-height: 1.04;
  letter-spacing: -0.01em;
  color: var(--prototype-soft);
}

.prototype-issue-lead {
  max-width: 43rem;
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--text-lg);
  line-height: 1.62;
}

.prototype-issue-proof {
  position: relative;
  min-height: 27rem;
}

.prototype-issue-proof .dark-panel {
  border-radius: var(--radius-md);
}

.prototype-issue-proof .compare-card-before {
  width: min(100%, 26rem);
  margin-left: auto;
  color: var(--prototype-soft);
  background: rgba(255, 255, 255, 0.055);
}

.prototype-issue-proof .dark-panel-success {
  width: min(100%, 25rem);
  left: auto;
  right: 0;
  top: 7.2rem;
  transform: rotate(-1.1deg);
}

.prototype-issue-proof .dark-list-item + .dark-list-item {
  margin-top: 0.7rem;
}

.prototype-issue-copy-only {
  display: block;
}

.prototype-issue-copy-only .prototype-issue-copy {
  max-width: 58rem;
}

.prototype-issue-copy-only .prototype-issue-title {
  max-width: 15ch;
}

.prototype-issue-copy-only .prototype-issue-lead {
  max-width: 52rem;
}

.prototype-issue-band .eyebrow,
.prototype-process-loop-band .eyebrow,
.prototype-final-cta .eyebrow {
  color: var(--prototype-pink);
}

.prototype-issue-band .tag-loop {
  --tag-gap: clamp(0.55rem, 1vw, 0.8rem);
  margin-top: 0.25rem;
  overflow: hidden;
  padding: var(--space-1) 0;
  mask-image: linear-gradient(to right, transparent, black 4%, black 96%, transparent);
  -webkit-mask-image: linear-gradient(to right, transparent, black 4%, black 96%, transparent);
}

.prototype-issue-band .tag-chip::after {
  display: none;
}

.prototype-issue-band .tag-loop-marquee {
  animation-duration: 96s;
  gap: var(--tag-gap);
}

.prototype-issue-band .tag-loop-track {
  gap: var(--tag-gap);
}

.prototype-issue-band .tag-chip:nth-child(3n + 1) .tag-chip-text {
  background: rgba(255, 253, 248, 0.94);
  border-color: rgba(255, 253, 248, 0.42);
  color: var(--text-primary);
}

.prototype-issue-band .tag-chip:nth-child(3n + 2) .tag-chip-text {
  background: var(--prototype-green-soft);
  border-color: rgba(255, 253, 248, 0.38);
  color: var(--text-primary);
}

.prototype-issue-band .tag-chip:nth-child(3n + 3) .tag-chip-text {
  background: var(--prototype-pink-soft);
  border-color: rgba(255, 253, 248, 0.34);
  color: var(--text-primary);
}

.prototype .dark-panel-success {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}

.prototype-editorial h2 {
  margin-left: auto;
  margin-right: auto;
}

.prototype-editorial p {
  max-width: 48rem;
  margin-left: auto;
  margin-right: auto;
  color: var(--text-secondary);
}

.prototype-system-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-rows: auto auto 1fr auto auto;
  gap: var(--grid-gap);
}

/* Five shared row tracks: chip, heading, body, outcome, price. The cards take
   their rows from the grid rather than from their own content, so OUTCOME and
   the price hairline land on the same baseline in all three regardless of how
   long each description runs. */
.prototype-system-card {
  position: relative;
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 5;
  gap: var(--space-3);
  min-height: 100%;
  padding: var(--card-padding);
  padding-bottom: calc(var(--card-padding) + 2.2rem);
  border: 1px solid rgba(23, 23, 23, 0.12);
  border-radius: var(--frame-radius);
  background: rgba(255, 253, 248, 0.9);
  box-shadow: 0 18px 42px rgba(23, 23, 23, 0.035);
}

/* One chip treatment for all three cards. design-system/11: cards are
   "differentiated by content and layout first, not by three unrelated
   colours", and "icon chips in unrelated colours" is on the avoid list. */
.prototype-system-card .card-icon-chip {
  width: 3.2rem;
  height: 3.2rem;
  border: 1px solid rgba(23, 23, 23, 0.14);
  border-radius: var(--radius-md);
  background: var(--surface);
  transform: none;
}

.prototype-system-card .card-icon-chip img {
  width: 1.25rem;
  filter: none;
}

.prototype-system-card .card-label {
  color: var(--text-accent);
}

.prototype-system-card .card-label + h3 {
  display: block;
  margin-top: 0.45rem;
}

.prototype-system-card p {
  color: var(--text-secondary);
}

.prototype-card-arrow {
  position: absolute;
  right: var(--card-padding);
  bottom: var(--card-padding);
  display: inline-block;
  width: auto;
  min-width: 0;
  max-width: none;
  height: auto;
  min-height: 0;
  max-height: none;
  border: 0;
  border-radius: 0;
  color: var(--text-primary);
  font-size: var(--text-xl);
  line-height: 1;
  text-decoration: none;
  transition: color 160ms ease, transform 160ms ease;
}

.prototype-card-arrow:hover,
.prototype-card-arrow:focus-visible {
  color: var(--text-accent);
  transform: translateX(2px);
}

.prototype .prototype-system-card > .prototype-card-arrow {
  width: auto;
  min-width: 0;
  max-width: none;
  height: auto;
}

.prototype-visual-tile {
  display: grid;
  align-items: center;
  gap: var(--space-2);
  min-height: 116px;
  padding: var(--space-4);
  border: 1px solid rgba(23, 23, 23, 0.11);
  border-radius: var(--radius-lg);
  background: var(--prototype-soft);
}

.prototype-visual-row {
  display: grid;
  grid-template-columns: 1fr 1.3fr 0.8fr;
  gap: var(--space-2);
}

.prototype-visual-row span {
  min-height: 24px;
  border: 1px solid rgba(23, 23, 23, 0.14);
  border-radius: var(--radius-pill);
  background: var(--prototype-soft);
}

.prototype-visual-row:nth-child(1) span:nth-child(1),
.prototype-visual-row:nth-child(3) span:nth-child(2) {
  background: var(--prototype-green-soft);
}

.prototype-visual-row:nth-child(2) span:nth-child(2) {
  background: var(--prototype-pink-soft);
}

.prototype-visual-row:nth-child(2) span:nth-child(3) {
  background: var(--prototype-soft);
}

.prototype-proof-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--grid-gap);
}

.prototype-proof-card {
  padding: var(--card-padding);
  border: 1px solid rgba(23, 23, 23, 0.12);
  border-radius: var(--frame-radius);
  background: rgba(255, 253, 248, 0.92);
  box-shadow: 0 18px 42px rgba(23, 23, 23, 0.035);
}

.prototype-proof-showcase {
  display: grid;
  gap: var(--grid-gap);
}

.prototype-proof-snapshot {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 0.82fr);
  overflow: hidden;
  border: 1px solid rgba(23, 23, 23, 0.14);
  border-radius: var(--frame-radius);
  background: rgba(255, 253, 248, 0.95);
  box-shadow: 0 18px 42px rgba(23, 23, 23, 0.045);
}

.prototype-proof-snapshot-main {
  display: grid;
  align-content: start;
  padding: clamp(1.25rem, 2.6vw, 1.75rem) clamp(1.35rem, 3vw, 2.15rem);
}

.prototype-proof-snapshot-main h3 {
  max-width: 18ch;
  margin: 0.6rem 0 0.9rem;
  font-size: var(--text-3xl);
  line-height: 1;
}

.prototype-proof-snapshot-main p {
  max-width: 38rem;
  color: var(--text-secondary);
  font-size: var(--text-base);
  line-height: 1.55;
}

.prototype-proof-snapshot-side {
  display: grid;
  align-content: start;
  gap: var(--space-3);
  padding: clamp(1.25rem, 2.6vw, 1.75rem);
  background: var(--ink);
  color: var(--surface);
}

.prototype-proof-snapshot-side span {
  color: var(--prototype-pink);
  font-family: var(--font-sans);
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.prototype-proof-snapshot-side p {
  margin: 0 0 0.5rem;
  color: var(--surface);
  font-family: var(--font-heading);
  font-size: var(--text-2xl);
  font-weight: var(--weight-medium);
  line-height: 1.04;
}

.prototype-proof-support-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--grid-gap);
}

.prototype-proof-support-grid .prototype-proof-card {
  display: flex;
  flex-direction: column;
  background: rgba(255, 253, 248, 0.95);
}

/* The narrow cards were solid paragraphs with the numbers buried mid-sentence.
   Splitting the figures out mirrors how the wide snapshot card already
   separates narrative from scannable facts. margin-top: auto pins the strip to
   the bottom so the hairlines line up across all three regardless of how the
   headings wrap. */
.prototype-proof-stats {
  display: grid;
  gap: var(--space-2);
  margin: var(--space-5) 0 0;
  padding: var(--space-3) 0 0;
  border-top: 1px solid rgba(23, 23, 23, 0.14);
  list-style: none;
}

.prototype-proof-support-grid .prototype-proof-stats {
  margin-top: auto;
}

/* Same strip on the pink founder band, where it breaks up what was an 80-word
   paragraph and gives the section something scannable. */
.founder-stats {
  max-width: 26rem;
  margin-bottom: var(--space-5);
  border-top-color: rgba(23, 23, 23, 0.18);
}

/* Section headers carry zero paragraph margins, which ran the two founder
   paragraphs together as one block. */
.prototype-founder-copy p + p {
  margin-top: var(--space-3);
}

/* Number beside the label rather than above it, so every stat is one line and
   the strips are the same height. Stacked two-up, the labels wrapped to
   different depths per card and the hairlines stopped agreeing. */
.prototype-proof-stats li {
  display: grid;
  grid-template-columns: 3.5rem minmax(0, 1fr);
  gap: var(--space-3);
  align-items: baseline;
  color: var(--text-secondary);
  font-size: var(--text-sm);
  line-height: 1.35;
}

.prototype-proof-stats strong {
  color: var(--text-accent);
  font-family: var(--font-heading);
  font-size: var(--text-2xl);
  font-weight: 400;
  line-height: 1;
}

.prototype-proof-card h3 {
  max-width: 18ch;
  font-size: var(--text-xl);
  line-height: 1.06;
}

.prototype-proof-card p {
  color: var(--text-secondary);
}

.prototype-proof-list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin: 0.45rem 0 0;
}

.prototype-proof-meta {
  margin: 0.95rem 0 0;
  color: var(--text-accent);
  font-family: var(--font-sans);
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.prototype-proof-list p {
  display: inline-flex;
  align-items: center;
  margin: 0;
  padding: var(--space-2) var(--space-2);
  border: 1px solid rgba(23, 23, 23, 0.12);
  border-radius: var(--radius-pill);
  background: var(--prototype-soft);
  color: var(--text-primary);
  font-size: var(--text-xs);
  line-height: 1.2;
}

.prototype-final-cta {
  border-radius: 0;
  border: 0;
  background: var(--ink);
  color: var(--surface);
}

.prototype-final-cta h2,
.prototype-final-cta p {
  max-width: 46rem;
}

.prototype-final-cta p {
  color: var(--text-secondary);
}

.prototype-final-cta .button-primary {
  background: var(--accent-green);
  border-color: var(--accent-green);
  color: var(--text-inverse);
}

.prototype-final-cta .button-secondary {
  border-color: var(--line);
  background: var(--surface);
  color: var(--text-primary);
}

.prototype-process-loop-band .process-loop {
  margin-top: -2.6rem;
}

.prototype-process-loop-band .process-node {
  border-radius: var(--radius-lg);
}

.prototype-selected-work {
  position: relative;
  z-index: 3;
  margin-top: 0;
  border-radius: 0;
  overflow: hidden;
  background: var(--prototype-parchment);
  border: 0;
}

.prototype-issue-band,
.prototype-selected-work,
.prototype-process-loop-band,
.prototype-final-cta {
  border-radius: 0;
}

.prototype-process-loop-band {
  position: relative;
  z-index: 4;
  margin-top: 0;
  border-radius: 0;
  overflow: hidden;
  background: var(--ink);
  border: 0;
}

.prototype-final-cta {
  position: relative;
  z-index: 6;
  margin-top: 0;
  border-radius: 0;
  overflow: hidden;
  background: var(--ink);
}

.prototype-final-cta .page-actions {
  flex-wrap: wrap;
}

.prototype .footer {
  border-top: 0;
  background: var(--prototype-parchment);
}

.prototype .footer .brand-logo {
  opacity: 1;
  filter: none;
}

@media (max-width: 980px) {
  .prototype-hero-grid,
  .prototype-issue-grid,
  .prototype-system-grid,
  .prototype-proof-grid {
    grid-template-columns: 1fr;
  }

  /* Single column: there are no sibling cards to align against, so each card
     sizes to its own content again. */
  .prototype-system-grid {
    grid-template-rows: none;
  }

  .prototype-system-card {
    grid-template-rows: auto auto 1fr auto auto;
    grid-row: auto;
  }

  .prototype-proof-snapshot,
  .prototype-proof-support-grid {
    grid-template-columns: 1fr;
  }

  .prototype-issue-proof {
    min-height: 0;
    display: grid;
    gap: var(--space-4);
  }

  .prototype-issue-proof .compare-card-before,
  .prototype-issue-proof .dark-panel-success {
    position: relative;
    inset: auto;
    width: 100%;
    margin: 0;
    transform: none;
  }

  .prototype .header-inner {
    border-radius: var(--radius-lg);
    align-items: flex-start;
    padding: var(--space-3);
  }

  .prototype .nav {
    gap: 0.1rem;
  }

.prototype .button-primary:hover {
  background: var(--prototype-green);
  border-color: var(--prototype-green);
  color: var(--text-inverse);
}

.prototype-hero {
    padding-top: 4.5rem;
  }

  .prototype-issue-title {
    max-width: 17ch;
  }
}

@media (max-width: 560px) {
  .prototype-note .container {
    display: block;
  }

  .prototype-issue-band,
  .prototype-selected-work,
  .prototype-process-loop-band,
  .prototype-final-cta {
    border-radius: 0;
  }

  .prototype .nav a {
    padding: var(--space-1) var(--space-2);
  }

  .prototype .header-inner {
    border-radius: var(--radius-lg);
  }

.prototype-note-card,
.prototype-system-card,
.prototype-proof-card {
  border-radius: var(--radius-lg);
}
}

/* Homepage positioning pass — 2026-06-04 */
.prototype .underline-build::after {
  background: var(--prototype-pink);
}

.prototype .underline-run::after {
  background: var(--prototype-green);
}

.prototype-hero h1 {
  max-width: 12ch;
}

/* Number badges are deliberately uncoloured. design-system/11 rule: "Do not
   colour numbers unless the number itself has a branded role." These were
   also positional (:nth-child), so they re-coloured themselves whenever a
   sibling was added or removed. */

.prototype-issue-support {
  max-width: 44rem;
  margin: 0.2rem 0 0;
  color: var(--prototype-pink);
  font-weight: var(--weight-regular);
}

.prototype-services-band {
  background: var(--prototype-soft);
}

.prototype-process-loop-band {
  background: var(--prototype-green);
}

.prototype-process-loop-band h2,
.prototype-process-loop-band .section-lead,
.prototype-process-loop-band .process-node h3,
.prototype-process-loop-band .process-node p {
  color: var(--prototype-soft);
}

.prototype-process-loop-band .process-loop-center {
  color: var(--prototype-soft);
  border-color: rgba(255, 253, 248, 0.34);
}

.prototype-process-loop-band .process-node {
  background: rgba(23, 23, 23, 0.16);
  border-color: rgba(255, 253, 248, 0.22);
}

.prototype-selected-work {
  background: var(--prototype-parchment);
}

.prototype-proof-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.prototype-proof-card-featured {
  border-color: rgba(23, 23, 23, 0.18);
  background: linear-gradient(180deg, rgba(255, 253, 248, 0.98), rgba(248, 230, 248, 0.42));
  box-shadow: inset 0 4px 0 var(--prototype-pink), 0 18px 42px rgba(23, 23, 23, 0.05);
}

.prototype-founder-band {
  background: var(--prototype-pink-soft);
}

.prototype-founder-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(280px, 0.7fr);
  gap: clamp(2rem, 6vw, 5rem);
  align-items: center;
}

.prototype-founder-grid > div > p:not(.section-lead) {
  max-width: 45rem;
  color: var(--text-secondary);
}

.prototype-founder-grid .button {
  margin-top: 0.9rem;
}

.prototype-name-story {
  padding: clamp(1.5rem, 4vw, 2.5rem);
  border: 1px solid rgba(23, 23, 23, 0.16);
  border-radius: var(--frame-radius);
  background: var(--prototype-soft);
  box-shadow: 0 20px 52px rgba(23, 23, 23, 0.08);
}

.prototype-name-story h3 {
  margin: 0.55rem 0 0.7rem;
}

.prototype-name-story p {
  margin: 0;
  color: var(--text-secondary);
}

.prototype-final-cta {
  background: var(--ink);
}

.prototype .footer {
  background: var(--prototype-soft);
}

@media (max-width: 1120px) {
  .prototype-proof-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .prototype-proof-card-featured {
    grid-column: span 2;
  }
}

@media (max-width: 980px) {
  .prototype-founder-grid,
  .prototype-proof-grid {
    grid-template-columns: 1fr;
  }

  .prototype-proof-card-featured {
    grid-column: auto;
  }
}

@media (max-width: 640px) {
  .prototype-hero h1 {
    max-width: 100%;
  }

  .prototype-issue-band .tag-loop-marquee {
    animation: none;
  }

  .prototype-issue-band .tag-loop-track[aria-hidden="true"] {
    display: none;
  }

  .prototype-issue-band .tag-loop-track {
    flex-wrap: wrap;
    justify-content: flex-start;
  }
}

/* Composition refinement — 2026-06-04 */
/* Sized by its content, not by the viewport. Forcing the hero to fill the
   first screen meant short copy was centred inside a tall box, which is what
   produced the large gap under the nav; removing the gap by aligning to the
   top simply moved the same dead space to the bottom. */
.prototype-hero {
  display: grid;
  align-items: start;
}

.prototype-hero h1 {
  max-width: 15ch;
}

.hero-title-line {
  display: block;
}

.prototype-hero .underline-build::after {
  background: var(--prototype-pink) !important;
}

.prototype-hero .underline-run::after {
  background: var(--prototype-green) !important;
}

.prototype-card-stack {
  gap: 0;
  overflow: hidden;
  border: 1px solid rgba(23, 23, 23, 0.14);
  border-radius: var(--frame-radius);
  background: rgba(255, 253, 248, 0.72);
  box-shadow: 0 18px 48px rgba(23, 23, 23, 0.05);
}

.prototype-note-card {
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.prototype-note-card + .prototype-note-card {
  border-top: 1px solid rgba(23, 23, 23, 0.12);
}

.prototype-note-index {
  width: 1.9rem;
  height: 1.9rem;
  font-size: var(--text-2xs);
}

.prototype-full-band {
  min-height: min(100svh, 58rem);
  display: grid;
  align-items: center;
}

.prototype-selected-work .section-header {
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.prototype-proof-card {
  display: grid;
  align-content: start;
  padding: clamp(1.25rem, 2.4vw, 1.8rem);
}

.prototype-proof-card h3 {
  margin-bottom: 0.65rem;
  font-size: var(--text-xl);
}

.prototype-proof-metric {
  margin: 0.7rem 0 0.9rem;
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  line-height: 1.2;
}

.prototype-proof-card > p {
  margin-bottom: 0.55rem;
  font-size: var(--text-base);
}

.prototype-proof-list {
  margin: 0.45rem 0 0;
  gap: var(--space-1);
}

.prototype-proof-list p {
  padding: var(--space-2) var(--space-2);
  border-radius: var(--radius-sm);
  font-size: var(--text-sm);
  line-height: 1.42;
}

.prototype-closing-band {
  background: var(--prototype-parchment);
}

.prototype-closing-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--grid-gap);
  align-items: stretch;
}

.prototype-founder-panel,
.prototype-invitation-panel {
  display: grid;
  align-content: center;
  min-height: clamp(30rem, 62svh, 40rem);
  padding: clamp(2rem, 5vw, 4.5rem);
  border-radius: var(--section-shell-radius);
}

.prototype-founder-panel {
  background: var(--prototype-pink-soft);
  color: var(--text-primary);
}

.prototype-founder-panel p {
  color: var(--text-secondary);
}

.prototype-founder-panel .button {
  justify-self: start;
  margin-top: 0.8rem;
}

.prototype-invitation-panel {
  background: var(--ink);
  color: var(--prototype-soft);
}

.prototype-invitation-panel h2 {
  color: var(--prototype-soft);
}

.prototype-invitation-panel p {
  color: var(--text-secondary);
}

.prototype-invitation-panel .eyebrow {
  color: var(--prototype-pink);
}

.prototype-invitation-panel .button-primary {
  background: var(--prototype-green);
  border-color: var(--prototype-green);
  color: var(--text-inverse);
}

.prototype-invitation-panel .button-secondary {
  background: var(--prototype-soft);
  color: var(--text-primary);
}

@media (max-width: 980px) {
  .prototype-full-band,
  .prototype-hero {
    min-height: auto;
  }

  .prototype-closing-grid {
    grid-template-columns: 1fr;
  }

  .prototype-founder-panel,
  .prototype-invitation-panel {
    min-height: auto;
  }
}

@media (max-width: 640px) {
  .hero-title-line {
    display: inline;
  }

  .hero-title-line + .hero-title-line::before {
    content: ' ';
  }

  .prototype-founder-panel,
  .prototype-invitation-panel {
    padding: var(--space-6) var(--space-5);
    border-radius: var(--radius-lg);
  }
}

/* Restored process, founder, and closing rhythm — 2026-06-04d */
.prototype-process-loop-band {
  background: var(--ink);
}

.prototype-process-loop-band h2,
.prototype-process-loop-band .section-lead,
.prototype-process-loop-band .process-node h3,
.prototype-process-loop-band .process-node p {
  color: var(--prototype-soft);
}

.prototype-process-loop-band .process-loop-center {
  color: var(--prototype-pink-soft);
  border-color: rgba(232, 168, 231, 0.24);
  white-space: nowrap;
  min-width: max-content;
}

.prototype-process-loop-band .process-node {
  background: transparent;
  border-color: transparent;
}

.prototype-founder-band {
  background: var(--prototype-pink-soft);
}

.prototype-founder-layout {
  display: grid;
  grid-template-columns: minmax(0, 0.92fr) minmax(280px, 0.68fr);
  gap: clamp(2.5rem, 8vw, 7rem);
  align-items: end;
}

.prototype-founder-layout .section-header {
  margin: 0;
}

.prototype-founder-layout .section-header h2 {
  max-width: 17ch;
}

.prototype-founder-layout .section-lead,
.prototype-founder-detail p {
  color: var(--text-primary);
}

.prototype-founder-detail {
  display: grid;
  align-content: end;
  gap: var(--space-5);
  max-width: 37rem;
}

.prototype-founder-detail p {
  margin: 0;
  font-size: var(--text-xl);
  line-height: 1.58;
}

.prototype-founder-detail .button {
  justify-self: start;
}

.prototype-final-cta {
  margin: 0;
  padding: clamp(4.5rem, 9vw, 8rem) 0;
  border-radius: 0;
  background: var(--ink);
}

.prototype-final-cta h2 {
  color: var(--prototype-soft);
}

.prototype-final-cta .eyebrow {
  color: var(--prototype-pink);
}

.prototype-final-cta .button-primary {
  background: var(--prototype-green);
  border-color: var(--prototype-green);
  color: var(--text-inverse);
}

.prototype-final-cta .button-secondary {
  background: var(--prototype-soft);
  border-color: var(--prototype-soft);
  color: var(--text-primary);
}

@media (max-width: 900px) {
  .prototype-founder-layout {
    grid-template-columns: 1fr;
    gap: var(--space-5);
  }

  .prototype-founder-detail {
    max-width: 100%;
  }
}

/* Unified section rhythm and content hierarchy — 2026-06-04e */
.prototype {
  --prototype-band-y: clamp(4.75rem, 7vw, 6.5rem);
}

.prototype-full-band {
  min-height: auto;
  padding-top: var(--prototype-band-y);
  padding-bottom: var(--prototype-band-y);
}

.prototype-full-band > .container,
.prototype-issue-band .container {
  padding-top: 0;
  padding-bottom: 0;
}

.prototype-issue-title {
  max-width: 22ch;
  font-size: var(--text-3xl);
  line-height: 1.14;
}

.prototype-issue-copy-only .prototype-issue-title {
  max-width: 22ch;
}

.prototype-issue-band .tag-loop {
  overflow: visible;
  margin-top: 0.8rem;
  padding: 0;
  mask-image: none;
  -webkit-mask-image: none;
}

.prototype-issue-band .tag-loop-marquee {
  display: block;
  width: 100%;
  animation: none;
}

.prototype-issue-band .tag-loop-track {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-3);
  width: 100%;
  min-width: 0;
}

.prototype-issue-band .tag-loop-track[aria-hidden='true'] {
  display: none;
}

.prototype-issue-band .tag-chip,
.prototype-issue-band .tag-chip-text {
  width: 100%;
  min-width: 0;
}

.prototype-issue-band .tag-chip-text {
  justify-content: center;
  min-height: 3.15rem;
  padding: var(--space-2) var(--space-3);
  text-align: center;
  white-space: normal;
}

.prototype-system-card {
  color: var(--text-primary);
}

.prototype-system-card p {
  color: var(--text-secondary);
}

.prototype-system-card .card-icon-chip {
  box-shadow: none;
}

.prototype-system-card .card-icon-chip img {
  width: 1.15rem;
}

.prototype-founder-layout {
  align-items: start;
}

.prototype-founder-layout .section-header h2 {
  margin-bottom: 0;
}

.prototype-founder-detail {
  align-content: start;
  gap: var(--space-4);
}

.prototype-founder-detail .button-secondary:hover {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--prototype-soft);
}

.prototype-final-cta {
  padding-top: var(--prototype-band-y);
  padding-bottom: var(--prototype-band-y);
}

@media (max-width: 900px) {
  .prototype-issue-band .tag-loop-track {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  .prototype {
    --prototype-band-y: 4rem;
  }

  .prototype-issue-band .tag-loop-track {
    grid-template-columns: 1fr;
  }
}

/* Copy and card hierarchy refinement — 2026-06-04f */
.prototype-issue-lead {
  max-width: 58rem;
  font-size: var(--text-lg);
  line-height: 1.62;
  color: var(--text-secondary);
}

.prototype-system-card h3,
.prototype-proof-card h3 {
  color: var(--text-primary);
}

.prototype-system-card > p,
.prototype-proof-card > p,
.prototype-proof-list p {
  color: var(--text-secondary);
}

/* The outcome is the payoff, so it steps up to ink while the description
   stays charcoal. Label reuses the plum eyebrow treatment from .card-label
   rather than inventing a third emphasis style. */
.prototype-system-card .prototype-card-outcome {
  display: block;
  align-self: start;
  margin: 0;
  padding-top: var(--space-3);
  border-top: 1px solid rgba(23, 23, 23, 0.12);
  color: var(--text-primary);
}

.prototype-card-outcome strong {
  display: block;
  margin-bottom: 0.25rem;
  color: var(--text-accent);
  font-family: var(--font-sans);
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

/* Price sits in the card's fourth grid row, pinned to the bottom so the
   three cards line their prices up regardless of description length. */
.prototype-system-card .prototype-card-price {
  align-self: end;
  padding-top: var(--space-3);
  border-top: 1px solid rgba(23, 23, 23, 0.12);
  color: var(--text-primary);
  font-size: var(--text-sm);
  font-weight: var(--weight-bold);
}

.prototype-proof-card .prototype-proof-split-title {
  max-width: none;
}

.prototype-proof-split-title span {
  display: block;
  white-space: nowrap;
}

@media (max-width: 640px) {
  .prototype-proof-split-title span {
    white-space: normal;
  }
}

.prototype-founder-detail p {
  max-width: 48rem;
  color: var(--text-secondary);
}

/* Body scale and founder portrait composition — 2026-06-04g */
.prototype-issue-lead {
  font-size: var(--text-base);
  line-height: 1.65;
  color: var(--text-secondary);
}

.prototype-founder-layout {
  grid-template-columns: minmax(0, 1.12fr) minmax(17rem, 0.58fr);
  align-items: center;
}

.prototype-founder-copy {
  display: grid;
  gap: var(--space-4);
}

.prototype-founder-copy h2 {
  margin-bottom: 0;
}

.prototype-founder-copy p {
  max-width: 48rem;
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--text-base);
  line-height: 1.65;
}

.prototype-founder-copy .button {
  justify-self: start;
  margin-top: 0.25rem;
}

.prototype-founder-copy .button-secondary:hover {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--prototype-soft);
}

.prototype-founder-portrait {
  display: grid;
  place-items: center;
  align-content: center;
  gap: var(--space-4);
  min-height: clamp(20rem, 34vw, 29rem);
  border: 1px solid rgba(23, 23, 23, 0.16);
  border-radius: var(--section-shell-radius);
  background: rgba(255, 253, 248, 0.5);
  color: var(--text-accent);
}

.prototype-founder-portrait-mark {
  display: grid;
  place-items: center;
  width: clamp(7rem, 12vw, 10rem);
  aspect-ratio: 1;
  border: 1px solid rgba(23, 23, 23, 0.18);
  border-radius: 50%;
  background: var(--prototype-soft);
  font-family: var(--font-heading);
  font-size: var(--text-4xl);
}

.prototype-founder-portrait span {
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.prototype-founder-work {
  position: relative;
  display: grid;
  min-height: clamp(20rem, 34vw, 29rem);
  border: 1px solid rgba(23, 23, 23, 0.16);
  border-radius: var(--section-shell-radius);
  background:
    linear-gradient(135deg, rgba(255, 253, 248, 0.78), rgba(214, 231, 225, 0.42)),
    var(--prototype-soft);
  overflow: hidden;
}

.prototype-founder-work::before {
  content: "";
  position: absolute;
  inset: 12%;
  border: 1px solid rgba(23, 23, 23, 0.12);
  border-radius: var(--radius-pill);
}

.prototype-work-card {
  position: absolute;
  min-width: 9.6rem;
  padding: var(--space-3) var(--space-4);
  border: 1px solid rgba(23, 23, 23, 0.14);
  border-radius: var(--radius-pill);
  background: rgba(255, 253, 248, 0.82);
  color: var(--text-primary);
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  letter-spacing: 0.06em;
  text-align: center;
  text-transform: uppercase;
  box-shadow: 0 12px 26px rgba(23, 23, 23, 0.06);
}

.prototype-work-card-one {
  top: 18%;
  left: 12%;
}

.prototype-work-card-two {
  top: 34%;
  right: 10%;
  background: var(--prototype-pink-soft);
}

.prototype-work-card-three {
  bottom: 30%;
  left: 18%;
  background: var(--prototype-green-soft);
}

.prototype-work-card-four {
  right: 16%;
  bottom: 14%;
}

@media (max-width: 900px) {
  .prototype-founder-layout {
    grid-template-columns: 1fr;
  }

  .prototype-founder-portrait {
    min-height: 18rem;
  }
}

/* Coordinated section rhythm and split issue layout — 2026-06-04h */
.prototype {
  --prototype-eyebrow-heading-gap: 1rem;
}

.prototype-issue-copy-only .prototype-issue-copy {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(22rem, 0.92fr);
  grid-template-areas:
    "eyebrow pills"
    "title pills"
    "lead pills"
    "support pills";
  column-gap: clamp(3rem, 7vw, 7rem);
  row-gap: 0;
  align-items: start;
  max-width: none;
}

.prototype-issue-copy .eyebrow {
  grid-area: eyebrow;
  margin-bottom: 0;
}

.prototype-issue-copy-only .prototype-issue-title {
  grid-area: title;
  max-width: 26ch;
  margin: var(--prototype-eyebrow-heading-gap) 0 0;
}

.prototype-issue-copy-only .prototype-issue-lead {
  grid-area: lead;
  max-width: 33rem;
  margin: 1.5rem 0 0;
}

.prototype-issue-copy-only .prototype-issue-support {
  grid-area: support;
  max-width: 33rem;
  margin: 1.15rem 0 0;
}

.prototype-issue-band .tag-loop {
  grid-area: pills;
  align-self: center;
  margin: 0;
}

.prototype-issue-band .tag-loop-track {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3);
}

.prototype-issue-band .tag-chip:nth-child(n) .tag-chip-text {
  background: var(--prototype-soft);
  border-color: rgba(255, 253, 248, 0.34);
  color: var(--text-primary);
}

.prototype-services-band {
  background: var(--prototype-parchment);
}

.prototype-system-card .card-label {
  display: block;
  color: var(--text-accent);
}

/* Not --text-3xl directly. That token runs to 3.4vw and does not stop growing
   until roughly 1365px, but .container caps at 1120px, so between about 1160px
   and 1365px the type keeps scaling while the card cannot. "Product + Ops
   Triage", the longest title, tipped onto a second line from 1320px up: wider
   window, worse wrap. Capped just under the size at which it breaks so all
   three titles hold one line at every width the three-column grid is used. */
.prototype-system-card .card-label + h3 {
  font-size: clamp(2.1rem, 3.4vw, 2.65rem);
  line-height: 1.08;
}

.prototype-process-loop-band .section-header h2 span,
.prototype-founder-copy h2 span,
.prototype-issue-title span {
  display: block;
}

.prototype-founder-layout .prototype-founder-copy h2 span {
  white-space: nowrap;
}

.prototype-process-loop-band .section-header h2 span:first-child {
  white-space: nowrap;
}

.prototype-founder-layout .prototype-founder-copy h2 {
  max-width: min(100%, 42rem);
}

.prototype-founder-copy {
  gap: 0;
}

.prototype-founder-copy .eyebrow {
  margin-bottom: 0;
}

.prototype-founder-copy .eyebrow + h2 {
  margin-top: var(--prototype-eyebrow-heading-gap);
}

.prototype-founder-copy h2 + p {
  margin-top: 1.2rem;
}

.prototype-founder-copy p + .button {
  margin-top: 1.4rem;
}

@media (max-width: 900px) {
  .prototype-issue-copy-only .prototype-issue-copy {
    grid-template-columns: 1fr;
    grid-template-areas:
      "eyebrow"
      "title"
      "lead"
      "support"
      "pills";
    column-gap: 0;
  }

  .prototype-issue-copy-only .prototype-issue-title,
  .prototype-issue-copy-only .prototype-issue-lead,
  .prototype-issue-copy-only .prototype-issue-support {
    max-width: 42rem;
  }

  .prototype-issue-band .tag-loop {
    margin-top: 2rem;
  }
}

@media (max-width: 640px) {
  .prototype-founder-layout .prototype-founder-copy h2 span,
  .prototype-process-loop-band .section-header h2 span:first-child {
    white-space: normal;
  }
}

/* Tactile line-language alignment — 2026-06-19 */
.prototype-card-stack {
  position: relative;
}

/* The decorative hero thread was removed. It added no meaning and drew
   through the body copy once the note cards became transparent. */

/* 16px of horizontal padding left the copy almost touching the card edge.
   The stack is a single card, so this sets the breathing room for all three. */
.prototype-note-card {
  z-index: 1;
  padding: var(--space-5) var(--space-6);
}

/* .kicker carries a 0.85rem bottom margin globally. Inside a centred flex row
   that makes the label box taller than the badge, so centring lifted the badge
   off the text baseline. */
.prototype-note-heading .kicker {
  margin: 0;
}

/* Hairline separators, the same pattern used by the About capabilities, the
   services steps and the proof stats. Without them the three blocks read as
   one continuous column of text. This is not the decorative vertical thread
   that was removed earlier. */
.prototype-note-card + .prototype-note-card {
  border-top: 1px solid rgba(23, 23, 23, 0.12);
}

.prototype-note-index {
  position: relative;
  background: var(--prototype-soft);
  box-shadow: 0 0 0 5px rgba(255, 253, 248, 0.86);
  z-index: 1;
}

.prototype-founder-copy .button.button-secondary,
.prototype-founder-copy .button.button-secondary:hover,
.prototype-founder-copy .button.button-secondary:focus-visible {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--prototype-soft);
}

.prototype-founder-work {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-content: center;
  gap: 0;
  padding: clamp(1.4rem, 3vw, 2.2rem);
  border-color: var(--ink);
  background: var(--ink);
}

.prototype-founder-work::before {
  content: none;
}

.prototype-work-card,
.prototype-work-card-one,
.prototype-work-card-two,
.prototype-work-card-three,
.prototype-work-card-four {
  position: relative;
  inset: auto;
  min-width: 0;
  padding: var(--space-5) var(--space-3) var(--space-5) var(--space-6);
  border: 0;
  border-bottom: 1px solid rgba(255, 253, 248, 0.2);
  border-radius: 0;
  background: transparent;
  color: var(--prototype-soft);
  font-size: var(--text-xs);
  text-align: left;
  box-shadow: none;
}

.prototype-work-card:nth-child(odd) {
  border-right: 1px solid rgba(255, 253, 248, 0.2);
}

.prototype-work-card:nth-last-child(-n + 2) {
  border-bottom: 0;
}

.prototype-work-card::before {
  content: "";
  position: absolute;
  top: 1.22rem;
  left: 0.25rem;
  width: 1.35rem;
  height: 1.35rem;
  background: center / contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3.5 12.5c2 1 3.8 2.8 5.2 5.2 3.2-6.4 6.7-10.1 11.9-13.2' fill='none' stroke='%23E8A8E7' stroke-width='2.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  transform: rotate(-3deg);
}

.prototype-work-card:nth-child(3)::before,
.prototype-work-card:nth-child(4)::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3.5 12.5c2 1 3.8 2.8 5.2 5.2 3.2-6.4 6.7-10.1 11.9-13.2' fill='none' stroke='%232D5D55' stroke-width='2.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  filter: brightness(1.75) saturate(0.8);
}

@media (max-width: 560px) {
  .prototype-founder-work {
    grid-template-columns: 1fr;
  }

  .prototype-work-card:nth-child(odd) {
    border-right: 0;
  }

  .prototype-work-card:nth-last-child(2) {
    border-bottom: 1px solid rgba(255, 253, 248, 0.2);
  }
}

@media (max-width: 560px) {
  /* The arrow is the only link in each services card and the glyph is 22px.
     A pseudo-element carries the 44px touch target so the arrow itself stays
     where it was drawn. */
  .prototype-card-arrow::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 44px;
    height: 44px;
    transform: translate(-50%, -50%);
  }
}

/* Client quote, 2026-08-19, revised to a band of its own.
   It first sat inside Proof of work as a pull-quote under the snapshot it
   corroborates. That buried it: inside a section of our own claims, a
   testimonial reads as more of the same voice. Given its own full-width band it
   becomes a change of speaker, which is the whole value of having one.
   Black, borrowing the final-CTA treatment, so it lands between the parchment
   proof band and the pink founder band without needing any ornament. */
.prototype-testimonial-band {
  position: relative;
  z-index: 5;
  margin-top: 0;
  border: 0;
  border-radius: 0;
  overflow: hidden;
  background: var(--ink);
  color: var(--surface);
}

.prototype-testimonial-band .eyebrow {
  color: var(--prototype-pink);
}

.prototype-testimonial {
  display: grid;
  justify-items: center;
  gap: var(--space-4);
  margin: 0;
  text-align: center;
}

.prototype-testimonial blockquote {
  margin: 0;
}

.prototype-testimonial blockquote p {
  max-width: 48rem;
  margin: 0;
  font-family: var(--font-heading);
  /* Deliberately below the h2 scale. It is a long quote, and at heading size
     the reader stops reading it as speech and starts skimming it as a banner. */
  font-size: clamp(1.15rem, 1rem + 0.85vw, 1.6rem);
  font-weight: var(--weight-medium);
  line-height: 1.5;
  text-wrap: pretty;
}

.prototype-testimonial figcaption {
  display: grid;
  gap: 0.15rem;
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  font-weight: var(--weight-bold);
}

/* Not --text-secondary. That token is a dark grey for light surfaces and drops
   to 2.76:1 on the ink band, under the 4.5:1 minimum. Tinted surface colour is
   what the final-CTA band already uses on the same background. */
.prototype-testimonial figcaption span {
  color: rgba(255, 253, 248, 0.72);
  font-weight: var(--weight-regular);
}

/* Full surface colour on the link, not the 0.72 tint it sits inside, so it is
   distinguishable from the text around it by more than the underline alone. */
.prototype-testimonial figcaption a {
  color: var(--surface);
  text-decoration: underline;
  text-underline-offset: 0.2em;
  text-decoration-thickness: from-font;
  transition: opacity 0.2s ease;
}

.prototype-testimonial figcaption a:hover {
  opacity: 0.75;
}
