/* The words remain in document flow. Only the ocean behind them holds the viewport. */

/* Barlow Condensed used to arrive with the panel stylesheet. The panels are gone; the face stays. */
@font-face {
  font-family: 'Barlow Condensed';
  src: url('/fonts/barlow-condensed-600.woff2') format('woff2');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

/* Each scene has one light, the lure. Registering these lets the light travel
   between chapters instead of jumping when the current chapter changes. */
@property --cast-x { syntax: '<percentage>'; inherits: true; initial-value: 50%; }
@property --cast-y { syntax: '<percentage>'; inherits: true; initial-value: 50%; }
@property --cast-depth { syntax: '<number>'; inherits: true; initial-value: 0.82; }
body:has(.ocean-approach) {
  background: #070d0e;
}
body:has(.ocean-approach) > .lure-stage {
  display: none;
}
body:has(.ocean-approach) .site-header {
  background: linear-gradient(180deg, rgb(7 13 14 / 0.86), rgb(7 13 14 / 0.28));
  border-bottom-color: rgb(227 218 196 / 0.17);
}
.ocean-approach {
  --ocean-ink: #f2eee3;
  --ocean-soft: #c5d9da;
  --ocean-gutter: clamp(24px, 7.5vw, 144px);
  /* Where the light sits in the current scene, how dark the far water gets,
     and which side of the type the warm edge falls on. */
  --cast-x: 50%;
  --cast-y: 50%;
  --cast-depth: 0.82;
  --cast-warm: 96 58 20;
  --rim: 1;
  --ocean-halo: 0 0 1px #010c12, 0 0 2px #010c12, 0 1px 2px #010c12, 0 0 4px rgb(1 12 18 / 0.92);
  position: relative;
  display: flow-root;
  isolation: isolate;
  color: var(--ocean-ink);
  background: #070d0e;
}
.ocean-stage {
  display: none;
  position: sticky;
  top: 0;
  height: 100svh;
  margin-bottom: -100svh;
  overflow: clip;
  pointer-events: none;
  z-index: -1;
  background: #070d0e;
}
.ocean-approach[data-ocean-ready='true'] .ocean-stage {
  display: block;
}
.ocean-layer,
.ocean-camera,
.ocean-transit,
.ocean-transit video,
.ocean-water,
.ocean-particles {
  position: absolute;
  inset: 0;
}
.ocean-layer {
  opacity: 0;
  overflow: hidden;
}
.ocean-layer:first-child {
  opacity: 1;
}
.ocean-camera {
  transform-origin: 62% 50%;
  will-change: transform;
}
.ocean-camera img,
.ocean-camera video,
.ocean-transit video,
.ocean-chapter-poster img {
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ocean-camera video,
.ocean-transit video {
  opacity: 0;
}
.ocean-camera video[data-ready='true'] {
  opacity: 1;
}
.ocean-layer--purpose img,
.ocean-layer--purpose video,
.ocean-purpose .ocean-chapter-poster img {
  object-position: right center;
}
.ocean-transit {
  z-index: 2;
}
.ocean-water {
  z-index: 3;
  background: linear-gradient(180deg, rgb(5 12 13 / 0.12), transparent 12%, transparent 87%, rgb(5 12 13 / 0.24));
}
.ocean-particles {
  z-index: 4;
  inset: -10%;
  background-repeat: repeat;
  pointer-events: none;
}
.ocean-particles--near {
  opacity: 0.2;
  background-image: radial-gradient(circle at 14% 12%, #eee6c3 0 1px, transparent 2px), radial-gradient(circle at 71% 26%, #becdc8 0 1px, transparent 2px), radial-gradient(circle at 33% 80%, #ddd3b8 0 1px, transparent 2px), radial-gradient(circle at 85% 59%, #d8ded3 0 1px, transparent 2px);
  background-size: 537px 491px;
}
/* The darkening is cast by the lure rather than drawn around the words.
   A falloff has no edge, so there is no panel to see. */
.ocean-cast {
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
  transition: --cast-x 620ms ease, --cast-y 620ms ease, --cast-depth 620ms ease;
  background:
    /* warm air close to the lure */
    radial-gradient(62% 70% at var(--cast-x) var(--cast-y), rgb(var(--cast-warm) / 0.2) 0%, rgb(4 14 19 / 0) 46%),
    /* the shadow the reading sits in. Deep enough that the worst pixel the footage
       ever reaches under a letter stays at or under rgb(111,111,111), which is what
       4.5:1 against the reading colour needs. Measured, not guessed: tools/qa. */
    var(--shade, none),
    /* the long falloff away from the light */
    radial-gradient(118% 128% at var(--cast-x) var(--cast-y), rgb(4 14 19 / 0) 12%, rgb(4 14 19 / 0.3) 38%, rgb(4 14 19 / var(--cast-depth)) 78%);
}
/* The near snow rides above the reading so the water passes in front of the words. */
.ocean-foreground {
  display: none;
  position: sticky;
  top: 0;
  height: 100svh;
  margin-bottom: -100svh;
  z-index: 4;
  overflow: clip;
  pointer-events: none;
}
.ocean-approach[data-ocean-ready='true'] .ocean-foreground {
  display: block;
}
.ocean-particles--far {
  opacity: 0.19;
  background-image: radial-gradient(circle at 24% 38%, #b7c6c3 0 1px, transparent 1.5px), radial-gradient(circle at 69% 70%, #b7c6c3 0 1px, transparent 1.5px);
  background-size: 239px 337px;
}
html.motion-ready:not(.motion-paused) .ocean-approach[data-ocean-ready='true'] .ocean-particles--near {
  animation: ocean-drift-near 24s ease-in-out infinite alternate;
}
html.motion-ready:not(.motion-paused) .ocean-approach[data-ocean-ready='true'] .ocean-particles--far {
  animation: ocean-drift-far 34s ease-in-out infinite alternate;
}
.ocean-approach[data-ocean-visible='false'] .ocean-particles {
  animation-play-state: paused !important;
}
@keyframes ocean-drift-near {
  to { transform: translate3d(-2.5%, -3.5%, 0); }
}
@keyframes ocean-drift-far {
  to { transform: translate3d(1.5%, -1.5%, 0); }
}
@media screen and (prefers-reduced-motion: no-preference) {
  .ocean-approach[data-ocean-arrival='true'] .ocean-stage,
  .ocean-approach[data-ocean-arrival='true'] [data-ocean-reading] > .ocean-copy {
    animation: ocean-arrival 400ms ease-out both;
  }
}
@keyframes ocean-arrival {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* A small sounding line stays beside the journey, then leaves with it. */
.ocean-nav {
  position: sticky;
  top: calc(50svh - 130px);
  z-index: 5;
  width: 168px;
  height: 260px;
  margin: 0 26px -260px auto;
}
.ocean-nav ul {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 11px 0;
  list-style: none;
}
.ocean-nav::before {
  content: '';
  position: absolute;
  z-index: -1;
  inset: -32px -26px -32px -24px;
  background: rgb(5 12 13 / 0.85);
  filter: blur(24px);
  pointer-events: none;
}
.ocean-nav a {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 42px;
  padding: 6px 0;
  color: #c6cdc8;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.25;
  text-decoration: none;
}
.ocean-nav-tick {
  width: 13px;
  height: 1px;
  flex: 0 0 13px;
  background: #879490;
  transform-origin: right;
  transition: transform 180ms ease-out, background-color 180ms ease-out;
}
.ocean-nav a[aria-current='location'],
.ocean-nav a:hover {
  color: var(--ocean-ink);
}
.ocean-nav a[aria-current='location'] .ocean-nav-tick {
  background: #e4ac5c;
  transform: scaleX(1.6);
}
.ocean-nav a:focus-visible {
  outline-offset: 5px;
}
.ocean-nav a:active {
  color: #e4ac5c;
}

/* Measured from the clips themselves: the brightest point each scene reaches, and
   the camera aim that settles the subject clear of that chapter's reading block.
   Method and numbers are in docs/research/2026-09-16-approach-text/one-light/. */
.ocean-approach {
  /* reading on the left, light to the right of it */
  --shade-left: linear-gradient(90deg,
    rgb(3 11 16 / 0.44) 0%, rgb(3 11 16 / 0.42) 36%, rgb(3 11 16 / 0.32) 48%,
    rgb(3 11 16 / 0.12) 61%, rgb(3 11 16 / 0) 73%);
  /* reading on the right, light to the left of it */
  --shade-right: linear-gradient(270deg,
    rgb(3 11 16 / 0.44) 0%, rgb(3 11 16 / 0.42) 32%, rgb(3 11 16 / 0.32) 44%,
    rgb(3 11 16 / 0.12) 58%, rgb(3 11 16 / 0) 70%);
  /* reading on the left in two columns, reaching further toward the light */
  --shade-wide: linear-gradient(90deg,
    rgb(3 11 16 / 0.52) 0%, rgb(3 11 16 / 0.5) 44%, rgb(3 11 16 / 0.42) 58%,
    rgb(3 11 16 / 0.16) 72%, rgb(3 11 16 / 0) 82%);
  /* reading in the middle, as it is inside the jaws */
  --shade-middle: radial-gradient(64% 58% at 50% 50%,
    rgb(3 11 16 / 0.42) 0%, rgb(3 11 16 / 0.36) 54%, rgb(3 11 16 / 0) 84%);
}
.ocean-encounter,  .ocean-approach[data-ocean-current='encounter']  { --cast-x: 48%; --cast-y: 52%; --cast-depth: 0.78; --rim: 1; --shade: var(--shade-left); }
.ocean-mission,    .ocean-approach[data-ocean-current='mission']    { --cast-x: 33%; --cast-y: 92%; --cast-depth: 0.70; --rim: -1; --shade: var(--shade-middle); }
.ocean-principles, .ocean-approach[data-ocean-current='principles'] { --cast-x: 68%; --cast-y: 48%; --cast-depth: 0.86; --rim: 1; --shade: var(--shade-wide); }
.ocean-guardrail,  .ocean-approach[data-ocean-current='guardrail']  { --cast-x: 78%; --cast-y: 53%; --cast-depth: 0.84; --rim: 1; --shade: var(--shade-left); }
.ocean-goals,      .ocean-approach[data-ocean-current='goals']      { --cast-x: 59%; --cast-y: 36%; --cast-depth: 0.88; --rim: -1; --shade: var(--shade-right); }
.ocean-purpose,    .ocean-approach[data-ocean-current='purpose']    { --cast-x: 58%; --cast-y: 19%; --cast-depth: 0.92; --rim: 1; --shade: var(--shade-left); }

.ocean-layer--encounter .ocean-camera  { transform-origin: 40% 55%; }
.ocean-layer--mission .ocean-camera    { transform-origin: 50% 50%; }
.ocean-layer--principles .ocean-camera { transform-origin: 22% 50%; }
.ocean-layer--guardrail .ocean-camera  { transform-origin: 22% 70%; }
.ocean-layer--goals .ocean-camera      { transform-origin: 74% 66%; }
.ocean-layer--purpose .ocean-camera    { transform-origin: 22% 34%; }

.ocean-chapter {
  position: relative;
  display: grid;
  overflow-x: clip;
  align-content: start;
  padding: 12svh max(220px, 15vw) 12svh var(--ocean-gutter);
  scroll-margin-top: 40px;
}
.ocean-chapter-poster {
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: clip;
}
.ocean-chapter-poster picture {
  display: block;
  height: 100%;
}
.ocean-chapter-poster img {
  position: sticky;
  top: 0;
  height: 100svh;
}
/* With scripts off the sticky stage never appears, so each chapter's own still
   carries a simpler version of the same falloff. */
.ocean-chapter-poster::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    var(--shade, none),
    radial-gradient(90% 58% at var(--cast-x) 50%, rgb(4 14 19 / 0) 6%, rgb(4 14 19 / 0.3) 40%, rgb(4 14 19 / var(--cast-depth)) 82%),
    linear-gradient(180deg, #070d0e, transparent 12%, transparent 88%, #070d0e);
}
.ocean-approach[data-ocean-ready='true'] .ocean-chapter-poster {
  display: none;
}
.ocean-reading {
  position: relative;
  display: grid;
  align-content: center;
  min-width: 0;
  min-height: 100svh;
  width: 100%;
  max-width: 620px;
  padding-block: clamp(88px, 11svh, 128px);
}
.ocean-copy {
  position: relative;
  grid-area: 1 / 1;
  min-width: 0;
  z-index: 1;
}
/* Every word carries its own halo. WebAIM measures a halo the same way it measures a
   background, which is what lets the reading panels go without losing contrast. */
.ocean-approach :is(h1, h2, h3, h4, p, li) {
  text-shadow: var(--ocean-halo);
}
.ocean-nav :is(a, li, span),
.ocean-approach .button-primary {
  text-shadow: none;
}
/* Chapter titles take a warm edge on the side facing the lure. */
.ocean-title,
.ocean-heading,
.ocean-subheading {
  text-shadow: var(--ocean-halo), calc(var(--rim) * 4px) 0 10px rgb(var(--cast-warm) / 0.3);
}
/* The words sink while the camera travels, then land when it lands. Movement only:
   fading them would drop the reading contrast for the two or three seconds a chapter
   passage lasts, and 1.4.3 applies to text while it is on screen, not only at rest. */
.ocean-copy > * {
  transition: translate 660ms cubic-bezier(0.2, 0.7, 0.3, 1);
}
html.motion-ready:not(.motion-paused)
  .ocean-approach[data-ocean-ready='true'][data-ocean-transit]:not([data-ocean-transit='']) .ocean-copy > * {
  translate: 0 22px;
}
.ocean-eyebrow {
  margin: 0 0 20px;
  color: #e0d8c3;
  font-size: 1rem;
  font-weight: 500;
}
.ocean-title {
  margin: 0 0 25px -0.035em;
  font-family: var(--font-display);
  font-size: clamp(5rem, 11.7vw, 11.5rem);
  font-weight: 850;
  font-stretch: 77%;
  font-style: italic;
  line-height: 0.88;
  letter-spacing: -0.045em;
}
.ocean-lede {
  max-width: 490px;
  margin: 0;
  color: #d4d5cf;
  font-size: clamp(1.125rem, 1.5vw, 1.375rem);
  line-height: 1.55;
  text-wrap: pretty;
}
/* What the panels used to hold. It groups the copy and draws nothing. */
.ocean-passage {
  display: block;
}
/* Chapter titles and their copy now share one left edge, with the lure's colour
   marking the start of each chapter. */
.ocean-heading,
.ocean-subheading {
  position: relative;
  margin: 0 0 25px;
  padding-top: 26px;
  color: #f5f1e5;
  font-family: 'Barlow Condensed', Archivo, sans-serif;
  font-size: clamp(3.75rem, 5.4vw, 5.25rem);
  font-weight: 600;
  font-stretch: normal;
  letter-spacing: -0.02em;
  line-height: 0.98;
  text-wrap: balance;
}
.ocean-heading::before,
.ocean-subheading::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 64px;
  height: 2px;
  background: #e5bd7d;
  box-shadow: 0 0 16px rgb(224 180 108 / 0.4);
}
/* The guardrail is a rule about the other six, so its mark runs longer. */
.ocean-guardrail .ocean-subheading::before {
  width: 132px;
}
.ocean-body,
.ocean-purpose-copy {
  margin: 0;
  max-width: 53ch;
  color: var(--ocean-soft);
  font-size: 1.1875rem;
  line-height: 1.62;
  text-wrap: pretty;
}
.ocean-body + .ocean-body {
  margin-top: 24px;
}
.ocean-statement {
  display: block;
  color: #f4f0e3;
  font-size: clamp(1.3125rem, 1.7vw, 1.625rem);
  font-weight: 440;
  line-height: 1.48;
  letter-spacing: -0.018em;
  text-wrap: pretty;
}
.ocean-support {
  display: block;
  max-width: 59ch;
  margin-top: 27px;
  padding-top: 24px;
  border-top: 1px solid rgb(168 208 211 / 0.24);
}
.ocean-encounter {
  align-content: end;
  min-height: 106svh;
  padding-top: 150px;
  padding-bottom: max(80px, 13svh);
}
.ocean-opening {
  min-height: 0;
  max-width: 720px;
  padding: 0;
}
.ocean-mission {
  gap: 0;
}
/* The extra row extends the passage without moving the opening's reading position. */
@media screen {
  .ocean-approach[data-ocean-cinematic='true'] .ocean-encounter {
    min-height: 136svh;
  }
  .ocean-approach[data-ocean-cinematic='true'] .ocean-encounter::after {
    content: '';
    height: 30svh;
  }
}
/* Every chapter is one composition that fits a single screen: 696px of copy at 1440 by 900,
   which is what ocean-reading-stops.ts needs before it treats a passage as one stop rather
   than a range to scroll through. Denser chapters use columns instead of more stops. */

/* Mission and Vision side by side in the dark centre of the ring of teeth. */
.ocean-mission-copy {
  max-width: 980px;
  justify-self: center;
}
.ocean-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  align-items: start;
}
.ocean-pair .ocean-heading {
  font-size: clamp(3.25rem, 4.4vw, 4.25rem);
  margin-bottom: 20px;
}
.ocean-pair .ocean-statement {
  font-size: clamp(1.1875rem, 1.45vw, 1.3125rem);
}
.ocean-pair .ocean-body {
  font-size: 1.0625rem;
}
.ocean-pair .ocean-support {
  margin-top: 18px;
  padding-top: 16px;
}

.ocean-principles {
  gap: 0;
}
/* Founding: the opening sentence across the column, the other two paragraphs side by side. */
.ocean-origin {
  max-width: 720px;
}
.ocean-founding-lead {
  margin: 0;
  color: #f4f0e3;
  font-size: clamp(1.25rem, 1.5vw, 1.375rem);
  font-weight: 440;
  line-height: 1.44;
  letter-spacing: -0.016em;
  text-wrap: pretty;
}
.ocean-founding-support {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 36px;
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid rgb(168 208 211 / 0.24);
}
.ocean-founding-support .ocean-body {
  font-size: 1rem;
  line-height: 1.58;
}
.ocean-founding-support .ocean-body + .ocean-body {
  margin-top: 0;
}

/* The six principles in two columns of three. The fish hold the right of this scene
   for its whole loop, so the field stays in the left half. */
.ocean-principle-field {
  max-width: 780px;
  scroll-margin-top: 70px;
}
.ocean-principle-field .ocean-subheading {
  font-size: clamp(3.25rem, 4.4vw, 4.25rem);
  margin-bottom: 22px;
}
.ocean-principle-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px 40px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.ocean-principle-list li {
  padding-top: 16px;
  border-top: 1px solid rgb(168 208 211 / 0.24);
}
.ocean-principle-title {
  margin: 0 0 7px;
  color: #e7c890;
  font-size: 1.0625rem;
  font-weight: 560;
  line-height: 1.25;
  letter-spacing: -0.01em;
  text-wrap: balance;
}
.ocean-principle-copy {
  margin: 0;
  color: var(--ocean-soft);
  font-size: 0.96875rem;
  line-height: 1.55;
  text-wrap: pretty;
}

.ocean-guardrail-copy {
  max-width: 700px;
}
.ocean-guardrail .ocean-subheading {
  color: #f5f1e5;
  font-size: clamp(4rem, 5.8vw, 5.75rem);
}
.ocean-guardrail-statement {
  margin: 0;
  color: #f4f0e3;
  font-size: clamp(1.5625rem, 2.3vw, 2.25rem);
  font-weight: 440;
  line-height: 1.32;
  letter-spacing: -0.018em;
  text-wrap: pretty;
}

/* The three goals in one column, right of the lure, divided by hairlines. */
.ocean-goals-copy {
  max-width: 600px;
  justify-self: end;
}
.ocean-goal-list {
  display: grid;
  gap: 18px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.ocean-goal-list li + li {
  padding-top: 18px;
  border-top: 1px solid rgb(168 208 211 / 0.24);
}
.ocean-goal-copy {
  margin: 0;
  color: #f4f0e3;
  font-size: clamp(1.0625rem, 1.3vw, 1.1875rem);
  font-weight: 440;
  line-height: 1.52;
  letter-spacing: -0.01em;
  text-wrap: pretty;
}

.ocean-purpose-content {
  max-width: 700px;
}
.ocean-purpose .ocean-heading {
  max-width: none;
  font-size: clamp(3.5rem, 4.8vw, 4.5rem);
  margin-bottom: 20px;
}
.ocean-purpose .ocean-statement {
  font-size: clamp(1.1875rem, 1.45vw, 1.3125rem);
}
.ocean-purpose .ocean-purpose-copy {
  max-width: none;
  font-size: 1rem;
  line-height: 1.58;
}
.ocean-purpose .ocean-support {
  max-width: none;
  margin-top: 16px;
  padding-top: 14px;
}
.ocean-purpose-resolution {
  display: block;
  margin-top: 14px;
  color: #e7c890;
  font-size: 1.0625rem;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: -0.01em;
}
.ocean-contact-area {
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid rgb(168 208 211 / 0.24);
}
.ocean-contact {
  min-height: 50px;
  padding-inline: 24px;
}
/* Narrower frames give the reading a larger share of the picture, so the shadow
   has to reach further across before it clears the subject. */
@media (max-width: 1360px) {
  .ocean-approach {
    --shade-left: linear-gradient(90deg,
      rgb(3 11 16 / 0.5) 0%, rgb(3 11 16 / 0.48) 48%, rgb(3 11 16 / 0.36) 62%,
      rgb(3 11 16 / 0.14) 76%, rgb(3 11 16 / 0) 88%);
    --shade-right: linear-gradient(270deg,
      rgb(3 11 16 / 0.5) 0%, rgb(3 11 16 / 0.48) 44%, rgb(3 11 16 / 0.36) 58%,
      rgb(3 11 16 / 0.14) 72%, rgb(3 11 16 / 0) 86%);
    --shade-wide: linear-gradient(90deg,
      rgb(3 11 16 / 0.6) 0%, rgb(3 11 16 / 0.58) 52%, rgb(3 11 16 / 0.48) 66%,
      rgb(3 11 16 / 0.18) 80%, rgb(3 11 16 / 0) 92%);
    --shade-middle: radial-gradient(78% 62% at 50% 50%,
      rgb(3 11 16 / 0.48) 0%, rgb(3 11 16 / 0.41) 58%, rgb(3 11 16 / 0) 92%);
  }
}
/* A phone reads one full-width column, so the shadow is a band down the screen
   with nothing to see at its sides. */
@media screen and (max-width: 700px) {
  .ocean-approach {
    --shade-band: linear-gradient(180deg,
      rgb(3 11 16 / 0) 0%, rgb(3 11 16 / 0.56) 7%, rgb(3 11 16 / 0.58) 93%, rgb(3 11 16 / 0) 100%);
    --shade-left: var(--shade-band);
    --shade-right: var(--shade-band);
    --shade-middle: var(--shade-band);
    --shade-wide: var(--shade-band);
  }
}
@media (min-width: 1700px) {
  .ocean-chapter { padding-right: 18vw; }
}
@media (max-width: 1099px) {
  .ocean-nav {
    top: 0;
    width: 100%;
    height: 54px;
    margin: 0 0 -54px;
    overflow-x: auto;
    scrollbar-width: thin;
    scrollbar-color: #6b7771 transparent;
    background: rgb(7 13 14 / 0.94);
  }
  .ocean-nav::before { display: none; }
  .ocean-nav ul {
    display: flex;
    gap: 26px;
    width: max-content;
    padding: 0 24px;
  }
  .ocean-nav a {
    min-height: 54px;
    padding: 0;
    font-size: 0.8125rem;
    white-space: nowrap;
  }
  .ocean-nav-tick { display: none; }
  .ocean-nav a[aria-current='location'] {
    box-shadow: inset 0 -2px #e4ac5c;
  }
  .ocean-chapter {
    padding-inline: var(--ocean-gutter);
    scroll-margin-top: 70px;
  }
  .ocean-encounter { padding-top: 180px; }
  .ocean-opening { max-width: 650px; }
}
/* Below this the columns are too narrow to read, so each composition becomes one column.
   A chapter may then run taller than the screen, and the reading stops treat it as one
   continuous passage rather than several stops. */
@media (max-width: 900px) {
  .ocean-pair,
  .ocean-founding-support,
  .ocean-principle-list { grid-template-columns: 1fr; }
  .ocean-pair { gap: 44px; }
  .ocean-mission-copy, .ocean-goals-copy { justify-self: stretch; }
}
@media screen and (max-width: 700px) {
  .ocean-approach { --ocean-gutter: 20px; }
  .ocean-title { font-size: clamp(4.2rem, 20vw, 8rem); }
  .ocean-heading,
  .ocean-subheading,
  .ocean-pair .ocean-heading,
  .ocean-principle-field .ocean-subheading { padding-top: 22px; font-size: clamp(3rem, 14vw, 3.75rem); margin-bottom: 20px; }
  .ocean-eyebrow { margin-bottom: 15px; font-size: 0.9375rem; }
  .ocean-lede { max-width: 380px; font-size: 1.0625rem; line-height: 1.55; }
  .ocean-body, .ocean-purpose-copy { max-width: none; font-size: 1.0625rem; line-height: 1.6; }
  .ocean-statement { font-size: 1.1875rem; line-height: 1.48; }
  .ocean-support { margin-top: 22px; padding-top: 20px; }
  .ocean-chapter { padding-block: 12svh; }
  .ocean-guardrail-copy, .ocean-goals-copy, .ocean-purpose-content { align-content: center; }
  .ocean-reading { padding-block: 88px; }
  .ocean-encounter { min-height: calc(100svh - 178px); align-content: start; padding-top: 100px; padding-bottom: 48px; padding-inline: 25px; }
  .ocean-approach[data-ocean-cinematic='true'] .ocean-encounter { min-height: calc(130svh - 178px); }
  .ocean-opening { padding: 0; }
  .ocean-founding-lead { font-size: 1.1875rem; line-height: 1.48; }
  .ocean-founding-support { grid-template-columns: 1fr; gap: 22px; margin-top: 22px; padding-top: 20px; }
  .ocean-principle-list { gap: 20px; }
  .ocean-principle-field .ocean-subheading { font-size: clamp(3rem, 14.5vw, 3.75rem); }
  .ocean-principle-title { font-size: 1.125rem; line-height: 1.25; }
  .ocean-principle-copy { font-size: 1rem; line-height: 1.58; }
  .ocean-guardrail-statement { font-size: 1.5625rem; }
  .ocean-guardrail .ocean-subheading { font-size: clamp(3.25rem, 15.1vw, 3.6875rem); }
  .ocean-goal-copy { font-size: 1.0625rem; line-height: 1.55; }
  .ocean-purpose { padding-top: 38svh; padding-bottom: 12svh; }
  .ocean-purpose .ocean-heading { max-width: none; font-size: clamp(3.25rem, 15.1vw, 3.6875rem); }
  .ocean-purpose .ocean-statement { font-size: 1.1875rem; }
  .ocean-purpose-resolution { margin-top: 22px; font-size: 1.0625rem; }
  .ocean-contact-area { margin-top: 24px; padding-top: 22px; }
  .ocean-camera img, .ocean-camera video, .ocean-chapter-poster img, .ocean-purpose .ocean-chapter-poster img { object-position: center; }
  .ocean-layer--purpose img, .ocean-layer--purpose video, .ocean-purpose .ocean-chapter-poster img { object-fit: contain; object-position: center top; }
  .ocean-layer--purpose .ocean-camera,
  .ocean-purpose .ocean-chapter-poster img {
    mask-image: linear-gradient(to bottom, #000 110vw, transparent 175vw);
  }
}
@media (prefers-reduced-motion: reduce) {
  .ocean-camera { transform: none !important; }
  .ocean-particles, .ocean-transit, .ocean-foreground { display: none !important; }
  .ocean-approach * { animation: none !important; transition: none !important; }
  .ocean-copy > * { translate: none !important; }
}
@media (forced-colors: active) {
  .ocean-stage, .ocean-chapter-poster, .ocean-foreground, .ocean-nav::before { display: none !important; }
  .ocean-approach { color: CanvasText; background: Canvas; }
  .ocean-approach :is(p, h1, h2, h3, h4, li), .ocean-nav a, .ocean-statement, .ocean-purpose-resolution { color: CanvasText; text-shadow: none !important; }
  .ocean-copy > * { translate: none !important; }
  .ocean-nav { background: Canvas; }
  .ocean-nav a[aria-current='location'] { text-decoration: underline; }
  .ocean-principle-list li, .ocean-goal-list li, .ocean-support, .ocean-founding-support, .ocean-contact-area { border-color: CanvasText; }
}
@media print {
  .ocean-stage, .ocean-chapter-poster, .ocean-foreground, .ocean-nav { display: none !important; }
  .ocean-approach { color: #111; background: white; }
  .ocean-chapter { display: block; min-height: 0; padding: 20px 0; }
  .ocean-reading { display: block; min-height: 0; max-width: none; padding: 0; }
  .ocean-approach :is(p, h1, h2, h3, h4, li), .ocean-statement, .ocean-purpose-resolution { color: #111; text-shadow: none !important; }
  .ocean-copy > * { translate: none !important; }
  .ocean-title { font-size: 42pt; }
  .ocean-heading, .ocean-subheading, .ocean-purpose .ocean-heading, .ocean-guardrail .ocean-subheading, .ocean-principle-field .ocean-subheading { padding-top: 0; font-size: 28pt; }
  .ocean-heading::before, .ocean-subheading::before { display: none; }
  .ocean-principle-field { margin-top: 28px; }
  .ocean-pair, .ocean-founding-support, .ocean-principle-list { display: block; }
  .ocean-pair article + article, .ocean-principle-list li + li { margin-top: 20px; }
  .ocean-guardrail-statement { font-size: 24pt; }
  .ocean-principle-list { gap: 20px; }
  .ocean-goal-list { gap: 28px; }
  .ocean-founding-support { gap: 24px; }
  .ocean-statement { font-size: 18pt; margin-bottom: 16px; }
  .ocean-goal-copy { font-size: 16pt; }
  .ocean-contact-area { display: none; }
}
