/* The ocean introduction is fully scoped. No downstream module or navigation rule. */
.hero.ocean-hero {
  --copy-opacity:1;
  --copy-y:0px;
  --copy-blur:0px;
  --network-opacity:1;
  position:relative;
  display:block;
  height:220svh;
  min-height:0;
  padding:0;
  margin:0;
  overflow:visible;
  background:transparent;
  isolation:isolate;
}
.hero.ocean-hero::before,.hero.ocean-hero::after { content:none; }
/* The next chapter enters the pinned water, rather than waiting below an empty stage.
   The Hero's opening viewport and its camera travel remain unchanged. */
.hero.ocean-hero.ocean-handoff-ready + .audience-strip {
  position:relative;
  z-index:2;
  margin-top:-100svh;
}
.hero.ocean-hero.ocean-handoff-ready ~ #services { position:relative;z-index:2; }
.hero.ocean-hero.ocean-handoff-ready + .audience-strip[data-ocean-handoff-target],
.hero.ocean-hero.ocean-handoff-ready ~ #services [data-ocean-handoff-target] {
  opacity:var(--ocean-reveal,1);
  transform:translate3d(0,var(--ocean-reveal-y,0px),0);
  clip-path:none;
  transition-property:color,background,border-color,box-shadow;
  transition-delay:0s;
  animation:none;
}
.hero.ocean-hero.ocean-handoff-ready ~ #services .section-heading::after {
  transform:scaleX(var(--ocean-rule,1));
  transition:none;
}
.ocean-hero .ocean-filter-definitions { position:absolute;width:0;height:0;pointer-events:none; }
.ocean-hero .ocean-stage {
  position:sticky;
  top:0;
  width:100%;
  height:100svh;
  min-height:600px;
  overflow:hidden;
  isolation:isolate;
  background:#14384b;
}
.ocean-hero .ocean-visual {
  position:absolute;
  inset:0;
  z-index:0;
  overflow:hidden;
  pointer-events:none;
}
.ocean-hero .ocean-visual *, .ocean-hero .ocean-network-layer,
.ocean-hero .ocean-network-layer * { pointer-events:none!important; }
.ocean-hero .ocean-fallback, .ocean-hero [data-ocean-canvas] {
  display:block;
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}
.ocean-hero [data-ocean-canvas] { opacity:0;transition:opacity 800ms ease; }
.ocean-hero.is-ocean-ready [data-ocean-canvas] { opacity:1; }
.ocean-hero .ocean-network-layer {
  position:absolute;
  inset:0;
  z-index:2;
  opacity:var(--network-opacity);
  direction:ltr;
  transform:translate3d(var(--network-x,0px),var(--network-y,0px),0);
  will-change:opacity;
}
.ocean-hero [data-ocean-network], .ocean-hero .ocean-city-labels {
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  overflow:visible;
}
.ocean-hero .ocean-city {
  position:absolute;
  left:var(--city-x);
  top:var(--city-y);
  display:flex;
  align-items:center;
  white-space:nowrap;
  gap:10px;
  color:#fff4dc;
  font:400 clamp(10px,1.02vw,16px)/1.4 Arial,'Microsoft YaHei',Tahoma,sans-serif;
  letter-spacing:0;
  text-shadow:0 1px 7px #0b294c,0 2px 18px #173145;
  translate:0 -50%;
}
.ocean-hero .ocean-city[dir=rtl] { flex-direction:row-reverse;font-family:Tahoma,Arial,sans-serif; }
.ocean-hero .ocean-city-dot {
  position:absolute;
  left:0;
  top:50%;
  width:5px;
  height:5px;
  translate:-50% -50%;
  border-radius:50%;
  background:#ffdea1;
  box-shadow:0 0 7px 2px #eec87b90,0 0 23px 4px #edbd5455;
  transition:box-shadow 650ms ease,background 650ms ease;
}
.ocean-hero .ocean-city-label { display:block;margin-left:12px; }
.ocean-hero .ocean-city-core .ocean-city-dot { width:7px;height:7px; }
.ocean-hero [data-ocean-city="new-york"] .ocean-city-label { transform:translateX(calc(-100% - 24px)); }
.hero.ocean-hero.ocean-image-only { height:100svh;min-height:650px; }
.ocean-image-only .ocean-stage { position:relative; }
.ocean-hero .ocean-city.is-near .ocean-city-dot {
  background:#fff7df;
  box-shadow:0 0 10px 4px #edce8baa,0 0 30px 9px #edbd5455;
}
.ocean-hero .ocean-city.is-near { color:#fff; }
.ocean-hero .ocean-copy {
  position:absolute;
  z-index:3;
  left:var(--page);
  top:clamp(112px,16.2svh,190px);
  width:calc(100% - 2 * var(--page));
  max-width:1040px;
  margin:0;
  opacity:var(--copy-opacity);
  filter:var(--copy-filter,blur(var(--copy-blur)));
  transform:translate3d(0,var(--copy-y),0);
  color:#f8f5eb;
  text-shadow:0 2px 25px #102b3b45;
  pointer-events:none;
}
.ocean-hero .ocean-copy .ocean-actions { pointer-events:auto; }
.ocean-hero .ocean-title {
  display:block;
  font-family:'Helvetica Neue','Segoe UI Light','Segoe UI',Arial,sans-serif;
  font-size:clamp(46px,4.9vw,85px);
  font-weight:300;
  letter-spacing:.045em;
  line-height:1.12;
  margin:0;
  padding:0;
  max-width:950px;
  color:#f8f5ef;
  text-wrap:balance;
}
.ocean-hero .ocean-title em {
  font:inherit;
  color:#efd08b;
  display:inline;
}
.ocean-hero-en .ocean-title { font-size:clamp(44px,4.35vw,77px);letter-spacing:.055em;max-width:940px; }
.ocean-hero-en .ocean-title-start,.ocean-hero-en .ocean-title em { display:block; }
.ocean-hero-en .ocean-title em { margin-top:.09em; }
.ocean-hero-zh .ocean-title {
  font-family:'Microsoft YaHei Light','Noto Sans CJK SC','PingFang SC','Microsoft YaHei UI','Microsoft YaHei',sans-serif;
  font-size:clamp(48px,4.65vw,82px);
  font-weight:300;
  letter-spacing:.095em;
  white-space:nowrap;
  max-width:none;
}
.ocean-hero .ocean-subtitle {
  font-family:'Helvetica Neue','Segoe UI Light','Segoe UI',Arial,sans-serif;
  font-size:clamp(17px,1.7vw,29px);
  letter-spacing:.2em;
  font-weight:300;
  line-height:1.6;
  margin:17px 0 0;
  color:#f1f3f3;
}
.ocean-hero .ocean-lead {
  font-size:clamp(18px,1.45vw,25px);
  font-weight:400;
  line-height:1.65;
  letter-spacing:.035em;
  margin:clamp(30px,4.5svh,56px) 0 8px;
  max-width:660px;
  color:#f5f2e9;
}
.ocean-hero .ocean-body {
  font-size:clamp(14px,1.1vw,18px);
  font-weight:400;
  line-height:1.85;
  letter-spacing:.01em;
  margin:0;
  max-width:630px;
  color:#eceef0;
}
.ocean-hero .ocean-actions {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:18px;
  margin-top:clamp(25px,3.7svh,43px);
}
.ocean-hero .ocean-actions .ocean-cta {
  min-width:164px;
  min-height:53px;
  padding:14px 23px;
  background:#16324814;
  border:1px solid #eee9dc85;
  color:#f7f5ee;
  font-size:14px;
  letter-spacing:.02em;
  box-shadow:inset 0 0 0 1px #ffffff05,0 5px 25px #09223708;
  backdrop-filter:blur(3px);
  transition:background 500ms ease,border-color 500ms ease,color 500ms ease,box-shadow 500ms ease;
}
.ocean-hero .ocean-actions .ocean-cta:hover,
.ocean-hero .ocean-actions .ocean-cta:focus-visible {
  background:#e9e7d910;
  border-color:#f5da9f;
  color:#fff7e2;
  box-shadow:inset 0 0 22px #ecd8a10a,0 6px 26px #09223710;
}
.ocean-hero-ar .ocean-copy { text-align:right;max-width:660px; }
.ocean-hero-ar .ocean-copy::before { content:'';position:absolute;inset:-35px -45px;z-index:-1;background:radial-gradient(ellipse,#102a43a1,transparent 72%);filter:blur(26px);pointer-events:none; }
.ocean-hero-ar .ocean-title {
  font-family:'Segoe UI',Tahoma,Arial,sans-serif;
  font-size:clamp(43px,4vw,64px);
  font-weight:300;
  letter-spacing:0;
  line-height:1.5;
  max-width:800px;
}
.ocean-hero-ar .ocean-title-start,.ocean-hero-ar .ocean-title em { display:block; }
.ocean-hero-ar .ocean-lead,.ocean-hero-ar .ocean-body { margin-inline-start:0;max-width:700px;letter-spacing:0; }
.ocean-hero-ar .ocean-lead { margin-top:23px; }
.ocean-hero-ar .ocean-body { line-height:1.95; }
.ocean-hero-ar .ocean-actions { justify-content:flex-start;max-width:700px; }
@media (min-width:1700px) {
  .ocean-hero .ocean-copy { top:17svh; }
}
@media (max-width:1100px) {
  .ocean-hero .ocean-copy { top:clamp(103px,14svh,160px);max-width:820px; }
  .ocean-hero-zh .ocean-title { font-size:clamp(40px,5.2vw,63px);letter-spacing:.065em; }
  .ocean-hero .ocean-lead { max-width:570px; }
  .ocean-hero .ocean-body { max-width:510px;font-size:14px; }
  .ocean-hero .ocean-city { font-size:10px;gap:7px; }
  .ocean-hero .ocean-city-label { margin-left:9px; }
  .ocean-hero-ar .ocean-copy { max-width:600px; }
  .ocean-hero-ar .ocean-title { font-size:52px;max-width:600px; }
}
@media (max-width:760px) {
  .hero.ocean-hero { height:190svh;display:block;min-height:0;padding:0; }
  .hero.ocean-hero.ocean-handoff-ready + .audience-strip { margin-top:-85svh; }
  .ocean-hero .ocean-stage { height:100svh;min-height:650px; }
  .ocean-hero .ocean-copy { top:clamp(96px,13svh,125px);left:var(--page);width:calc(100% - 2 * var(--page));max-width:none; }
  .ocean-hero .ocean-title { font-size:clamp(35px,8.5vw,58px);line-height:1.2;letter-spacing:.035em;max-width:95%; }
  .ocean-hero-zh .ocean-title { font-size:clamp(35px,8.5vw,59px);letter-spacing:.065em;white-space:normal;line-height:1.4; }
  .ocean-hero-zh .ocean-title-start { display:block; }
  .ocean-hero-zh .ocean-title-end { display:inline; }
  .ocean-hero .ocean-subtitle { font-size:clamp(11px,2.65vw,16px);letter-spacing:.16em;margin-top:9px; }
  .ocean-hero .ocean-lead { font-size:clamp(16px,3.7vw,20px);line-height:1.7;margin-top:28px;letter-spacing:0;max-width:95%; }
  .ocean-hero .ocean-body { font-size:13px;line-height:1.9;max-width:96%; }
  .ocean-hero .ocean-body br { display:none; }
  .ocean-hero .ocean-actions { gap:12px;margin-top:23px; }
  .ocean-hero .ocean-actions .ocean-cta { min-width:0;min-height:46px;padding:12px 15px;font-size:12px;gap:17px; }
  .ocean-hero .ocean-actions .ocean-cta span { font-size:17px; }
  .ocean-hero .ocean-network-layer { top:60%;height:13%;inset-inline:1%;width:98%; }
  .ocean-hero .ocean-copy::before { content:'';position:absolute;inset:-20px -30px;z-index:-1;background:radial-gradient(ellipse,#10223a90,transparent 78%);filter:blur(18px);pointer-events:none; }
  .ocean-hero .ocean-city { left:var(--city-mobile-x);top:var(--city-mobile-y);font-size:10px; }
  .ocean-hero .ocean-city-label { margin-left:7px; }
  .ocean-hero .ocean-city-dot { width:3px;height:3px; }
  .ocean-hero .ocean-city-core .ocean-city-dot { width:4px;height:4px; }
  .ocean-hero-ar .ocean-copy { text-align:right; }
  .ocean-hero-ar .ocean-title { font-size:clamp(34px,8.8vw,54px);line-height:1.6;letter-spacing:0;max-width:100%; }
  .ocean-hero-ar .ocean-lead { margin-top:16px; }
  .ocean-hero-ar .ocean-body { font-size:13px;line-height:1.85; }
  .ocean-hero-ar .ocean-actions { margin-top:18px; }
}
@media (max-width:390px) {
  .ocean-hero .ocean-copy { top:95px; }
  .ocean-hero .ocean-title { font-size:33px; }
  .ocean-hero .ocean-body { font-size:12px; }
  .ocean-hero .ocean-lead { font-size:15px;margin-top:22px; }
  .ocean-hero .ocean-city { font-size:10px; }
}
@media (prefers-reduced-motion:reduce) {
  .ocean-hero [data-ocean-canvas], .ocean-hero .ocean-city,
  .ocean-hero .ocean-city-dot, .ocean-hero .ocean-actions .ocean-cta { transition:none; }
  .ocean-hero .ocean-copy { filter:none; }
  .hero.ocean-hero.ocean-handoff-ready + .audience-strip[data-ocean-handoff-target],
  .hero.ocean-hero.ocean-handoff-ready ~ #services [data-ocean-handoff-target] { opacity:1;transform:none; }
  .hero.ocean-hero.ocean-handoff-ready ~ #services .section-heading::after { transform:none; }
}
