/* ===========================================================================
   Print & Crumple — section animation primitives
   ---------------------------------------------------------------------------
   Each .pc-section is a pinned full-height stage. Inside, .pc-* elements
   start hidden via clip-path centerline and resolve to fully visible as
   scroll progress moves through the pin window.
   The crumple exit transform is applied to .pc-section itself.
   =========================================================================== */

.pc-section {
  position: relative;
  min-height: 100vh;
  width: 100%;
  display: flex;
  align-items: center;
  padding: 120px var(--gutter);
  overflow: visible;
  will-change: transform, opacity, filter;
  transform-origin: 50% 50%;
}

.pc-section[data-tone="cream"]      { background: var(--cream); }
.pc-section[data-tone="cream-deep"] { background: var(--cream-deep); }
.pc-section[data-tone="paper"]      { background: var(--paper); }
.pc-section[data-tone="forest"]     { background: var(--forest); color: var(--cream); }
.pc-section[data-tone="ink"]        { background: var(--ink); color: var(--cream); }

.pc-section .eyebrow,
.pc-section h1,
.pc-section h2,
.pc-section h3,
.pc-section h4,
.pc-section p,
.pc-section .pc-card,
.pc-section .pc-image,
.pc-section .pc-cta {
  /* default hidden state for the centerline reveal */
  clip-path: inset(50% 0 50% 0);
  -webkit-clip-path: inset(50% 0 50% 0);
  will-change: clip-path, transform, opacity;
}

.pc-section .pc-line {
  /* left-to-right wipe for body paragraphs */
  clip-path: inset(0 100% 0 0);
  -webkit-clip-path: inset(0 100% 0 0);
}

.pc-section .pc-card {
  display: block;
  padding: 36px 32px;
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: 6px;
  transform-origin: var(--pc-origin-x, 50%) var(--pc-origin-y, 50%);
}

.pc-section .pc-cta {
  display: inline-flex;
}

/* Char-split spans for headlines */
.pc-char {
  display: inline-block;
  will-change: transform, opacity;
  transform-origin: 50% 100%;
}

/* Section-numbering chip */
.pc-num {
  font-family: var(--font-body);
  font-size: 12px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--ink-soft);
  display: inline-block;
}

/* ---------- Section layouts ---------- */

.pc-grid {
  display: grid;
  gap: 64px;
  align-items: center;
  max-width: var(--max-w);
  width: 100%;
  margin: 0 auto;
}
.pc-grid--split { grid-template-columns: 1fr 1fr; }
.pc-grid--two   { grid-template-columns: 1.2fr 1fr; gap: 100px; }
.pc-grid--three { grid-template-columns: repeat(3, 1fr); gap: 24px; }
.pc-grid--six   { grid-template-columns: repeat(3, 1fr); gap: 24px; }
.pc-grid--center {
  grid-template-columns: 1fr;
  text-align: center;
  justify-items: center;
  max-width: 1000px;
}

@media (max-width: 920px) {
  .pc-grid--split, .pc-grid--two { grid-template-columns: 1fr; gap: 40px; }
  .pc-grid--three, .pc-grid--six { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .pc-grid--three, .pc-grid--six { grid-template-columns: 1fr; }
}

/* ---------- Big numbered list (Key Services / How We Work) ---------- */

.pc-list { list-style: none; padding: 0; margin: 24px 0 0; }
.pc-list li {
  display: grid;
  grid-template-columns: 60px 1fr;
  gap: 24px;
  align-items: baseline;
  padding: 28px 0;
  border-top: 1px solid var(--rule);
  font-family: var(--font-display);
  font-size: clamp(22px, 2.4vw, 32px);
  font-weight: 400;
}
.pc-list li:last-child { border-bottom: 1px solid var(--rule); }
.pc-list .pc-list__num {
  font-family: var(--font-body);
  font-size: 13px;
  letter-spacing: 0.2em;
  color: var(--terracotta);
}

/* ---------- Service cards ---------- */
.pc-service {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: 6px;
  padding: 36px;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.pc-service h4 {
  font-size: 20px;
  margin-bottom: 12px;
  color: var(--forest);
  font-variation-settings: 'opsz' 36;
}
.pc-service p {
  color: var(--ink-soft);
  font-size: 15px;
  line-height: 1.6;
  margin: 0;
}
.pc-service__num {
  font-family: var(--font-body);
  font-size: 12px;
  color: var(--terracotta);
  letter-spacing: 0.22em;
  margin-bottom: 20px;
  display: block;
}

/* ---------- Director quote ---------- */
.pc-quote {
  font-family: var(--font-display);
  font-size: clamp(28px, 3.4vw, 48px);
  line-height: 1.18;
  font-weight: 400;
  font-variation-settings: 'opsz' 144;
  color: var(--ink);
  letter-spacing: -0.01em;
  margin: 0 0 32px;
}
.pc-quote::before {
  content: "“";
  display: block;
  font-size: 1.5em;
  color: var(--terracotta);
  line-height: 0.4;
  margin-bottom: 24px;
}
.pc-attribution {
  display: flex;
  align-items: center;
  gap: 16px;
  font-size: 14px;
  letter-spacing: 0.06em;
}
.pc-attribution strong {
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-weight: 500;
}
.pc-attribution span { color: var(--ink-soft); }

/* ---------- Article cards ---------- */
.pc-article {
  display: flex;
  flex-direction: column;
  background: var(--paper);
  border-radius: 8px;
  border: 1px solid var(--rule);
  overflow: hidden;
  transition: transform 400ms cubic-bezier(0.2, 0.8, 0.2, 1), border-color 400ms ease;
  cursor: pointer;
  height: 100%;
}
.pc-article:hover {
  transform: translateY(-4px);
  border-color: var(--terracotta);
}
.pc-article__body {
  padding: 32px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 18px;
  justify-content: space-between;
}
.pc-article__title {
  font-family: var(--font-display);
  font-size: clamp(20px, 2.2vw, 26px);
  line-height: 1.18;
  margin: 0;
  font-variation-settings: 'opsz' 60;
}
.pc-article__cta {
  font-size: 13px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--forest);
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

/* ---------- CTA strip ---------- */
.pc-cta-strip {
  text-align: center;
  padding: 160px var(--gutter);
}
.pc-cta-strip h2 {
  font-size: clamp(48px, 9vw, 140px);
  letter-spacing: -0.02em;
  margin: 0 0 48px;
}

/* ---------- Article body (long-read) ---------- */
.article {
  padding: 160px var(--gutter) 120px;
  max-width: 760px;
  margin: 0 auto;
  position: relative;
  z-index: 5;
  background: var(--cream);
}
.article__meta {
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--terracotta);
  margin-bottom: 24px;
}
.article h1 {
  font-size: clamp(36px, 5.5vw, 72px);
  line-height: 1.05;
  margin-bottom: 64px;
}
.article h2 {
  font-size: clamp(24px, 2.8vw, 34px);
  margin-top: 56px;
  margin-bottom: 16px;
  font-variation-settings: 'opsz' 60;
  color: var(--forest);
}
.article p {
  font-size: 18px;
  line-height: 1.7;
  color: var(--ink);
  max-width: 60ch;
  margin: 0 0 1.2em;
}
.article ul, .article ol {
  font-size: 18px;
  line-height: 1.7;
  padding-left: 1.4em;
  margin: 0 0 1.4em;
}
.article li { margin-bottom: 8px; }
.article hr {
  border: none;
  border-top: 1px solid var(--rule);
  margin: 80px 0;
}
.article__nav {
  display: flex;
  justify-content: space-between;
  margin-top: 80px;
  padding-top: 40px;
  border-top: 1px solid var(--rule);
  font-size: 13px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .pc-section .eyebrow,
  .pc-section h1, .pc-section h2, .pc-section h3, .pc-section h4,
  .pc-section p, .pc-section .pc-card, .pc-section .pc-image,
  .pc-section .pc-cta, .pc-section .pc-line {
    clip-path: none !important;
    -webkit-clip-path: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
  .pc-section { transform: none !important; filter: none !important; }
}
