@import url("https://fonts.googleapis.com/css2?family=Onest:wght@300;400;500;600;700;800&display=swap");

:root {
  --bg: #f4f4f4;
  --text: #202020;
  --muted: #777;
  --line: #dedede;
  --card: #fff;
  --blue: #3581dd;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: Onest, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  letter-spacing: 0;
}

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

.topbar {
  position: fixed;
  inset: 0 0 auto;
  height: 64px;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px;
  background: #fff;
  border-bottom: 1px solid #e8e8e8;
  backdrop-filter: none;
}

.avatar {
  width: 46px;
  height: 46px;
  display: block;
  border-radius: 50%;
  overflow: hidden;
}

.avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.menu-btn {
  width: 34px;
  height: 34px;
  border: 0;
  background: transparent;
  display: grid;
  place-content: center;
  gap: 6px;
  cursor: pointer;
}

.menu-btn span {
  width: 20px;
  height: 2px;
  background: #222;
  display: block;
}

.menu {
  position: absolute;
  right: 10px;
  top: 58px;
  width: min(360px, calc(100vw - 20px));
  background: white;
  border: 1px solid #e9e9e9;
  border-radius: 16px;
  padding: 18px;
  box-shadow: 0 20px 45px rgba(0, 0, 0, 0.08);
  display: none;
}

.menu.open {
  display: grid;
}

.menu a {
  font-size: 18px;
  font-weight: 500;
  padding: 12px 2px;
}

.page,
.narrow {
  width: 352px;
  max-width: calc(100vw - 40px);
  margin: 0 auto;
}

.hero {
  padding-top: 100px;
}

h1,
h2 {
  margin: 0;
  font-weight: 300;
  line-height: 1;
}

h1 {
  font-size: 68px;
}

h2 {
  font-size: 68px;
  margin-bottom: 54px;
}

.hero-media {
  position: relative;
  height: 196px;
  margin-top: 28px;
  border-radius: 8px;
  overflow: hidden;
}

.hero-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.88));
}

.socials {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 20px 0 18px;
}

.socials a {
  width: 52px;
  height: 52px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: white;
  font-size: 17px;
  font-weight: 600;
}

.name,
p {
  margin: 0;
  font-size: 18px;
  line-height: 1.78;
  font-weight: 400;
}

.section {
  padding-top: 62px;
}

.about h2 {
  margin-bottom: 48px;
}

.eyebrow {
  display: grid;
  gap: 2px;
  margin-bottom: 28px;
}

.eyebrow strong {
  font-size: 18px;
  line-height: 1.2;
  font-weight: 600;
}

.eyebrow span {
  color: var(--muted);
  font-size: 14px;
  font-weight: 500;
}

.lead {
  font-size: 22px;
  line-height: 1.46;
  font-weight: 650;
  margin-bottom: 24px;
}

.portrait {
  width: 100%;
  height: 436px;
  border-radius: 4px;
  object-fit: cover;
  margin-bottom: 20px;
}

.number {
  font-size: 18px;
  margin-bottom: 38px;
}

.rule {
  height: 1px;
  background: var(--line);
  margin-bottom: 50px;
}

.job {
  margin-top: 38px;
}

h3,
h4 {
  margin: 0;
  font-size: 22px;
  line-height: 1.45;
  font-weight: 650;
}

h4 {
  font-size: 18px;
  margin-top: 36px;
}

.job p + p,
.job h4 + p {
  margin-top: 8px;
}

.extra h3 {
  margin-top: 26px;
}

.portfolio h2 {
  margin-bottom: 46px;
}

.project-head {
  display: flex;
  align-items: baseline;
  gap: 22px;
  margin-bottom: 22px;
}

.project-head strong {
  font-size: 22px;
  font-weight: 650;
}

.project-head span {
  color: #777;
  font-size: 18px;
  font-weight: 500;
}

.blue-card {
  position: relative;
  background: var(--blue);
  border-radius: 18px;
  overflow: hidden;
  color: white;
  min-height: 760px;
  padding: 92px 24px 40px;
}

.blue-card h3 {
  position: relative;
  z-index: 2;
  padding: 0 18px;
  color: white;
  font-size: 36px;
  font-weight: 300;
  line-height: 1.18;
}

.blue-card a {
  position: relative;
  z-index: 2;
  display: inline-flex;
  gap: 18px;
  align-items: center;
  margin: 54px 0 54px 18px;
  background: white;
  color: #1f1f1f;
  border-radius: 8px;
  padding: 18px 28px;
  font-size: 24px;
  font-weight: 500;
}

.blue-card > img {
  position: relative;
  z-index: 1;
  width: calc(100% + 80px);
  max-width: none;
  margin-left: 18px;
  display: block;
  border-radius: 12px;
}

.blue-card p {
  position: relative;
  z-index: 2;
  padding: 58px 18px 0;
  font-size: 24px;
  color: white;
}

.logos {
  position: relative;
  z-index: 2;
  overflow: hidden;
  width: 100%;
  max-width: 100%;
  padding: 42px 0 0;
  color: rgba(255, 255, 255, 0.88);
}

.logos-track {
  display: flex;
  align-items: center;
  gap: 56px;
  width: max-content;
  font-size: 28px;
  font-weight: 800;
  white-space: nowrap;
  animation: logos-marquee 14s linear infinite;
}

.client-logo {
  display: block;
  width: auto;
  height: 64px;
  object-fit: contain;
  opacity: 0.9;
}

@keyframes logos-marquee {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(-50%);
  }
}

.logo-pure {
  font-size: 56px;
  font-weight: 300;
  opacity: 0.72;
}

.logo-forum {
  font-size: 19px;
  line-height: 0.9;
  letter-spacing: 1px;
}

.logo-lsr {
  padding: 0;
  background: transparent;
  color: rgba(255, 255, 255, 0.92);
  font-size: 32px;
  letter-spacing: 8px;
}

.logo-uds {
  font-size: 46px;
}

.logo-kit {
  display: grid;
  gap: 2px;
  padding: 8px 16px 7px;
  border: 3px solid rgba(255, 255, 255, 0.9);
  font-size: 32px;
  line-height: 0.85;
  text-align: center;
}

.logo-kit small {
  font-size: 10px;
  letter-spacing: 4px;
}

.logo-near {
  display: grid;
  gap: 5px;
  justify-items: center;
  color: rgba(255, 255, 255, 0.9);
  text-align: center;
}

.logo-near b {
  font-size: 42px;
  line-height: 0.8;
}

.logo-near small {
  font-size: 12px;
  line-height: 1.05;
}

.carousel {
  width: 352px;
  max-width: calc(100vw - 40px);
  margin: 86px 0 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 64px;
  overflow: visible;
  padding-bottom: 0;
  transform: none;
}

.carousel::-webkit-scrollbar {
  display: none;
}

.project {
  min-width: 0;
  display: block;
  transition: transform 180ms ease;
}

.project:hover {
  transform: translateY(-2px);
}

.project-media {
  width: 100%;
  height: 320px;
  background: #d0ccc8;
  padding: 26px 18px;
  border-radius: 18px;
  display: grid;
  place-items: center;
  overflow: hidden;
}

.project-media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  border-radius: 12px;
  display: block;
}

.carousel .project:nth-child(2n) .project-media {
  background: #d8e9f7;
}

.carousel .project:nth-child(3n) .project-media {
  background: #e2e5e8;
}

.carousel .project:nth-child(4n) .project-media {
  background: #d4cdef;
}

.project p {
  margin-top: 20px;
  font-size: 22px;
  line-height: 1.3;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.dots {
  display: none;
  width: max-content;
  margin: 20px auto 58px;
  gap: 8px;
  background: #bdbdbd;
  border-radius: 999px;
  padding: 9px 13px;
}

.dots span {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #e9e9e9;
}

.freelance-title {
  margin-top: 220px;
}

.phones {
  height: 320px;
  display: flex;
  justify-content: center;
  gap: 12px;
  border-radius: 8px;
  background: #ece9e5;
  padding: 22px 10px;
}

.phones img {
  width: 96px;
  height: 276px;
  object-fit: cover;
  border-radius: 18px;
}

.skills h2 {
  font-size: 52px;
  margin: 42px 0;
  text-transform: capitalize;
}

.skill-card {
  background: white;
  border: 1px solid #e8e8e8;
  border-radius: 18px;
  padding: 30px;
  min-height: 220px;
  height: 100%;
}

.skill-card h3 {
  font-size: 22px;
  line-height: 1.16;
  font-weight: 700;
  margin-bottom: 24px;
}

.skill-card p {
  color: #555;
  font-size: 16px;
  line-height: 1.45;
}

.skills-group {
  margin-bottom: 72px;
}

.skills-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
}

.contact {
  margin-top: 48px;
  background: #1f1f1f;
  color: white;
  padding: 34px 0 38px;
}

.contact .narrow {
  display: grid;
  gap: 36px;
}

.contact-title {
  display: grid;
  gap: 4px;
}

.contact-title strong {
  font-size: 20px;
  line-height: 1.1;
}

.contact-title span {
  color: rgba(255, 255, 255, 0.62);
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0;
}

.contact-link {
  display: block;
  width: max-content;
  max-width: 100%;
  font-size: 20px;
  line-height: 1.25;
  margin-bottom: 24px;
}

.contact-socials {
  display: none;
  gap: 16px;
  align-items: center;
}

.contact-socials a {
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  border: 1.5px solid rgba(255, 255, 255, 0.84);
  border-radius: 50%;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  line-height: 1;
}

.framer-badge {
  position: fixed;
  right: 20px;
  bottom: 20px;
  background: white;
  border: 1px solid #e2e2e2;
  border-radius: 10px;
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 700;
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
  z-index: 15;
}

@media (max-width: 480px) {
  .page,
  .narrow {
    width: calc(100vw - 32px);
    max-width: 352px;
  }

  h1,
  h2 {
    font-size: clamp(54px, 17vw, 68px);
  }

  .hero {
    padding-top: 94px;
  }

  .carousel {
    width: calc(100vw - 32px);
    transform: none;
  }

  .project {
    width: calc(100vw - 32px);
    max-width: 352px;
  }

  .project-media {
    height: 300px;
    padding: 24px 16px;
  }

  .project p {
    font-size: 20px;
  }

  .portfolio h2 {
    font-size: clamp(72px, 22vw, 96px);
    margin-bottom: 54px;
  }

  .bruno-card .project-head {
    gap: 22px;
  }

  .bruno-card .project-head strong,
  .bruno-card .project-head span {
    font-size: 24px;
  }

  .blue-card {
    min-height: 0;
    padding: 26px 0 34px;
  }

  .blue-card h3 {
    padding: 0 22px;
    font-size: 30px;
    line-height: 1.18;
  }

  .blue-card a {
    margin: 44px 0 48px 22px;
    padding: 15px 24px;
    font-size: 21px;
  }

  .blue-card > img {
    width: calc(100% + 120px);
    margin-left: 22px;
    border-radius: 10px;
  }

  .blue-card p {
    padding: 48px 22px 0;
    font-size: 20px;
    line-height: 1.2;
  }

  .logos {
    padding: 54px 0 0;
  }

  .logos-track {
    gap: 44px;
    animation-duration: 12s;
  }

  .client-logo {
    height: 54px;
  }

  .logo-lsr {
    font-size: 30px;
    letter-spacing: 8px;
  }

  .logo-uds {
    font-size: 38px;
  }

  .logo-pure {
    font-size: 40px;
  }

  .logo-kit {
    font-size: 25px;
  }

  .logo-near b {
    font-size: 34px;
  }

  .logo-near small {
    font-size: 10px;
  }

  .framer-badge {
    right: 12px;
    bottom: 12px;
  }
}

@media (min-width: 900px) {
  .topbar {
    height: 94px;
    padding: 16px 80px;
    justify-content: space-between;
    gap: 40px;
  }

  .avatar {
    width: 62px;
    height: 62px;
  }

  .menu-btn {
    display: none;
  }

  .menu,
  .menu.open {
    position: static;
    width: auto;
    display: flex;
    gap: clamp(18px, 2.4vw, 40px);
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
  }

  .menu a {
    padding: 0;
    font-size: 18px;
    text-decoration: underline;
    text-underline-offset: 2px;
  }

  .page,
  .narrow {
    width: min(1240px, calc(100vw - 200px));
    max-width: none;
  }

  .hero {
    position: relative;
    display: grid;
    grid-template-columns: 930px 1fr;
    column-gap: 120px;
    padding-top: 140px;
  }

  .hero h1 {
    grid-column: 1 / -1;
    font-size: 81px;
    line-height: 1.2;
  }

  .hero h1 br {
    display: none;
  }

  .hero-media {
    width: 930px;
    height: 195px;
    margin-top: 58px;
  }

  .hero-note {
    grid-column: 1;
    grid-row: 3;
    position: relative;
    z-index: 2;
    align-self: start;
    margin-top: -66px;
    padding-left: 30px;
    width: 620px;
    color: white;
    font-size: 28px;
    font-weight: 400;
    line-height: 1.2;
  }

  .socials {
    position: absolute;
    right: 0;
    top: 200px;
    width: 52px;
    flex-direction: column;
    gap: 22px;
    margin: 0;
  }

  .name {
    position: absolute;
    right: 0;
    top: 448px;
    text-align: left;
  }

  .section {
    padding-top: 76px;
  }

  .about,
  .resume,
  .extra {
    display: grid;
    grid-template-columns: 336px 724px;
    column-gap: 180px;
  }

  .about h2,
  .portfolio h2 {
    grid-column: 1 / -1;
    width: 100%;
  }

  .portfolio h2 {
    font-size: 92px;
  }

  .about .eyebrow,
  .resume .eyebrow,
  .extra .eyebrow {
    grid-column: 1;
  }

  .about .lead,
  .about .portrait,
  .about > p:not(.lead),
  .job,
  .extra h3,
  .extra p {
    grid-column: 2;
  }

  .portrait {
    width: 365px;
    height: 452px;
  }

  .number,
  .rule {
    grid-column: 2;
  }

  .job {
    margin-top: 0;
    margin-bottom: 52px;
  }

  .portfolio {
    width: min(1240px, calc(100vw - 200px));
  }

  .bruno-card {
    width: 100%;
    margin-left: 0;
  }

  .bruno-card .project-head {
    margin-bottom: 28px;
  }

  .bruno-card .project-head strong {
    font-size: 28px;
  }

  .bruno-card .project-head span {
    font-size: 24px;
  }

  .blue-card {
    min-height: 650px;
    padding: 128px 68px 48px;
  }

  .blue-card h3 {
    width: 500px;
    padding: 0;
    font-size: 42px;
    line-height: 1.18;
  }

  .blue-card a {
    margin: 54px 0 0;
    padding: 17px 30px;
    font-size: 22px;
  }

  .blue-card > img {
    position: absolute;
    left: max(640px, 55%);
    top: 106px;
    width: 700px;
    margin: 0;
    border-radius: 12px;
  }

  .blue-card p {
    position: absolute;
    left: 68px;
    bottom: 142px;
    padding: 0;
    font-size: 22px;
  }

  .logos {
    position: absolute;
    left: 68px;
    right: 68px;
    bottom: 48px;
    padding: 0;
  }

  .logos-track {
    gap: 72px;
    animation-duration: 14s;
  }

  .client-logo {
    height: 72px;
  }

  .logo-pure {
    font-size: 48px;
  }

  .logo-forum {
    font-size: 20px;
  }

  .logo-lsr {
    font-size: 38px;
    letter-spacing: 10px;
  }

  .logo-uds {
    font-size: 46px;
  }

  .logo-kit {
    font-size: 30px;
  }

  .logo-near b {
    font-size: 42px;
  }

  .logo-near small {
    font-size: 12px;
  }

  .skills {
    width: min(1240px, calc(100vw - 200px));
    margin: 0 auto;
  }

  .skills-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px;
  }

  .skills-group + .skills-group {
    margin-top: 24px;
  }

  .carousel {
    width: 100%;
    max-width: none;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 70px;
    margin-top: 84px;
  }

  .project {
    max-width: none;
  }

  .project-media {
    height: 430px;
    padding: 42px 34px;
  }

  .phones {
    height: 356px;
  }

  .phones img {
    width: 110px;
    height: 310px;
  }

  .contact {
    margin-top: 56px;
    padding: 42px 0 36px;
  }

  .contact .narrow {
    grid-template-columns: 1fr 1fr;
    align-items: start;
  }

  .contact-info {
    justify-self: start;
  }

  .contact-link {
    font-size: 20px;
  }

  .contact-socials {
    display: flex;
  }
}

.case-page {
  width: min(1240px, calc(100vw - 40px));
  margin: 0 auto;
  padding-top: 116px;
}

.case-hero h1 {
  margin: 0 0 58px;
  font-size: clamp(42px, 4.3vw, 62px);
  line-height: 1.2;
  font-weight: 400;
}

.case-hero h1 span {
  display: inline-block;
}

.case-hero dl {
  width: min(812px, 100%);
  margin: 0 0 120px;
}

.case-hero dl div {
  display: grid;
  grid-template-columns: minmax(160px, 336px) 1fr;
  gap: 40px;
  padding: 22px 0;
}

.case-hero dt,
.case-hero dd {
  margin: 0;
  font-size: 18px;
  line-height: 1.35;
}

.case-hero dt {
  font-weight: 650;
}

.case-cover {
  position: relative;
  min-height: 0;
  margin-bottom: 120px;
  background: var(--blue);
  border-radius: 18px;
  padding: 48px 56px;
  display: grid;
  grid-template-columns: auto auto 250px;
  align-items: center;
  justify-content: center;
  gap: 44px;
}

.case-cover .desktop-shot {
  width: auto;
  height: 380px;
  max-width: none;
  border-radius: 10px;
  display: block;
  object-fit: cover;
  box-shadow: none;
}

.case-cover .phone-shot {
  position: static;
  width: auto;
  height: 380px;
  border-radius: 10px;
  object-fit: cover;
  box-shadow: none;
}

.case-cover .site-link {
  justify-self: center;
  color: #fff;
  font-size: 18px;
  line-height: 1.35;
  text-decoration: underline;
  text-underline-offset: 4px;
}

.case-section {
  margin: 0 0 100px;
}

.case-section h2 {
  font-size: 52px;
  line-height: 1.2;
  font-weight: 400;
  margin: 0 0 42px;
}

.case-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 140px;
}

.case-grid h3 {
  font-size: 38px;
  font-weight: 400;
  margin: 0 0 34px;
}

.case-grid p,
.case-grid li {
  font-size: 18px;
  line-height: 1.55;
}

.case-grid ol {
  margin: 0;
  padding-left: 24px;
}

.case-gallery {
  display: flex;
  gap: 70px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  margin: 0 0 110px;
  padding-bottom: 10px;
  scrollbar-width: none;
}

.case-gallery::-webkit-scrollbar {
  display: none;
}

.case-gallery figure {
  margin: 0;
  flex: 0 0 auto;
  min-width: 0;
  scroll-snap-align: start;
}

.case-gallery img {
  display: block;
  border-radius: 18px;
}

.phones-row img {
  width: 249px;
  max-height: 553px;
  object-fit: cover;
}

.phones-row figure {
  flex-basis: 360px;
  max-width: 360px;
}

.phones-row figure::before {
  content: "";
  display: block;
  width: 100%;
  height: 560px;
  background: var(--blue);
  border-radius: 18px;
}

.phones-row figure {
  position: relative;
}

.phones-row figure img {
  position: absolute;
  top: 58px;
  left: 50%;
  transform: translateX(-50%);
  width: auto;
  height: 444px;
  max-height: none;
  border-radius: 10px;
}

.phones-row figcaption {
  width: 320px;
  max-width: 320px;
  margin-top: 24px;
  font-size: 24px;
  line-height: 1.2;
}

.wide-row img {
  width: 863px;
  max-width: calc(100vw - 80px);
}

.case-gallery figcaption {
  margin-top: 22px;
  font-size: 18px;
  font-weight: 600;
  line-height: 1.3;
  max-width: 100%;
  overflow-wrap: anywhere;
}

.analytic-case {
  padding-bottom: 100px;
}

.case-kicker {
  color: #6f6f6f;
  font-size: 14px;
  font-weight: 650;
  line-height: 1.4;
  margin: 0 0 18px;
  text-transform: uppercase;
}

.analytic-hero h1 {
  max-width: 1180px;
  margin-bottom: 28px;
}

.case-summary {
  max-width: 780px;
  font-size: 22px;
  line-height: 1.45;
  margin-bottom: 38px;
}

.impact-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin: 0 0 56px;
}

.impact-grid article,
.metric-table article,
.formula-grid article,
.hypothesis-list article {
  background: #fff;
  border: 1px solid #e7e7e7;
  border-radius: 18px;
  min-width: 0;
  overflow-wrap: anywhere;
}

.impact-grid article {
  min-height: 152px;
  padding: 20px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.impact-grid strong {
  display: block;
  font-size: 42px;
  font-weight: 400;
  line-height: 1;
}

.impact-grid span {
  color: #4d4d4d;
  font-size: 16px;
  line-height: 1.35;
}

.analytical-block h2,
.formula-section h2,
.result-section h2,
.takeaway-section h2 {
  max-width: 1050px;
}

.metric-table {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}

.metric-table article {
  min-height: 240px;
  padding: 22px;
}

.metric-table span {
  display: block;
  color: #777;
  font-size: 14px;
  font-weight: 650;
  margin-bottom: 30px;
  text-transform: uppercase;
}

.metric-table strong {
  display: block;
  font-size: 24px;
  font-weight: 650;
  line-height: 1.2;
  margin-bottom: 16px;
}

.metric-table p {
  font-size: 17px;
  line-height: 1.45;
}

.formula-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.formula-grid article {
  padding: 22px;
}

.formula-grid b {
  display: block;
  font-size: 20px;
  margin-bottom: 14px;
}

.formula-grid code {
  display: block;
  white-space: normal;
  color: #343434;
  background: #f3f3f3;
  border-radius: 10px;
  padding: 14px;
  font-family: inherit;
  font-size: 16px;
  line-height: 1.45;
}

.hypothesis-list {
  display: grid;
  gap: 16px;
}

.hypothesis-list article {
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: 40px;
  padding: 24px;
}

.hypothesis-list span {
  color: #777;
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
}

.hypothesis-list p {
  font-size: 22px;
  line-height: 1.45;
}

.takeaway-section {
  max-width: 920px;
}

.takeaway-section p:not(.case-kicker) {
  font-size: 22px;
  line-height: 1.55;
}

@media (max-width: 899px) {
  .hero-note {
    display: none;
  }

  .case-page {
    width: min(352px, calc(100vw - 32px));
    padding-top: 96px;
  }

  .case-hero h1 {
    font-size: 42px;
  }

  .case-hero dl div,
  .case-grid {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .case-cover {
    min-height: 0;
    display: grid;
    grid-template-columns: 1fr;
    gap: 28px;
    padding: 28px;
  }

  .case-cover .desktop-shot {
    display: none !important;
  }

  .case-cover .phone-shot {
    width: min(260px, 100%);
    height: auto;
    margin: 0 auto;
  }

  .case-cover .site-link {
    font-size: 18px;
    justify-self: center;
  }

  .case-section h2 {
    font-size: 42px;
  }

  .impact-grid,
  .metric-table,
  .formula-grid {
    grid-template-columns: 1fr;
  }

  .impact-grid,
  .metric-table,
  .formula-grid,
  .hypothesis-list {
    min-width: 0;
  }

  .case-gallery {
    width: 100%;
    max-width: 100%;
  }

  .case-gallery figure {
    flex-basis: min(310px, 82vw);
    max-width: min(310px, 82vw);
  }

  .phones-row img,
  .wide-row img {
    width: 100%;
    max-width: 100%;
  }

  .phones-row figure {
    flex-basis: min(310px, 82vw);
    max-width: min(310px, 82vw);
  }

  .phones-row figure::before {
    height: 480px;
  }

  .phones-row figure img {
    width: auto;
    height: 384px;
  }

  .phones-row figcaption {
    width: min(280px, 82vw);
    max-width: min(280px, 82vw);
    font-size: 20px;
  }

  .hypothesis-list article {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .case-summary,
  .hypothesis-list p,
  .takeaway-section p:not(.case-kicker) {
    font-size: 18px;
  }
}
