/* A calmer, line-by-line project facts layout. */
.project-caption { display: none; }

.about-grid--copy {
  grid-template-columns: minmax(0,1fr);
  max-width: 76rem;
}

.about-grid--copy > div > p { max-width: none; }
.about-details { max-width: 78rem; }
.about-details .about-greeting { margin-bottom: 1.8rem; font-size: clamp(26px, 2.6vw, 40px); font-weight: 700; line-height: 1.05; letter-spacing: -.045em; }
.about-facts { margin: 4rem 0 3.5rem; max-width: 48rem; }
.about-skills { max-width: 60rem; }
.about-skills > p { margin: 0 0 1rem; font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.about-skills ul { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0; margin: 0; padding: 0; border-top: 1px solid var(--line); list-style: none; }
.about-skills li { padding: .95rem 0; border-bottom: 1px solid var(--line); font-size: 15px; font-weight: 600; }
.about-skills li:nth-child(odd) { padding-right: 1.5rem; }
.about-skills li:nth-child(even) { padding-left: 1.5rem; }

/* Keep the experience metrics and skills as two intentional, well-spaced groups. */
.about-details .about-facts {
  margin: 4.5rem 0 4.75rem;
  border-top-color: var(--line);
}
.about-details .about-facts span,
.about-details .about-facts span:nth-child(odd),
.about-details .about-facts span:nth-child(even) {
  min-height: 0;
  padding: 1.2rem 0;
  border-bottom-color: var(--line);
}
.about-details .about-skills {
  padding-top: 1.2rem;
  border-top: 1px solid var(--line);
}
.about-details .about-skills > p { margin-bottom: 1.35rem; }

.project-tile button {
  border-radius: 999px;
  padding: .62rem .9rem;
  font-size: 10px;
}

.contact-section .contact-links { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }
.contact-section .contact-links a { display: inline-flex; align-items: center; gap: .48rem; min-height: 38px; border: 1px solid var(--line); border-radius: 999px; padding: .55rem .8rem; font-size: 12px; font-weight: 700; text-decoration: none; transition: background .2s,color .2s; }
.contact-section .contact-links a:hover { background: var(--white); color: var(--black); }
.contact-section .contact-links svg { width: 15px; height: 15px; fill: currentColor; }
.contact-section .contact-links a:nth-child(2) svg { display: none; }
.contact-section .contact-links a:nth-child(2)::before { content: ""; width: 14px; height: 14px; border: 1.5px solid currentColor; border-radius: 50%; background: radial-gradient(circle,currentColor 1px,transparent 1.4px) 1px 5px/4px 4px repeat-x; }
.contact-section .contact-links .email-icon { fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }

@media (min-width: 701px) {
  .project-tile--wide {
    grid-column: 1 / -1;
    min-height: clamp(380px, 45vw, 700px);
  }
  .project-tile--wide .tile-copy h3 { max-width: none; }
}

.number-list {
  display: block;
  width: 100%;
  max-width: 42rem;
  margin: 0;
  border-top: 1px solid rgba(17,17,18,.25);
}

.number-list span,
.number-list span:nth-child(odd),
.number-list span:nth-child(even) {
  display: grid;
  grid-template-columns: minmax(9rem,.75fr) minmax(0,1.5fr);
  align-items: baseline;
  gap: 1.25rem;
  min-height: 0;
  padding: 1.15rem 0;
  border: 0;
  border-bottom: 1px solid rgba(17,17,18,.25);
}

.number-list i,
.number-list b {
  order: initial;
}

.number-list i {
  font-size: 11px;
  font-style: normal;
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
}

.number-list b,
.number-list .stat-location b,
.number-list .stat-locations b {
  max-width: none;
  font-size: clamp(24px,2.35vw,42px);
  font-weight: 700;
  line-height: .95;
  letter-spacing: -.065em;
}

.project-gallery { width: min(100%,48rem); }
.gallery-viewport { height: auto; min-height: 0; aspect-ratio: auto; background: transparent; }
.gallery-viewport img { width: 100%; height: auto; max-height: none; object-fit: contain; }

@media (max-width: 700px) {
  /* Portrait campaign frames get their own mobile art direction. This preserves
     the model's face instead of forcing the desktop crop into a narrow card. */
  .project-tile.has-mobile-hero {
    background-image: var(--mobile-project-image);
    background-position: var(--mobile-focal);
  }
  .project-tile--wide { background-position: center 29%; }
  .project-tile--wide.has-mobile-hero { background-position: var(--mobile-focal); }
  .about-details .about-facts { margin: 3rem 0 3.5rem; }
  .about-skills ul { grid-template-columns: 1fr; }
  .about-skills li:nth-child(odd), .about-skills li:nth-child(even) { padding-left: 0; padding-right: 0; }
  .landing-role {
    top: 104px;
    right: 22px;
    bottom: auto;
  }
  .project-numbers h3 { margin-bottom: 2.2rem; }
  .number-list span,
  .number-list span:nth-child(odd),
  .number-list span:nth-child(even) {
    grid-template-columns: 8.5rem minmax(0,1fr);
    gap: .75rem;
    padding: 1rem 0;
  }
  .number-list b,
  .number-list .stat-location b,
  .number-list .stat-locations b { font-size: clamp(22px,7vw,35px); }
  .project-gallery { width: 100%; }
  .gallery-viewport { aspect-ratio: auto; }
}
