/* Shared reading hierarchy; Framer still supplies the responsive page layouts. */
:root {
  --font-reading: "Rubik", sans-serif;
  --type-title: 40px;
  --type-section: 32px;
  --type-subsection: 24px;
  --type-detail: 20px;
  --type-body: 16px;
  --type-small: 14px;
  --text-heading: #f8fafc;
  --text-reading: #cbd5e1;
  --text-secondary: #94a3b8;
}
.portfolio-page { font-family: var(--font-reading); }
.portfolio-page :is(p, li, dt, dd, th, td).framer-text {
  font-family: var(--font-reading);
  letter-spacing: normal;
}
.portfolio-page .framer-styles-preset-10cqnrx {
  font-size: var(--type-body); line-height: 1.65;
}
.portfolio-page :is(.type-page-title, .type-section-title, .type-subsection-title,
  .type-detail-title, .type-card-title, .type-entry-title) {
  font-family: var(--font-reading); font-weight: 500;
  color: var(--text-heading); letter-spacing: -.02em;
  text-wrap: balance;
}
.portfolio-page .type-page-title { font-size: var(--type-title); line-height: 1.2; }
.portfolio-page .type-section-title { font-size: var(--type-section); line-height: 1.25; }
.portfolio-page .type-subsection-title { font-size: var(--type-subsection); line-height: 1.3; }
.portfolio-page :is(.type-detail-title, .type-card-title, .type-entry-title) {
  font-size: var(--type-detail); line-height: 1.4; letter-spacing: -.01em;
}
.portfolio-page :is(.type-page-title, .type-section-title, .type-subsection-title,
  .type-detail-title, .type-card-title, .type-entry-title) :is(em, strong) {
  font-style: normal; font-weight: inherit;
}
.portfolio-page .type-intro {
  font-family: var(--font-reading); font-size: 20px; line-height: 1.6;
  font-weight: 400; letter-spacing: normal; color: var(--text-reading);
}
.portfolio-page .type-stat { font: 500 48px/1.1 var(--font-reading); letter-spacing: -.03em; }
.portfolio-page .type-tag {
  display: block; font: 400 12px/1.4 var(--font-reading); letter-spacing: .01em;
}
.portfolio-page .framer-styles-preset-1lyxn30 {
  font-size: var(--type-small); line-height: 1.5; letter-spacing: normal;
  color: var(--text-secondary);
}
.page-about .framer-1lc2ofw { gap: 24px; }
.page-about .framer-JIxJc.framer-1da2rr1 { padding-block: 32px 0; }
.portfolio-page .framer-l0p4C :is(.type-card-title, .framer-styles-preset-10cqnrx) {
  text-wrap: pretty;
}
.portfolio-page .framer-l0p4C .type-tag { transition: color 400ms ease; }
.portfolio-page .case-summary { font-family: var(--font-reading); }
.portfolio-page .case-summary-outcome { font-size: 24px; line-height: 1.4; letter-spacing: -.01em; }
.portfolio-page .case-summary :is(dd, dt, .case-summary-label) { letter-spacing: normal; }
.portfolio-page .case-summary dd { font-size: var(--type-body); line-height: 1.65; }

/* Use real spacing instead of empty paragraphs and repeated line breaks. */
.portfolio-page .case-section { gap: 24px; }
.portfolio-page .case-section .case-summary { margin-block: 16px; }
.portfolio-page .case-prose {
  --framer-paragraph-spacing: 16px;
  --framer-text-color: var(--text-reading);
}
.portfolio-page .case-prose > :is(p, ul, ol, blockquote, table).framer-text {
  margin-block: 16px 0;
}
.portfolio-page .case-prose > :first-child { margin-top: 0; }
.portfolio-page .case-prose > :is(.type-subsection-title, .type-detail-title) {
  margin-block: 40px 0;
}
.portfolio-page .case-prose > :is(.type-subsection-title, .type-detail-title):first-child {
  margin-top: 0;
}
.portfolio-page .case-prose > :is(.type-subsection-title, .type-detail-title) + * {
  margin-top: 12px;
}
.portfolio-page .case-prose :is(ul, ol).framer-text { padding-inline-start: 24px; }
.portfolio-page .case-prose li.framer-text { margin-block: 8px 0; }
.portfolio-page .case-prose li.framer-text:first-child { margin-top: 0; }
.portfolio-page .case-prose li > p.framer-text { margin: 0; }
.portfolio-page .case-prose :is(p, li, dd) { line-height: 1.65; }
.portfolio-page .case-prose > :is(p, ul, ol):not(:has(img, iframe, video)) {
  max-width: 76ch; text-wrap: pretty;
}
.portfolio-page .case-prose :is(strong, b).framer-text { font-weight: 500; }
.portfolio-page .case-prose :is(th, td).framer-text {
  font-size: var(--type-body); line-height: 1.65; vertical-align: top;
  padding: 12px 16px;
}
.portfolio-page .case-prose :is(th, td) p.framer-text { margin-block: 8px 0; }
.portfolio-page .case-prose :is(th, td) p.framer-text:first-child { margin-top: 0; }
.portfolio-page .case-prose th.framer-text { font-weight: 500; }
.portfolio-page .case-prose .type-caption {
  font-family: var(--font-reading); font-size: var(--type-small); line-height: 1.5;
  font-weight: 400; letter-spacing: normal; color: var(--text-secondary);
  margin-top: 12px;
}
.portfolio-page .case-prose blockquote.framer-text {
  padding: 16px 24px; border-left: 2px solid #475569;
}
.portfolio-page .case-prose blockquote p.framer-text { font-size: 18px; line-height: 1.6; }

@media (max-width: 809px) {
  :root { --type-title: 32px; --type-section: 28px; --type-subsection: 22px; --type-detail: 20px; }
  .portfolio-page .type-intro { font-size: 18px; }
  .portfolio-page .case-summary-outcome { font-size: 22px; }
  .portfolio-page .case-section { gap: 20px; }
  .portfolio-page .case-section .case-summary { margin-block: 12px; }
  .portfolio-page .case-prose > :is(.type-subsection-title, .type-detail-title) { margin-top: 32px; }
  .portfolio-page .case-prose > :is(.type-subsection-title, .type-detail-title):first-child { margin-top: 0; }
  .portfolio-page .case-prose :is(th, td).framer-text { padding: 10px 12px; }
  /* The header already reserves its space; let longer headlines grow below it. */
  .page-index .framer-cwnsjv {
    height: auto; min-height: calc(100svh - 168px); padding: 32px 32px 48px;
    align-items: flex-start;
  }
  .page-index .framer-108w014 {
    flex: none; width: 100%; height: auto; min-height: 0; padding: 0;
    gap: 48px; justify-content: flex-start;
  }
}
