/* Four inner pages share the Home's editorial rhythm and original identity. */
:root { --ip-gutter: clamp(24px,5vw,96px); --header-height: 74px; }
html { scroll-snap-type: y proximity; }
.inner-page { overflow-x: clip; }
.inner-page main > .ip-panel {
  position: relative; width: 100%; min-height: 100svh; min-height: 100dvh;
  height: auto; overflow: visible; scroll-snap-align: start;
}
.inner-page main > .ip-split {
  min-height: 100dvh; height: auto; overflow: visible;
}
.inner-page main > .ip-photo-opening {
  height: 100svh; height: 100dvh; overflow: hidden;
}
.inner-page .ip-dark { background: var(--ink); color: var(--white); }
.inner-page .ip-light { background: var(--paper); color: var(--ink); }
.inner-page .ip-paper { background: var(--paper-2); color: var(--ink); }
.inner-page .ip-panel img { display: block; width: 100%; height: 100%; object-fit: contain; }
.inner-page .ip-panel h1, .inner-page .ip-panel h2,
.inner-page .ip-panel h3 { font-family: var(--serif); font-weight: 400; letter-spacing: -.045em; }
.inner-page .ip-panel h1, .inner-page .ip-panel h2,
.inner-page .ip-panel h3, .inner-page .ip-panel p { margin-top: 0; }
.inner-page .ip-panel .section-number { margin-bottom: 18px; }
.inner-page .ip-panel .eyebrow { margin-bottom: 20px; }
.inner-page .ip-folio {
  position: absolute; z-index: 2; left: var(--ip-gutter); bottom: 19px;
  margin: 0; color: #847c71; font: 13px/1 var(--serif); pointer-events: none;
}
.inner-page .ip-folio span span { padding: 0 6px; }
.inner-page .ip-dark .ip-folio { color: #99948b; }
.inner-page .ip-folio-mobile { display: none; }
.inner-page .ip-folio-mobile-joined { display: none; }

/* The same dark masthead reads cleanly over every portrait and every page. */
.inner-page .site-header, .inner-page .site-header.scrolled, .inner-page .site-header:not(.scrolled) {
  z-index: 110; height: var(--header-height); padding: 0 var(--ip-gutter);
  grid-template-columns: auto minmax(0,1fr); column-gap: clamp(32px,4vw,90px);
  background: rgba(10,10,10,.91); color: var(--white);
  border-bottom: 1px solid rgba(255,255,255,.16);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  transform: translateY(0); transition: transform .4s cubic-bezier(.22,.61,.36,1);
}
.inner-page .site-header.is-hidden { transform: translateY(calc(-1 * var(--header-height) - 2px)); }
.inner-page .site-header .nav {
  display: flex; justify-content: flex-end; flex-wrap: nowrap;
  gap: clamp(14px,1.7vw,34px); min-width: 0;
  color: var(--white) !important; white-space: nowrap;
}
.inner-page .site-header .nav a { opacity: 1; }
.inner-page .site-header .nav a:hover { opacity: .65; }
.inner-page .site-header .nav-cta,
.inner-page .site-header .wordmark { flex: none; }
.inner-page .site-header .wordmark { white-space: nowrap; }
.inner-page .site-header .nav > a.active:not(.nav-cta)::after { bottom: -8px; }
.inner-page .nav-handle { display: none; }
.inner-page a:focus-visible, .inner-page button:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }
/* The photographic opening exists by default; desktop uses its split Hero. */
@media (min-width: 1025px) {
  .inner-page main > .ip-photo-opening { display: none; }
}

/* Photographic pages: a native-aspect portrait bleeds to the viewport edge. */
.inner-page .ip-split { display: grid; grid-template-columns: minmax(0,1fr) 66.65svh; grid-template-columns: minmax(0,1fr) 66.65dvh; }
.inner-page .ip-split.ip-reverse { grid-template-columns: 66.65svh minmax(0,1fr); grid-template-columns: 66.65dvh minmax(0,1fr); }
.inner-page .ip-split-copy {
  grid-column: 1; grid-row: 1; align-self: center; min-width: 0;
  padding: 55px clamp(35px,5vw,105px) 45px var(--ip-gutter);
}
.inner-page .ip-reverse .ip-split-copy {
  grid-column: 2; padding: 55px var(--ip-gutter) 45px clamp(35px,5vw,105px);
}
.inner-page .ip-media {
  grid-column: 2; grid-row: 1; position: relative; margin: 0;
  height: 100dvh; width: 100%; min-width: 0; align-self: end;
  aspect-ratio: 1365 / 2048;
}
.inner-page .ip-reverse .ip-media { grid-column: 1; }
/* Each Hero portrait starts exactly where the masthead ends. Its grid track
   follows the native 1365:2048 aspect ratio, without cropping or a spacer. */
.inner-page .ip-hero {
  grid-template-columns: minmax(0,1fr) calc((100svh - var(--header-height)) * .6665);
  grid-template-columns: minmax(0,1fr) calc((100dvh - var(--header-height)) * .6665);
}
.inner-page .ip-hero .ip-media {
  width: 100%; height: calc(100svh - var(--header-height));
  height: calc(100dvh - var(--header-height));
  align-self: start; margin-top: var(--header-height);
}
.inner-page .ip-media figcaption {
  position: absolute; right: 15px; bottom: 16px;
  writing-mode: vertical-rl; transform: rotate(180deg);
  font-size: 8px; letter-spacing: .12em; text-transform: uppercase; color: #e1ddd5;
}
.inner-page .ip-photo-light .ip-media figcaption { color: var(--ink); }
.inner-page .ip-split h1 {
  max-width: 1000px; margin: 0; font-size: clamp(61px,5.7vw,111px); line-height: .94;
}
.inner-page .ip-hero--marketplace h1 { font-size: clamp(56px,5vw,94px); }
.inner-page .ip-hero--terceiro-setor h1 { font-size: clamp(54px,4.7vw,90px); }
.inner-page .ip-hero--educacao h1 { font-size: clamp(55px,4.7vw,92px); line-height: .98; }
.inner-page .ip-split h2 {
  max-width: 875px; margin: 0; font-size: clamp(48px,4.65vw,86px); line-height: .97;
}
.inner-page .ip-split-copy > p:not(.eyebrow) {
  max-width: 715px; margin: clamp(24px,3.3dvh,40px) 0 0;
  color: #bcb8b0; font-size: clamp(15px,1.16vw,18px);
  line-height: 1.58; font-weight: 300;
}
.inner-page .ip-focus .ip-split-copy .eyebrow--dark { color: #c3bba9; }
.inner-page .ip-actions { display: flex; flex-wrap: wrap; gap: 13px 28px; margin-top: 30px; }
.inner-page .ip-actions .text-link {
  min-height: 42px; padding: 10px 0; gap: 18px;
  font-size: 12px; line-height: 1.5; letter-spacing: .035em;
}
.inner-page .ip-actions .text-link--muted { opacity: .58; }
.inner-page .ip-actions a:hover { opacity: .7; }

/* Declarations occupy one screen; smaller details live on subsequent screens. */
.inner-page .ip-intro, .inner-page .ip-statement {
  display: grid; grid-template-columns: minmax(0,23%) minmax(0,1fr);
  align-items: center; gap: 32px; padding: 0 var(--ip-gutter);
}
.inner-page .ip-intro-index, .inner-page .ip-statement-index { align-self: center; }
.inner-page .ip-intro-index > p, .inner-page .ip-statement-index > p {
  max-width: 180px; margin: 0; color: #777064;
  font-size: 11px; line-height: 1.45; letter-spacing: .13em; text-transform: uppercase;
}
.inner-page .ip-statement-index > p { color: #aaa49b; }
.inner-page .ip-intro-copy h2, .inner-page .ip-statement h2 {
  max-width: 1230px; margin: 0;
  font-size: clamp(54px,5vw,100px); line-height: .98;
}
.inner-page .ip-intro-copy > p {
  max-width: 840px; margin: 32px 0 0; color: #655f56;
  font-size: clamp(15px,1.22vw,19px); line-height: 1.62; font-weight: 300;
}
.inner-page .ip-statement h2 em { color: #a9a198; font-weight: 400; }
.inner-page .ip-statement h2 { font-size: clamp(57px,5.35vw,108px); }

/* Two considered entries in each viewport retain generous reading measures. */
.inner-page .ip-list-screen {
  display: flex; flex-direction: column; justify-content: center;
  padding: 76px var(--ip-gutter) 68px;
}
.inner-page .ip-list-label { margin: 0 0 clamp(20px,4dvh,45px); }
.inner-page .ip-list-label .eyebrow { margin: 0; }
.inner-page .ip-rows { border-top: 1px solid var(--line-light); }
.inner-page .ip-row {
  display: grid; grid-template-columns: minmax(40px,7%) minmax(0,1fr);
  align-items: center; gap: clamp(14px,3vw,60px);
  min-height: clamp(190px,30dvh,305px);
  border-bottom: 1px solid var(--line-light);
}
.inner-page .ip-row > span { align-self: start; margin-top: 35px; color: #8a8277; font: 15px var(--serif); }
.inner-page .ip-row > div { display: grid; grid-template-columns: minmax(0,52%) minmax(0,43%); gap: 5%; align-items: center; }
.inner-page .ip-row h3, .inner-page .ip-row strong {
  max-width: 680px; margin: 0; font: 400 clamp(30px,3.1vw,56px)/1.02 var(--serif);
  letter-spacing: -.036em;
}
.inner-page .ip-row > div > p {
  max-width: 500px; margin: 0; color: #625b53;
  font-size: clamp(14px,1.1vw,17px); line-height: 1.6; font-weight: 300;
}
/* Audience rows have no index: give the heading and copy their own full-width track. */
.inner-page .ip-row--audience { grid-template-columns: minmax(0,1fr); }
.inner-page .ip-row--audience > div { grid-column: 1; min-width: 0; }
.inner-page .ip-row--audience strong { display: block; }

/* Method as a typographic index, using rules instead of card containers. */
.inner-page .ip-path {
  display: grid; grid-template-columns: minmax(0,43fr) minmax(0,57fr);
  align-items: center; padding: 0 var(--ip-gutter); gap: 26px;
}
.inner-page .ip-path-heading { padding-right: 42px; }
.inner-page .ip-path h2 {
  max-width: 640px; margin: 0; font-size: clamp(54px,5vw,93px); line-height: .96;
}
.inner-page .ip-path-list { border-top: 1px solid var(--line-light); }
.inner-page .ip-path-row {
  display: grid; grid-template-columns: 42px minmax(0,1fr); gap: 18px;
  align-items: center; min-height: clamp(152px,21dvh,219px);
  border-bottom: 1px solid var(--line-light);
}
.inner-page .ip-path-row > span { align-self: start; padding-top: 27px; color: #8a8176; font: 14px var(--serif); }
.inner-page .ip-path-row h3 {
  margin: 0 0 12px; font-size: clamp(25px,2vw,37px); line-height: 1;
}
.inner-page .ip-path-row p {
  max-width: 615px; margin: 0; color: #625c54;
  font-size: clamp(13px,1.02vw,16px); line-height: 1.52; font-weight: 300;
}

/* On desktop, focus points occupy their own follow-up page. */
.inner-page .ip-points {
  display: grid; grid-template-columns: minmax(0,45fr) minmax(0,55fr);
  align-items: center; padding: 0 var(--ip-gutter); gap: 35px;
}
.inner-page .ip-points-intro { padding-right: 30px; }
.inner-page .ip-points-intro h2 { max-width: 760px; margin: 0; font-size: clamp(45px,4.1vw,77px); line-height: .98; }
.inner-page .ip-points .ip-row { min-height: clamp(132px,17dvh,175px); grid-template-columns: 35px minmax(0,1fr); gap: 16px; }
.inner-page .ip-points .ip-row > span { margin-top: 25px; }
.inner-page .ip-points .ip-row > div { display: block; }
.inner-page .ip-points .ip-row p { max-width: 550px; font: 400 clamp(23px,2.1vw,35px)/1.13 var(--serif); letter-spacing: -.025em; }

/* Some short lists share one mobile viewport; desktop keeps its approved pages. */
.inner-page main > .ip-mobile-combined { display: none; }

/* The contact text and footer share space in normal flow, so neither can overlap. */
.inner-page .ip-contact {
  display: flex; flex-direction: column; justify-content: space-between;
  padding-top: clamp(86px,9dvh,120px);
}
.inner-page .ip-contact-copy {
  position: relative; width: min(84vw,1250px);
  margin: auto var(--ip-gutter); padding: 28px 0 48px;
}
.inner-page .ip-contact-copy h2 {
  max-width: 1100px; margin: 0; font-size: clamp(60px,6.2vw,115px); line-height: .92;
}
.inner-page .ip-contact-copy > p:not(.eyebrow) {
  max-width: 700px; margin: 20px 0 25px; color: #aaa69d;
  font-size: 15px; line-height: 1.56;
}
.inner-page .ip-contact .contact-button {
  width: min(600px,100%); min-height: 46px; padding: 11px 0;
  border-top: 1px solid #77716b; border-bottom: 1px solid #77716b;
}
.inner-page .ip-contact-end { width: 100%; flex: none; }
.inner-page .ip-contact .crosslinks { background: transparent; border-color: var(--line-dark); }
.inner-page .ip-contact .crosslinks-inner {
  display: grid; grid-template-columns: 24% minmax(0,1fr); gap: 20px;
  padding: 19px var(--ip-gutter);
}
.inner-page .ip-contact .crosslinks-label { color: #aaa39a; }
.inner-page .ip-contact .crosslinks-links { gap: 12px 30px; }
.inner-page .ip-contact .crosslinks-links a {
  color: var(--white); font-size: 20px; border-bottom-color: rgba(255,255,255,.35);
}
.inner-page .ip-contact .footer {
  min-height: 86px; padding: 15px var(--ip-gutter) 24px;
  border-top: 1px solid var(--line-dark); color: #a09a91; font-size: 10px;
}
.inner-page .ip-contact .ip-folio { display: none; }

@media (max-width: 1150px) {
  :root { --ip-gutter: clamp(22px,4vw,46px); --header-height: 66px; }
  .inner-page .site-header { column-gap: 10px; }
  .inner-page .site-header .menu-toggle {
    display: flex; justify-self: end; align-items: center; gap: 12px;
    padding: 10px 0; background: none; border: 0; color: var(--white);
    cursor: pointer; font-size: 11px; text-transform: uppercase; letter-spacing: .13em;
  }
  .inner-page .site-header .menu-icon {
    width: 21px; height: 8px; border-top: 1px solid currentColor; border-bottom: 1px solid currentColor;
  }
  .inner-page .site-header .nav {
    position: fixed; inset: var(--header-height) 0 auto; display: none;
    flex-direction: column; align-items: stretch; justify-content: center; gap: 0;
    height: calc(100svh - var(--header-height)); height: calc(100dvh - var(--header-height));
    padding: 25px var(--ip-gutter) max(30px,env(safe-area-inset-bottom));
    overflow-y: auto; background: var(--ink); color: var(--white) !important;
    border-top: 1px solid var(--line-dark); white-space: normal;
  }
  .inner-page .site-header .nav.open { display: flex; }
  .inner-page .site-header .nav > a {
    padding: 14px 0; border-bottom: 1px solid var(--line-dark);
    font: clamp(27px,5vw,43px)/1.05 var(--serif); letter-spacing: -.02em;
  }
  .inner-page .site-header .nav > .nav-cta { border: 0; padding-top: 27px; color: #c3bba9; }
  .inner-page .nav-handle {
    position: fixed; z-index: 120; top: 0; right: 0; display: flex;
    align-items: center; justify-content: space-between; gap: 20px;
    min-width: 91px; height: 46px; padding: 0 13px;
    background: var(--ink); border: 1px solid rgba(255,255,255,.26);
    border-top: 0; border-right: 0; border-radius: 0;
    color: var(--white); font-size: 10px; text-transform: uppercase; letter-spacing: .12em;
    opacity: 0; pointer-events: none; transition: opacity .2s ease;
  }
  .inner-page.nav-away:not(.menu-open) .nav-handle { opacity: 1; pointer-events: auto; }
  .inner-page.menu-open { overflow: hidden; }
  .inner-page .ip-intro-copy h2, .inner-page .ip-statement h2 { font-size: clamp(51px,6.3vw,78px); }
  .inner-page .ip-row h3, .inner-page .ip-row strong { font-size: clamp(31px,3.8vw,45px); }
  .inner-page .ip-path h2 { font-size: clamp(49px,5.5vw,75px); }
  .inner-page .ip-contact-copy h2 { font-size: clamp(58px,6.3vw,86px); }
}

/* Landscape tablets keep the portrait at its full ratio, anchored to the bottom/right. */
@media (max-width: 1100px) and (orientation: landscape) and (min-height: 690px) {
  .inner-page .ip-split { grid-template-columns: minmax(0,1fr) 55dvh; }
  .inner-page .ip-split.ip-reverse { grid-template-columns: 55dvh minmax(0,1fr); }
  .inner-page .ip-media { height: 82.52dvh; align-self: end; }
  .inner-page .ip-hero { grid-template-columns: minmax(0,1fr) calc((100dvh - var(--header-height)) * .6665); }
  .inner-page .ip-hero .ip-media { width: 100%; height: calc(100dvh - var(--header-height)); align-self: start; }
  .inner-page .ip-split-copy { padding: 60px 26px 45px var(--ip-gutter); }
  .inner-page .ip-reverse .ip-split-copy { padding: 60px var(--ip-gutter) 45px 26px; }
  .inner-page .ip-split h1 { font-size: clamp(42px,4.6vw,58px); }
  .inner-page .ip-split h2 { font-size: clamp(39px,4.3vw,55px); }
  .inner-page .ip-split-copy > p:not(.eyebrow) { font-size: 14px; line-height: 1.47; margin-top: 20px; }
}

/* Portrait tablet and phone: a photographic chapter, followed by full text. */
@media (max-width: 1024px) and (orientation: portrait) {
  .inner-page main > .ip-photo-opening {
    display: flex; flex-direction: column; background: var(--ink);
  }
  .inner-page .ip-photo-opening.ip-paper { background: #ededed; color: var(--ink); }
  .inner-page .ip-photo-opening > figure {
    flex: none; align-self: end; width: min(100%,44dvh);
    aspect-ratio: 1365 / 2048; margin: var(--header-height) 0 0;
  }
  .inner-page .ip-photo-opening > figure img { width: 100%; height: 100%; object-fit: contain; }
  .inner-page .ip-photo-caption {
    flex: 1; display: flex; flex-direction: column; justify-content: center;
    align-items: flex-start; min-height: 0; padding: 10px var(--ip-gutter) 40px;
  }
  .inner-page .ip-photo-caption .eyebrow { margin: 0 0 8px; }
  .inner-page .ip-photo-opening.ip-dark .eyebrow { color: #b7b0a5; }
  .inner-page .ip-photo-caption h2 { margin: 0; font-size: clamp(55px,7.8vw,91px); line-height: .95; }
  .inner-page .ip-photo-caption h1 {
    max-width: 900px; margin: 0;
    font-size: clamp(49px,6.8vw,80px); line-height: .98;
  }
  .inner-page .ip-folio-desktop { display: none; }
  .inner-page .ip-folio-mobile { display: inline; }
  .inner-page .ip-split, .inner-page .ip-split.ip-reverse {
    display: block; grid-template-rows: none;
  }
  .inner-page main > .ip-split { height: auto; min-height: 100dvh; overflow: visible; }
  .inner-page .ip-split .ip-media { display: none; }
  .inner-page .ip-split .ip-split-copy, .inner-page .ip-reverse .ip-split-copy {
    display: flex; flex-direction: column; justify-content: center; align-items: flex-start;
    width: 100%; min-height: 100dvh; height: auto;
    padding: max(100px,env(safe-area-inset-top) + 83px) var(--ip-gutter) 75px;
  }
  .inner-page .ip-split h1, .inner-page .ip-split h2 { max-width: 950px; font-size: clamp(54px,7.3vw,86px); }
  .inner-page .ip-split-copy > p:not(.eyebrow) { max-width: 830px; font-size: clamp(17px,2vw,24px); }
  .inner-page .ip-intro, .inner-page .ip-statement {
    grid-template-columns: 1fr; align-content: center; gap: 28px;
  }
  .inner-page .ip-intro-copy h2, .inner-page .ip-statement h2 { font-size: clamp(58px,7vw,92px); }
  .inner-page .ip-intro-copy > p { font-size: clamp(16px,2vw,22px); }
  .inner-page .ip-row > div { grid-template-columns: minmax(0,1fr) minmax(0,45%); }
  .inner-page .ip-path {
    display: flex; flex-direction: column; justify-content: flex-start;
    gap: clamp(28px,4dvh,44px);
    padding: max(92px,env(safe-area-inset-top) + 82px) var(--ip-gutter) 60px;
  }
  .inner-page .ip-path-heading { align-self: stretch; padding: 0; }
  .inner-page .ip-path h2 { max-width: 850px; font-size: clamp(59px,7vw,86px); }
  .inner-page .ip-path-list {
    display: flex; flex: 1; flex-direction: column; align-self: stretch;
  }
  .inner-page .ip-path-row { flex: 1 0 auto; min-height: 0; padding: 18px 0; }
  .inner-page .ip-points { display: flex; flex-direction: column; align-items: stretch; justify-content: center; gap: 30px; }
  .inner-page .ip-points-intro h2 { font-size: clamp(51px,6vw,78px); }
  .inner-page .ip-points .ip-row { min-height: clamp(105px,12dvh,150px); }
}

/* On narrow tablets, audience copy reads as one editorial measure. */
@media (min-width: 601px) and (max-width: 800px) and (orientation: portrait) {
  .inner-page .ip-row--audience > div { display: block; }
  .inner-page .ip-row--audience > div > p { margin-top: 14px; max-width: 640px; }
}

@media (max-width: 600px) {
  :root { --ip-gutter: 22px; --header-height: 62px; }
  .inner-page .site-header .wordmark { font-size: 22px; }
  .inner-page .site-header .nav > a { font-size: clamp(29px,8vw,38px); padding: 17px 0; }
  .inner-page .ip-folio { bottom: 14px; font-size: 11px; }
  .inner-page .ip-panel .section-number { margin-bottom: 12px; font-size: 12px; }
  .inner-page .ip-panel .eyebrow { margin-bottom: 13px; font-size: 9px; line-height: 1.45; }
  .inner-page main > .ip-photo-opening {
    height: auto; min-height: 100svh; min-height: 100dvh; overflow: visible;
  }
  .inner-page .ip-photo-opening > figure { align-self: stretch; width: 100%; }
  .inner-page .ip-photo-caption { flex: 1 0 auto; padding: 4px var(--ip-gutter) 34px; }
  .inner-page .ip-photo-caption h2 { font-size: clamp(43px,11.8vw,54px); }
  .inner-page .ip-photo-caption h1 { font-size: clamp(38px,10.7vw,47px); }
  .inner-page .ip-photo-opening .eyebrow { font-size: 9px; }
  .inner-page .ip-split .ip-split-copy, .inner-page .ip-reverse .ip-split-copy {
    padding: max(82px,env(safe-area-inset-top) + 72px) var(--ip-gutter) 65px;
  }
  .inner-page .ip-split h1 { font-size: clamp(42px,10.9vw,50px); line-height: .97; }
  .inner-page .ip-split h2 { font-size: clamp(39px,10.1vw,46px); line-height: .98; }
  .inner-page .ip-split-copy > p:not(.eyebrow) {
    margin-top: 24px; font-size: 15px; line-height: 1.53;
  }
  .inner-page .ip-actions { flex-direction: column; align-items: flex-start; gap: 7px; margin-top: 24px; }
  .inner-page .ip-actions .text-link { font-size: 12px; min-height: 41px; }
  .inner-page .ip-intro, .inner-page .ip-statement { gap: 24px; padding: 0 var(--ip-gutter); }
  .inner-page .ip-intro-copy h2, .inner-page .ip-statement h2 {
    font-size: clamp(43px,11vw,53px); line-height: .99;
  }
  .inner-page .ip-intro-copy > p { margin-top: 23px; font-size: 15px; line-height: 1.58; }
  .inner-page .ip-list-screen { padding: 71px var(--ip-gutter) 52px; }
  .inner-page .ip-list-label { margin-bottom: 23px; }
  .inner-page .ip-row { grid-template-columns: 26px minmax(0,1fr); gap: 10px; min-height: 0; padding: 24px 0; }
  /* Audience entries have no numeric cell. Give their copy the full measure. */
  .inner-page .ip-row--audience { grid-template-columns: minmax(0,1fr); }
  .inner-page .ip-row--audience > div { grid-column: 1; width: 100%; }
  .inner-page .ip-row > span { margin-top: 5px; font-size: 12px; }
  .inner-page .ip-row > div { display: block; }
  .inner-page .ip-row h3, .inner-page .ip-row strong { font-size: clamp(26px,7.3vw,33px); line-height: 1.03; }
  .inner-page .ip-row > div > p { margin-top: 10px; font-size: 13px; line-height: 1.5; }
  .inner-page .ip-path {
    gap: clamp(26px,4dvh,38px);
    padding: max(86px,env(safe-area-inset-top) + 77px) var(--ip-gutter) 50px;
  }
  .inner-page .ip-path-heading .section-number { margin-bottom: 10px; }
  .inner-page .ip-path h2 { font-size: clamp(42px,10.8vw,51px); }
  .inner-page .ip-path-row { grid-template-columns: 27px minmax(0,1fr); gap: 10px; min-height: 0; padding: 15px 0; }
  .inner-page .ip-path-row > span { padding-top: 4px; font-size: 12px; }
  .inner-page .ip-path-row h3 { margin-bottom: 7px; font-size: 23px; line-height: 1.02; }
  .inner-page .ip-path-row p { font-size: 12.5px; line-height: 1.42; }
  .inner-page .ip-points { gap: 21px; padding: 62px var(--ip-gutter) 55px; }
  .inner-page .ip-points-intro { padding: 0; }
  .inner-page .ip-points-intro h2 { font-size: clamp(37px,9.3vw,44px); }
  .inner-page .ip-points .ip-row { grid-template-columns: 24px minmax(0,1fr); gap: 10px; padding: 16px 0; min-height: 0; }
  .inner-page .ip-points .ip-row > span { margin-top: 3px; }
  .inner-page .ip-points .ip-row p { margin: 0; font-size: clamp(22px,6.1vw,26px); line-height: 1.12; }
  .inner-page .ip-contact-copy {
    width: calc(100% - 2 * var(--ip-gutter));
    margin: auto var(--ip-gutter); padding: 15px 0 34px;
  }
  .inner-page .ip-contact-copy h2 { font-size: clamp(43px,11.3vw,54px); line-height: .95; }
  .inner-page .ip-contact-copy > p:not(.eyebrow) { margin: 15px 0 18px; font-size: 12.5px; line-height: 1.49; }
  .inner-page .ip-contact .contact-button { min-height: 44px; padding: 9px 0; font-size: 12px; }
  .inner-page .ip-contact .crosslinks-inner { display: block; padding: 14px var(--ip-gutter); }
  .inner-page .ip-contact .crosslinks-label { display: block; margin-bottom: 9px; }
  .inner-page .ip-contact .crosslinks-links { gap: 5px 17px; }
  .inner-page .ip-contact .crosslinks-links a { font-size: 17px; padding-bottom: 0; }
  .inner-page .ip-contact .footer {
    flex-direction: column; align-items: flex-start; gap: 10px;
    min-height: 0; padding: 12px var(--ip-gutter) max(17px,env(safe-area-inset-bottom)); font-size: 9px;
  }
  .inner-page .ip-contact .footer-brand strong { font-size: 21px; }
  .inner-page .ip-contact .footer-meta { justify-content: flex-start; gap: 4px 15px; }
}

@media (max-width: 600px) and (max-height: 780px) {
  .inner-page .ip-photo-opening .ip-photo-caption h2 {
    font-size: clamp(38px,10.6vw,45px);
  }
}

@media (max-width: 600px) and (max-height: 780px) {
  .inner-page .ip-row { padding: 17px 0; }
  .inner-page .ip-row h3, .inner-page .ip-row strong { font-size: clamp(25px,7vw,30px); }
  .inner-page .ip-row > div > p { margin-top: 7px; font-size: 12.5px; line-height: 1.42; }
  .inner-page .ip-list-label { margin-bottom: 16px; }
  .inner-page .ip-path { gap: clamp(22px,3.2dvh,32px); }
  .inner-page .ip-path h2 { font-size: clamp(39px,10vw,47px); }
  .inner-page .ip-path-row { padding: 11px 0; }
  .inner-page .ip-path-row h3 { font-size: 21px; }
  .inner-page .ip-path-row p { font-size: 12px; line-height: 1.37; }
  .inner-page .ip-contact-copy { padding: 9px 0 24px; }
  .inner-page .ip-contact-copy h2 { font-size: clamp(39px,10.7vw,50px); }
  .inner-page .ip-contact .crosslinks-links a { font-size: 16px; }
}

/* Content may grow on very short viewports; scroll remains native and reachable. */
@media (max-height: 690px) {
  html { scroll-snap-type: none; }
  .inner-page main > .ip-panel { height: auto; min-height: 100svh; min-height: 100dvh; overflow: visible; }
  .inner-page .ip-intro, .inner-page .ip-statement, .inner-page .ip-list-screen,
  .inner-page .ip-path, .inner-page .ip-points { padding-top: 95px; padding-bottom: 95px; }
  .inner-page .ip-split { min-height: 760px !important; grid-template-columns: minmax(0,1fr) 507px; }
  .inner-page .ip-split.ip-reverse { grid-template-columns: 507px minmax(0,1fr); }
  .inner-page .ip-split .ip-media { height: 760px; width: 507px; justify-self: end; }
  .inner-page .ip-split.ip-reverse .ip-media { justify-self: start; }
  .inner-page .ip-hero { grid-template-columns: minmax(0,1fr) calc((760px - var(--header-height)) * .6665); }
  .inner-page .ip-hero .ip-media {
    width: 100%; height: calc(760px - var(--header-height));
    align-self: start; margin-top: var(--header-height);
  }
  .inner-page .ip-contact { min-height: 720px !important; }
}
@media (max-width: 600px) and (max-height: 690px) {
  .inner-page main > .ip-photo-opening { min-height: 100svh; height: auto; overflow: visible; }
  .inner-page .ip-photo-opening > figure { width: min(100%,42dvh); align-self: end; }
  .inner-page .ip-photo-caption { min-height: 175px; }
  .inner-page .ip-split, .inner-page .ip-split.ip-reverse { min-height: 100svh !important; }
  .inner-page .ip-split .ip-split-copy { min-height: 100svh; height: auto; }
  .inner-page .ip-contact { min-height: 780px !important; }
}
@media (max-width: 600px) and (orientation: portrait) {
  .inner-page .ip-photo-opening > figure { width: 100%; }
}
/* Landscape phones and small tablets keep the photographic opening, with its
   caption beside the portrait. The following screen gives the copy full width. */
@media (max-width: 1024px) and (orientation: landscape) {
  .inner-page main > .ip-photo-opening {
    display: grid; grid-template-columns: minmax(0,1fr) auto;
    min-height: 100dvh; height: auto; overflow: visible;
  }
  .inner-page .ip-photo-opening > figure {
    grid-column: 2; grid-row: 1; align-self: start;
    width: calc((100dvh - var(--header-height)) * .6665);
    height: calc(100dvh - var(--header-height));
    aspect-ratio: 1365 / 2048; margin: var(--header-height) 0 0;
  }
  .inner-page .ip-photo-opening > figure img { width: 100%; height: 100%; object-fit: contain; }
  .inner-page .ip-photo-caption {
    grid-column: 1; grid-row: 1; align-self: center; min-width: 0;
    padding: calc(var(--header-height) + 20px) 25px 35px var(--ip-gutter);
  }
  .inner-page .ip-photo-caption .eyebrow { margin-bottom: 15px; }
  .inner-page .ip-photo-caption h2 { margin: 0; font-size: clamp(43px,6.6vw,74px); line-height: .98; }
  .inner-page .ip-folio-desktop { display: none; }
  .inner-page .ip-folio-mobile { display: inline; }
  .inner-page .ip-split, .inner-page .ip-split.ip-reverse { display: block; }
  .inner-page .ip-split .ip-media { display: none; }
  .inner-page .ip-split .ip-split-copy,
  .inner-page .ip-reverse .ip-split-copy {
    width: 100%; min-height: 100dvh; height: auto;
    padding: calc(var(--header-height) + 32px) var(--ip-gutter) 64px;
  }
  .inner-page .ip-split h1 { max-width: 960px; font-size: clamp(46px,6vw,69px); }
  .inner-page .ip-split h2 { max-width: 960px; font-size: clamp(44px,5.6vw,68px); }
  .inner-page .ip-split-copy > p:not(.eyebrow) { max-width: 820px; font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; scroll-snap-type: none; }
  .inner-page .site-header, .inner-page .nav-handle { transition: none !important; }
}

/* Phone portrait: let the complete opening photograph define its own height.
   Give the method index a definite viewport to distribute its three rows. */
@media (max-width: 600px) and (orientation: portrait) {
  .inner-page.mobile-grouped .ip-folio-mobile { display: none; }
  .inner-page.mobile-grouped .ip-folio-mobile-joined { display: inline; }
  .inner-page main > .ip-photo-opening > figure {
    flex: none; align-self: stretch; width: 100%; min-width: 100%; max-width: none;
    height: auto; aspect-ratio: auto; margin: var(--header-height) 0 0;
  }
  .inner-page main > .ip-photo-opening > figure > img {
    display: block; width: 100%; height: auto; object-fit: contain;
  }
  .inner-page main > .ip-path {
    height: 100svh; height: 100dvh; min-height: max-content;
    gap: clamp(36px,5dvh,46px);
  }
  .inner-page main > .ip-mobile-source { display: none; }
  .inner-page main > .ip-mobile-combined {
    display: flex; flex-direction: column; justify-content: flex-start;
    height: 100svh; height: 100dvh; min-height: max-content;
    padding: clamp(76px,9dvh,92px) var(--ip-gutter) clamp(45px,6dvh,55px);
  }
  .inner-page .ip-mobile-combined .ip-list-label {
    flex: none; margin-bottom: clamp(18px,2.5dvh,26px);
  }
  .inner-page .ip-mobile-combined .ip-rows {
    display: flex; flex: 1 1 auto; flex-direction: column; min-height: 0;
  }
  .inner-page .ip-mobile-combined .ip-row {
    flex: 1 0 auto; min-height: 0; padding: clamp(13px,1.8dvh,19px) 0;
  }
  /* Six full descriptions would overflow a small phone. Keep each title in
     the viewport and reveal its approved paragraph with a native disclosure. */
  .inner-page .ip-mobile-index-screen .ip-index-entry {
    display: flex; flex: 1 0 auto; flex-direction: column; justify-content: center;
    min-width: 0; border-bottom: 1px solid var(--line-light);
  }
  .inner-page .ip-mobile-index-screen .ip-index-entry > summary {
    display: grid; grid-template-columns: 26px minmax(0,1fr) 20px;
    align-items: start; gap: 10px; min-height: 44px; padding: 10px 0;
    list-style: none; cursor: pointer;
  }
  .inner-page .ip-mobile-index-screen summary::-webkit-details-marker { display: none; }
  .inner-page .ip-mobile-index-screen summary::marker { content: ""; }
  .inner-page .ip-mobile-index-screen summary:focus-visible {
    outline: 2px solid currentColor; outline-offset: 3px;
  }
  .inner-page .ip-mobile-index-screen .ip-index-number {
    padding-top: 5px; color: #8a8277; font: 12px/1 var(--serif);
  }
  .inner-page .ip-mobile-index-screen .ip-index-title {
    display: block; min-width: 0; font: 400 clamp(21px,6.1vw,25px)/1.05 var(--serif);
    letter-spacing: -.036em;
  }
  .inner-page .ip-mobile-index-screen .ip-index-toggle {
    color: #8a8277; font: 20px/1 var(--sans); text-align: right;
    transition: transform .2s ease;
  }
  .inner-page .ip-mobile-index-screen .ip-index-entry[open] .ip-index-toggle {
    transform: rotate(45deg);
  }
  .inner-page .ip-mobile-index-screen .ip-index-entry > p {
    max-width: 530px; margin: 0 20px 16px 36px;
    color: #625b53; font-size: 13px; line-height: 1.5; font-weight: 300;
  }
}
